[rrd-users] rrd python help needed.
Jeremiah Jester
jeremiah.jester at panasonic.aero
Mon Dec 29 19:22:56 CET 2008
Hi Folks,
Any thoughts on this? Much appreciated.
Thanks,
JJ
On Fri, 2008-12-26 at 14:29 -0800, Jeremiah Jester wrote:
> Seasons greeting,
>
> I'm hoping someone on here can help me understand rrdtool a little
> better. I have a python script that is interacting with the rrdtool
> module via import.
>
> What I am trying to do is to collect data from /dev/proc for eth0
> device , grab new stats about traffic every 2 seconds, and assign
> those
> values to a list and attempting to generate the plotted points
> accordingly.
>
> However, it appears that I'm not passing the values in properly as It
> errors out if I add more than one value. I'm essentially passing a
> list
> of values to this line of code:
>
> 'LINE1:%s#CC9999:Net1' % a,
>
> If i change the value from the list to just one number then it just
> plots a straight line.
>
> Can anyone point me in the right direction so that the chart will plot
> the varying data i've collected? Script is attached and inline.
>
> Thanks,
> JJ
>
> ===
>
> #!/usr/bin/python
> import rrdtool, time, random, sys, ConfigParser
>
> def get_proc_net_dev(interface_dict):
> for line in open('/proc/net/dev','r'):
> if ':' not in line: continue
>
> for interface in interface_dict:
> if interface not in line: continue
> line = line.strip().split(':')[1]
> x = line.split()
> rx_kbytes = int(x[0])/1024
> rx_packets = int(x[1])
> tx_kbytes = int(x[8])/1024
> tx_packets = int(x[9])
> interface_dict[interface] = (rx_kbytes,
> rx_packets, tx_kbytes, tx_packets)
>
>
> def create_graph():
>
> stime = int(time.time()) - 3 * 86400
> dpoints = 10
> etime = stime + (dpoints * 300)
> fname = 'test.rrd'
> gfname = 'test.png'
>
> #CREATE GRAPH 1ST
>
> rrdtool.create('test.rrd' ,
> '--start' , str(stime),
> #### can sepcify end time below
> # '--end' , str(endtime)
> #add DS for another line element
> 'DS:speed:COUNTER:600:U:U',
> 'DS:average:GAUGE:600:U:U',
> 'DS:min:COUNTER:600:U:U',
> 'RRA:AVERAGE:0.5:1:576',
> 'RRA:AVERAGE:0.5:6:336'
> )
>
> ctime = stime
> cmiles = 0
>
> #GET & PARSE UPDATED DATA
> my_array=parse(fname,ctime)
>
> #GRAB VALUES FROM PARSE
> a=my_array[0]
> b=my_array[1]
> c=my_array[2]
>
> print a
> print b
> print c
>
>
> #LASTLY, GRAPH THE UPDATED DATA
> rrdtool.graph(gfname ,
> '--start' , str(etime - (24 * 3600)) ,
> '--end' , str(etime) ,
> '--vertical-label' , 'CPU Load' ,
> '--imgformat' , 'PNG' ,
> '--title' , 'System Load Average' ,
> '--lower-limit' , '0' ,
>
> 'DEF:myspeed=%s:speed:AVERAGE' % fname ,
>
> 'CDEF:mph=myspeed,3600,*' ,
> 'VDEF:msmax=mph,MAXIMUM' ,
> 'VDEF:msavg=mph,AVERAGE' ,
> 'VDEF:msmin=mph,MINIMUM' ,
>
> #lines
> 'LINE1:%s#CC9999:Net1' % a,
> 'LINE2:%s#FF0000:Net2' % b,
> 'LINE3:%s#FFDDDD:Net3' % c,
>
> #r'GPRINT:msmax:Max\: %6.1lf Load' ,
> #r'GPRINT:msavg:Avg\: %6.1lf Load' ,
> #r'GPRINT:msmin:Min\: %6.1lf Load\l' ,
> )
>
> def parse(fname, ctime):
>
> interface_dict = {'eth0':None}
> get_proc_net_dev(interface_dict)
> old_interface_dict = interface_dict
>
> i=0
>
> #declare lists
> stat0_list=[]
> stat1_list=[]
> stat2_list=[]
>
> while i<=5:
> i+=1
> get_proc_net_dev(interface_dict)
>
> print interface_dict
>
> #update graph with new numbers
> # loop through interface_dict items
> # {wlan: (123, 123, 123)}
>
> for x,y in interface_dict.items():
> net_device=x
> for x in y:
> stat0=y[0]
> stat1=y[1]
> stat2=y[2]
>
> #add each iter item to list
> stat0_list.append(stat0)
> stat1_list.append(stat1)
> stat2_list.append(stat2)
>
>
> print "STAT0:",stat0
> print "STAT1:",stat1
> print "STAT2:",stat2
>
> ctime=ctime
> ctime+=300
>
> print "CTIME:",ctime
>
> rrdtool.update(fname, '%s:%s:%s:%s' %
> (ctime,stat0,stat1,stat2))
>
> time.sleep(2)
>
> return stat0_list, stat1_list, stat2_list
>
> create_graph()
>
>
>
>
> Disclaimer: The information contained in this transmission, including
> any
> attachments, may contain confidential information of Panasonic
> Avionics
> Corporation. This transmission is intended only for the use of the
> addressee(s) listed above. Unauthorized review, dissemination or
> other use
> of the information contained in this transmission is strictly
> prohibited.
> If you have received this transmission in error or have reason to
> believe
> you are not authorized to receive it, please notify the sender by
> return
> email and promptly delete the transmission.
>
>
>
>
More information about the rrd-users
mailing list