[rrd-users] Re: Help a new and slightly lost user! :(

Michael Thompson mike at thompsonmike.co.uk
Sun Nov 14 20:40:02 MET 2004

On Sunday 14 November 2004 19:20, Alex van den Bogaerdt wrote:
> On Sat, Nov 13, 2004 at 10:20:09AM +0000, Michael Thompson wrote:
> > Sorry, I just read that message and realised it does not make any sense!
> Indeed,  "it does not work" is a bit too vague
> > What is happening is that it is logging data, but it is logging the
> > verticle scale as k, it needs to show the difference in packets between
> > each reading, and not have any m k or any other symbols apart from the
> > amounts.
> You already understand GAUGE may not be the best counter type.

Umm, I have used Counter and DERIVE, yet it still dos'nt get the data right.
> The difference between each reading is not something you want to
> use rrdtool for.  For these kind of applications you should choose
> sql, access, or even a flat file.
Is that not what DERIVE Should do?

> If you want to see a rate, an amount of rejects per second, then rrdtool
> is the tool to use.

That is exactly what I am trying to do, but accuracy is important.
> RTFM rrdgraph, stuff about units-exponent

I have RTFM, and the units-exponent is'nt helping. It is the accuracy that I 
need help with. 

I have the following Perl Script 


 use RRDs; 
 # define location of rrdtool databases 
 my $rrd = '/var/lib/rrd'; 
 # define location of images 
 my $img = '/var/www/localhost/htdocs/temp/'; 
 &ProcessChain("DROP-INPUT", "Input Chain Drops"); 
 &ProcessChain("DROP-FORWARD","Forward Chain Drops"); 
 sub ProcessChain 
 # process interface 
 # inputs: $_[0]: Chain Name 
 #         $_[1]: Chain Description 
         # get info 
         my $in = `/sbin/iptables -L $_[0] -v | grep LOG | awk '{print \$1}'`; 
         #my $out =`/sbin/iptables -L $_[0] -v | grep LOG | awk '{print 
         # remove eol chars 
         print "$_[0] packets in: $in\n"; 
         # if rrdtool database doesn't exist, create it 
         if (! -e "$rrd/$_[0].rrd") 
                 print "creating rrd database for $_[0]...\n"; 
                 RRDs::create "$rrd/$_[0].rrd", 
                         "-s 300", 
         # insert values into rrd 
         RRDs::update "$rrd/$_[0].rrd", 
                 "-t", "drop", 
         # create traffic graphs 
         &CreateGraph($_[0], "day", $_[1]); 
         &CreateGraph($_[0], "week", $_[1]); 
         &CreateGraph($_[0], "month", $_[1]); 
         &CreateGraph($_[0], "year", $_[1]); 
 sub CreateGraph 
 # creates graph 
 # inputs: $_[0]: Chain Name 
 #         $_[1]: interval (ie, day, week, month, year) 
 #         $_[2]: Chain Description 
         RRDs::graph "$img/$_[0]-$_[1].png", 
                 "-s -1$_[1]", 
                 "-t $_[0] :: $_[2]", 
 #               "--lazy", 
                 "-h", "80", "-w", "600", 
                 "-l 0", 
                 "-a", "PNG", 
                 "-v Packets", 
                 "AREA:dropav#32CD32:Dropped Packets", 
                 "GPRINT:dropav:MAX:  Max\\: %5.0lf %s", 
                 "GPRINT:dropav:AVERAGE: Avg\\: %5.1lf %S", 
                 "GPRINT:dropav:LAST: Current\\: %5.0lf %SPackets", 
         if ($ERROR = RRDs::error) { print "$0: unable to generate $_[0] $_[1] 
traffic graph: $ERR$ 

 Now this _does_ work, with one problem, the values are all wrong. 
 The graph looks like this 
 As you can see, the current value is 12, however the command returns 
 4. So where is it getting the value of 12? 
 Could it be the fact that I am storing the Average value in the RRD? I have 
several other scripts that are virtually the same and they all return the 
correct values. 

> Alex

Unsubscribe mailto:rrd-users-request at list.ee.ethz.ch?subject=unsubscribe
Help        mailto:rrd-users-request at list.ee.ethz.ch?subject=help
Archive     http://www.ee.ethz.ch/~slist/rrd-users
WebAdmin    http://www.ee.ethz.ch/~slist/lsg2.cgi

More information about the rrd-users mailing list