#!/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/