利用python实现网卡流量图表绘制!!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用python实现网卡流量图表绘制!!!相关的知识,希望对你有一定的参考价值。

项目背景:

利用python实现一个自动化的网卡流量图表绘制,这对于我们实现自动化运维平台有更深入的理解,

也会让我们对于现有的一些监控软件的一些实现都有很大的帮助。


实现环境:

虚拟机VMware Workstation 12 player

服务器:centos6.5的系统  ip:192.168.0.25

python2.6.6

rrdtool模块、time模块、psutil模块。

SecureCRT ssh远程连接软件



实验过程:

思路其实很清醒:创建rrd数据库---->数据写入rrd数据库----->根据数据画图  ok!!!完事儿

一、首先创建我们的工作目录,然后创建三个文件(create.py、update.py、graph.py)。

技术分享

二、创建rrd数据库。

[[email protected] 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()


赋予执行权限执行一下。

技术分享可以看到我们创建了一个名字是Flow.rrd的数据库文件。

三、数据写入到rrd数据库

[[email protected] 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


执行一下,数据写入~~~

技术分享四、最后一步,绘图!!!!!

[[email protected] 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!!!完事儿

希望大家可以得到学习,谢谢,知识在于共享!!!!

本文出自 “积少成多” 博客,请务必保留此出处http://9399369.blog.51cto.com/9389369/1748831

以上是关于利用python实现网卡流量图表绘制!!!的主要内容,如果未能解决你的问题,请参考以下文章

zabbix监控平台部署详细文档

Python 利用 openpyxl 操作 Excel 之 图表

Python-实现图表绘制总结

Python学期作业 - 住院手术查询排序统计与绘制图表

python处理Excel实现自动化办公教学(数据筛选公式操作单元格拆分合并冻结窗口图表绘制等)

必备-Python数据可视化