项目背景:python
利用python实现一个自动化的网卡流量图表绘制,这对于咱们实现自动化运维平台有更深刻的理解,数据库
也会让咱们对于现有的一些监控软件的一些实现都有很大的帮助。centos
实现环境:服务器
虚拟机VMware Workstation 12 player运维
服务器:centos6.5的系统 ip:192.168.0.25ssh
python2.6.6ide
rrdtool模块、time模块、psutil模块。学习
SecureCRT ssh远程链接软件
url
实验过程:spa
思路其实很清醒:建立rrd数据库---->数据写入rrd数据库----->根据数据画图 ok!!!完事儿
1、首先建立咱们的工做目录,而后建立三个文件(create.py、update.py、graph.py)。
2、建立rrd数据库。
[root@ www rrdtool]# cat create.py
#!/usr/bin/env python
import rrdtool
import time
cur_time=str(int(time.time()))
rrd=rrdtool.create('Flow.rrd','--step','300','--start',cur_time,
'DS:eth0_in:COUNTER:600:0:U',
'DS:eth0_out:COUNTER:600:0:U',
'RRA:AVERAGE:0.5:1:600',
'RRA:AVERAGE:0.5:6:700',
'RRA:AVERAGE:0.5:24:775',
'RRA:AVERAGE:0.5:288:797',
'RRA:MAX:0.5:1:600',
'RRA:MAX:0.5:6:700',
'RRA:MAX:0.5:24:775',
'RRA:MAX:0.5:444:797',
'RRA:MIN:0.5:1:600',
'RRA:MIN:0.5:6:700',
'RRA:MIN:0.5:24:775',
'RRA:MIN:0.5:444:797')
if rrd:
print rrdtool.error()
赋予执行权限执行一下。
3、数据写入到rrd数据库
[root@ www rrdtool]# cat update.py
#!/usr/bin/env python
import rrdtool
import time,psutil
total_input_traffic = psutil.net_io_counters()[1]
total_output_traffic = psutil.net_io_counters()[0]
starttime=int(time.time())
update=rrdtool.updatev('/home/test/rrdtool/Flow.rrd','%s:%s:%s' %
(str(starttime),str(total_input_traffic),str(total_output_traffic)))
print update
执行一下,数据写入~~~
[root@ www rrdtool]# cat graph.py
#!/usr/bin/python
import rrdtool
import time
title="Server network traffic flow ("+time.strftime('%Y-%m-%d',
time.localtime(time.time()))+")"
rrdtool.graph( "Flow.png", "--start", "-1d","--vertical-label=Bytes/s",
"--x-grid","MINUTE:12:HOUR:1:HOUR:1:0:%H",
"--width","650","--height","230","--title",title,
"DEF:inoctets=Flow.rrd:eth0_in:AVERAGE",
"DEF:outoctets=Flow.rrd:eth0_out:AVERAGE",
"CDEF:total=inoctets,outoctets,+",
"LINE1:total#FF8833:Total traffic",
"AREA:inoctets#00FF00:In traffic",
"LINE1:outoctets#0000FF:Out traffic",
"HRULE:6144#FF0000:Alarm value\\r",
"CDEF:inbits=inoctets,8,*",
"CDEF:outbits=outoctets,8,*",
"COMMENT:\\r",
"COMMENT:\\r",
"GPRINT:inbits:AVERAGE:Avg In traffic\: %6.2lf %Sbps",
"COMMENT: ",
"GPRINT:inbits:MAX:Max In traffic\: %6.2lf %Sbps",
"COMMENT: ",
"GPRINT:inbits:MIN:MIN In traffic\: %6.2lf %Sbps\\r",
"COMMENT: ",
"GPRINT:outbits:AVERAGE:Avg Out traffic\: %6.2lf %Sbps",
"COMMENT: ",
"GPRINT:outbits:MAX:Max Out traffic\: %6.2lf %Sbps",
"COMMENT: ",
"GPRINT:outbits:MIN:MIN Out traffic\: %6.2lf %Sbps\\r")
执行它,绘图!!!
能够看到咱们生成了一个图片,你确定是想看一幅漂亮的图片,而不是这个!!!!
能够看到,有没有很神奇!!!!!!!!!!!!件至关于咱们本身写了一个监控软件,并且看起来还很美!!!!!
总结:经过这个项目咱们能够对与监控有更清晰的认识,其实通常也就这三步:
建立rrd数据库---->数据写入rrd数据库----->根据数据画图 ok!!!完事儿
但愿你们能够获得学习,谢谢,知识在于共享!!!!