通过SNMP信息用RRD绘图

18 篇文章 0 订阅
#!/usr/bin/env python


import netsnmp
import time
from pyrrd.rrd import DataSource, RRA, RRD
from pyrrd.graph import DEF, CDEF, VDEF, LINE, AREA, GPRINT,ColorAttributes,Graph


data_in=netsnmp.Varbind('ifInOctets')
data_out=netsnmp.Varbind('ifOutOctets')


while True:


        DATA_IN=netsnmp.snmpwalk(data_in,Version=2,DestHost="localhost",Community="123456")
        DATA_OUT=netsnmp.snmpwalk(data_out,Version=2,DestHost="localhost",Community="123456")


        eth_IN=int(DATA_IN[1])
        eth_OUT=int(DATA_OUT[1])


        endTime = int(round(time.time()))
        valueTime=endTime
        delta = 36000
        startTime = endTime-delta
        filename = '/root/python/snmp/eth0.rrd'
        dataSources = []
        roundRobinArchives = []



        dataSource = DataSource(dsName='eth0_in', dsType='COUNTER', heartbeat=60)
        dataSources.append(dataSource)


        roundRobinArchives.append(RRA(cf='AVERAGE', xff=0.5, steps=1, rows=60))
        myRRD = RRD('/root/python/snmp/eth0.rrd', ds=dataSources, rra=roundRobinArchives, start=startTime)
        myRRD.bufferValue(valueTime, eth_IN)
        myRRD.update()
        time.sleep(20)


 



        def1 = DEF(rrdfile=myRRD.filename, vname='eth0_in',dsName=dataSource.name)
        area1 = AREA(defObj=def1, color='#ff0000', legend='ETH0_IN', stack=True)



        ca = ColorAttributes()
        ca.back = '#555555'
        ca.canvas = '#333333'
        ca.shadea = '#000000'
        ca.shadeb = '#111111'
        ca.mgrid = '#CCCCCC'
        ca.axis = '#FFFFFF'
        ca.frame = '#AAAAAA'
        ca.font = '#FFFFFF'
        ca.arrow = '#FFFFFF'



        graphfile = "/usr/local/apache/htdocs/rrd/python/eth0.png"
        g = Graph(graphfile, start=startTime, vertical_label='Bytes/s', color=ca)
        g.data.extend([def1,area1])
        g.write()





转自:http://yyybbb.blog.163.com/blog/static/551388702011224357379/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值