浅见池也 发表于 2018-8-4 06:33:39

利用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数据库。
  # 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数据库
  # cat update.py
  #!/usr/bin/env python
  import rrdtool
  import time,psutil
  total_input_traffic = psutil.net_io_counters()
  total_output_traffic = psutil.net_io_counters()
  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
  执行一下,数据写入~~~
四、最后一步,绘图!!!!!
  # catgraph.py
  #!/usr/bin/python
  import rrdtool
  import time
  title="Server networktraffic 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!!!完事儿
  希望大家可以得到学习,谢谢,知识在于共享!!!!
页: [1]
查看完整版本: 利用python实现网卡流量图表绘制!!!