这几天一直在研究如何出图,经过几天的思考终于写出了一个简单的运维监控画图的雏形,下面就贴出来与大家分享,因为我的数据量比较小,所以我直接从客户端用脚本收集数据,发送给远程的mysql服务器,mysql服务器上面部署了,django,结合画图工具出图:
监控拓扑:
下面给出代码展示:监控连接数:
1、脚本收集远程入库入库:
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
[root@mail python]# cat test.py
#!/usr/bin/env python
import
os
import
MySQLdb
def test():
ip =
'192.168.10.100'
p=os.popen(
'salt \* cmd.run \'netstat -an|wc -l\'|sed 1d'
).read()
p= p.strip(
'\n'
)
conn=MySQLdb.connect(host=
'192.168.10.205'
,user=
'test'
,passwd=
'123456'
,db=
'yizhan'
,port=
3306
)
cursor=conn.cursor()
cursor.execute(
"insert into app01_test(ip,netstat) values(%s,%s)"
%(ip,p))
conn.commit()
cursor.close()
conn.close()
print p ,ip
if
__name__==
'__main__'
:
test()
2
、后台处理数据,返回列表形式:
def test(request):
data1 = []
data = Test.objects.all()
for
i
in
data:
xiaoluo=i.netstat
data1.append(
int
(xiaoluo))
print data1
return
render_to_response(
'test.html'
,{
'data'
:data,
'data1'
:data1})
3
、前端渲染:
var
option = {
title : {
text:
'服务器并发连接数'
,
subtext:
'服务器连接数'
,
},
tooltip : {
trigger:
'axis'
},
legend: {
data:[
'www.shikee.com'
]
},
toolbox: {
show :
true
,
feature : {
mark : {show:
true
},
dataView : {show:
true
, readOnly:
false
},
magicType : {show:
true
, type: [
'line'
,
'bar'
]},
restore : {show:
true
},
saveAsImage : {show:
true
}
}
},
calculable :
true
,
xAxis : [
{
type :
'category'
,
boundaryGap :
false
,
data : [
'10.01'
,
'10.05'
,
'10.06'
,
'10.7'
,
'10.08'
,
'10.09'
,
'10.10'
]
}
],
yAxis : [
{
type :
'value'
,
axisLabel : {
formatter:
'{value}'
}
}
],
series : [
{
name:
'最高并发'
,
type:
'line'
,
data:`data1`,
markPoint : {
data : [
{type :
'max'
, name:
'最大值'
},
{type :
'min'
, name:
'最小值'
}
]
},
markLine : {
data : [
{type :
'average'
, name:
'平均值'
}
]
}
}
]
};
// 为echarts对象加载数据
myChart.setOption(option);
</script>
4
、效果展示:
|
总结:主要我们返回的数据是json.或者是列表的形式,都是很容易画图的,这里还不完整就是我还没有加,时间的数据,大家可以再数据库里面添加一个时间字段,实时读取。
本文转自 小罗ge11 51CTO博客,原文链接:http://blog.51cto.com/xiaoluoge/1617853,如需转载请自行联系原作者