写一个监控平台的思路总结和实践
这几天一直在研究如何出图,经过几天的思考终于写出了一个简单的运维监控画图的雏形,下面就贴出来与大家分享,因为我的数据量比较小,所以我直接从客户端用脚本收集数据,发送给远程的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
|
[[email protected] 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,如需转载请自行联系原作者