声明:请事先到官网下载echarts,另外本文引用了adminlte模板构建前台页面
views:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
<!-- /.row -->
< div class = "row" >
< div class = "col-xs-12" >
<!-- interactive chart -->
< div class = "box box-primary" >
< div class = "box-header with-border" >
< i class = "fa fa-bar-chart-o" ></ i >
< h3 class = "box-title" >网络趋势</ h3 >
< div class = "box-tools pull-right" >
< button type = "button" class = "btn btn-box-tool" data-widget = "collapse" >< i class = "fa fa-minus" ></ i >
</ button >
< button type = "button" class = "btn btn-box-tool" data-widget = "remove" >< i class = "fa fa-times" ></ i ></ button >
</ div >
</ div >
< div class = "box-body" >
< div class = "row" >
< div class = "col-md-9" >
</ div >
< div class = "col-md-3" >
< form action = "" method = "post" id = "net_range" >
< div class = "box-tools" >
< div class = "form-group" >
< select onchange = "submitForm_net();" class = "form-control select2" style = "width: 100%;" name = "select_net" >
< span class = "glyphicon glyphicon-search form-control-feedback" ></ span >
< option selected = "selected" >{{ net_range_default }}</ option >
< option >0.5小时</ option >
< option >1小时</ option >
< option >1天 </ option >
< option >7天 </ option >
< option >30天 </ option >
</ select >
</ div >
<!-- /.form-group -->
</ div >
<!-- /.col -->
</ form >
</ div >
<!-- /.row -->
</ div >
< div class = "net" id = "net-grow-chart" style = "height: 300px;" ></ div >
</ div >
<!-- /.box-body-->
</ div >
<!-- /.box -->
</ div >
<!-- /.col -->
</ div >
<!-- /.row -->
|
选择框 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
/ / 表单提交
function submitForm_net(){
var form_net = document.getElementById( "net_range" );
form_net.submit();
}
ECAHRTS:
/ / #################### 【网络流量趋势】图形 ####################
var myChart_net_grow = echarts.init(document.getElementById( 'net-grow-chart' ));
option_net_grow = {
title: {
text: '网络流量' ,
subtext: ''
},
tooltip: {
trigger: 'axis' ,
axisPointer: {
type : 'cross'
}
},
legend: {
data:[ '接收流量(kbps)' , '发送流量(kbps)' ]
},
toolbox: {
show: true,
feature: {
saveAsImage: {}
}
},
xAxis: {
type : 'category' ,
boundaryGap: false,
zlevel: 1 ,
data: [{ % for i in netgrow_list % } '{{ i.chk_time | date:"m-d H:i:s" }}' ,{ % endfor % }]
},
yAxis: {
type : 'value' ,
axisLabel: {
formatter: '{value}'
},
axisPointer: {
snap: true
},
max : 100 ,
min : 0
},
series: [
{
name: '接收流量(kbps)' ,
type : 'line' ,
smooth: true,
data: [{ % for i in netgrow_list % }{{ i.recv_kbps }},{ % endfor % }]
},
{
name: '发送流量(kbps)' ,
type : 'line' ,
smooth: true,
data: [{ % for i in netgrow_list % }{{ i.send_kbps }},{ % endfor % }]
}
]
};
myChart_net_grow.showLoading(); / / 显示loading
setInterval(function () {
myChart_net_grow.hideLoading(); / / 显示完成后不显示loading
myChart_net_grow.setOption(option_net_grow, true);
}, 500 );
|
VIEWS:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
@login_required (login_url = '/login' )
def linux_monitor(request):
messageinfo_list = models.TabAlarmInfo.objects. all ()
tagsdefault = request.GET.get( 'tagsdefault' )
if not tagsdefault:
tagsdefault = models.TabLinuxServers.objects.order_by( 'tags' )[ 0 ].tags
cpu_range_defualt = request.GET.get( 'cpu_range_default' )
if not cpu_range_defualt:
cpu_range_defualt = '1小时' .decode( "utf-8" )
mem_range_default = request.GET.get( 'mem_range_default' )
if not mem_range_default:
mem_range_default = '1小时' .decode( "utf-8" )
net_range_default = request.GET.get( 'net_range_default' )
if not net_range_default:
net_range_default = '1小时' .decode( "utf-8" )
hostinfo = models.TabLinuxServers.objects. all ().order_by( 'tags' )
net_begin_time = tools. range (net_range_default)
cpu_begin_time = tools. range (cpu_range_defualt)
mem_begin_time = tools. range (mem_range_default)
end_time = datetime.datetime.now().strftime( "%Y-%m-%d %H:%M:%S" )
netgrow = models.OsInfoHis.objects. filter (tags = tagsdefault, recv_kbps__isnull = False ). filter (
chk_time__gt = net_begin_time, chk_time__lt = end_time).order_by( '-chk_time' )
netgrow_list = list (netgrow)
netgrow_list.reverse()
cpugrow = models.OsInfoHis.objects. filter (tags = tagsdefault, cpu_used__isnull = False ). filter (
chk_time__gt = cpu_begin_time, chk_time__lt = end_time).order_by( '-chk_time' )
cpugrow_list = list (cpugrow)
cpugrow_list.reverse()
memgrow = models.OsInfoHis.objects. filter (tags = tagsdefault, mem_used__isnull = False ). filter (
chk_time__gt = mem_begin_time, chk_time__lt = end_time).order_by( '-chk_time' )
memgrow_list = list (memgrow)
memgrow_list.reverse()
diskinfos = models.OsFilesystem.objects. filter (tags = tagsdefault)
try :
osinfo = models.OsInfo.objects.get(tags = tagsdefault)
except models.OsInfo.DoesNotExist:
osinfo = models.OsInfoHis.objects. filter (tags = tagsdefault,cpu_used__isnull = False ).order_by( '-chk_time' )[ 0 ]
if request.method = = 'POST' :
if request.POST.has_key( 'select_tags' ) or request.POST.has_key( 'select_cpu' ) or request.POST.has_key( 'select_mem' ) or request.POST.has_key( 'select_net' ):
if request.POST.has_key( 'select_tags' ):
tagsdefault = request.POST.get( 'select_tags' , None ).encode( "utf-8" )
elif request.POST.has_key( 'select_net' ):
net_range_defualt = request.POST.get( 'select_net' , None )
elif request.POST.has_key( 'select_cpu' ):
cpu_range_defualt = request.POST.get( 'select_cpu' , None )
elif request.POST.has_key( 'select_mem' ):
mem_range_default = request.POST.get( 'select_mem' , None )
return HttpResponseRedirect( '/linux_monitor?tagsdefault=%s&net_range_default=%s&cpu_range_default=%s&mem_range_default=%s' % (tagsdefault,net_range_default,cpu_range_defualt,mem_range_default))
else :
logout(request)
return HttpResponseRedirect( '/login/' )
if messageinfo_list:
msg_num = len (messageinfo_list)
msg_last = models.TabAlarmInfo.objects.latest( 'id' )
msg_last_content = msg_last.alarm_content
tim_last = (datetime.datetime.now() - msg_last.alarm_time).seconds / 60
return render_to_response( 'linux_monitor.html' , { 'netgrow_list' :netgrow_list, 'cpugrow_list' :cpugrow_list, 'memgrow_list' :memgrow_list, 'tagsdefault' :tagsdefault, 'hostinfo' :hostinfo, 'osinfo' : osinfo, 'net_range_default' :net_range_default, 'cpu_range_default' :cpu_range_defualt, 'mem_range_default' :mem_range_default, 'messageinfo_list' : messageinfo_list,
'msg_num' : msg_num, 'msg_last_content' : msg_last_content, 'tim_last' : tim_last, 'diskinfos' :diskinfos})
else :
return render_to_response( 'linux_monitor.html' , { 'netgrow_list' :netgrow_list, 'cpugrow_list' :cpugrow_list, 'memgrow_list' :memgrow_list, 'tagsdefault' :tagsdefault, 'hostinfo' :hostinfo, 'osinfo' : osinfo, 'net_range_default' :net_range_default, 'cpu_range_default' :cpu_range_defualt, 'mem_range_default' :mem_range_default, 'diskinfos' :diskinfos})
|
效果图:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/gumengkai/article/details/80055843