#!/usr/bin/perl # Copyright Martin Pot 2002 # http://ii.net/~mpot/wireless/rrdtool/ use RRDs; # define location of rrdtool binary my $rrdtool = '/usr/bin/rrdtool'; # define location of rrdtool databases my $rrd = '/var/lib/rrd'; # define location of images my $img = '/var/www/html/rrdtool'; # define the network interface my $iface = 'eth0'; # define a description for the interface my $descr = 'local ethernet'; # get network interface info my $in = `ifconfig $iface |grep bytes|cut -d":" -f2|cut -d" " -f1`; my $out = `ifconfig $iface |grep bytes|cut -d":" -f3|cut -d" " -f1`; # remove eol chars chomp($in); chomp($out); print "$iface traffic in, out: $in, $out\n"; # insert values into rrd `$rrdtool update $rrd/$iface.rrd -t in:out N:$in:$out`; # daily traffic graph RRDs::graph "$img/$iface-day.png", "-t", "traffic :: $iface $descr", "-h", "80", "-w", "600", "-a", "PNG", "-v", "bytes/sec", "DEF:in=$rrd/$iface.rrd:in:AVERAGE", "DEF:out=$rrd/$iface.rrd:out:AVERAGE", "AREA:in#11EE11:Incoming", "LINE1:in#009900", "GPRINT:in:MAX: Max\\: %5.1lf %s", "GPRINT:in:AVERAGE: Avg\\: %5.1lf %S", "GPRINT:in:LAST: Current\\: %5.1lf %Sbytes/sec\\n", "LINE2:out#0000FF:Outgoing", "GPRINT:out:MAX: Max\\: %5.1lf %S", "GPRINT:out:AVERAGE: Avg\\: %5.1lf %S", "GPRINT:out:LAST: Current\\: %5.1lf %Sbytes/sec"; if ($ERROR = RRDs::error) { print "$0: unable to generate daily traffic graph: $ERROR\n"; } # weekly traffic graph RRDs::graph "$img/$iface-week.png", "-s", "-1week", "--lazy", "-t", "traffic :: $iface $descr", "-h", "80", "-w", "600", "-a", "PNG", "-v", "bytes/sec", "DEF:in=$rrd/$iface.rrd:in:AVERAGE", "DEF:out=$rrd/$iface.rrd:out:AVERAGE", "AREA:in#11EE11:Incoming", "LINE1:in#009900", "GPRINT:in:MAX: Max\\: %5.1lf %s", "GPRINT:in:AVERAGE: Avg\\: %5.1lf %S", "GPRINT:in:LAST: Current\\: %5.1lf %Sbytes/sec\\n", "LINE2:out#0000FF:Outgoing", "GPRINT:out:MAX: Max\\: %5.1lf %S", "GPRINT:out:AVERAGE: Avg\\: %5.1lf %S", "GPRINT:out:LAST: Current\\: %5.1lf %Sbytes/sec"; if ($ERROR = RRDs::error) { print "$0: unable to generate weekly traffic graph: $ERROR\n"; } # monthly traffic graph RRDs::graph "$img/$iface-month.png", "-s", "-1month", "--lazy", "-t", "traffic :: $iface $descr", "-h", "80", "-w", "600", "-a", "PNG", "-v", "bytes/sec", "DEF:in=$rrd/$iface.rrd:in:AVERAGE", "DEF:out=$rrd/$iface.rrd:out:AVERAGE", "AREA:in#11EE11:Incoming", "LINE1:in#009900", "GPRINT:in:MAX: Max\\: %5.1lf %s", "GPRINT:in:AVERAGE: Avg\\: %5.1lf %S", "GPRINT:in:LAST: Current\\: %5.1lf %Sbytes/sec\\n", "LINE2:out#0000FF:Outgoing", "GPRINT:out:MAX: Max\\: %5.1lf %S", "GPRINT:out:AVERAGE: Avg\\: %5.1lf %S", "GPRINT:out:LAST: Current\\: %5.1lf %Sbytes/sec"; if ($ERROR = RRDs::error) { print "$0: unable to generate monthly traffic graph: $ERROR\n"; } # yearly traffic graph RRDs::graph "$img/$iface-year.png", "-s", "-1year", "--lazy", "-t", "traffic :: $iface $descr", "-h", "80", "-w", "600", "-a", "PNG", "-v", "bytes/sec", "DEF:in=$rrd/$iface.rrd:in:AVERAGE", "DEF:out=$rrd/$iface.rrd:out:AVERAGE", "AREA:in#11EE11:Incoming", "LINE1:in#009900", "GPRINT:in:MAX: Max\\: %5.1lf %s", "GPRINT:in:AVERAGE: Avg\\: %5.1lf %S", "GPRINT:in:LAST: Current\\: %5.1lf %Sbytes/sec\\n", "LINE2:out#0000FF:Outgoing", "GPRINT:out:MAX: Max\\: %5.1lf %S", "GPRINT:out:AVERAGE: Avg\\: %5.1lf %S", "GPRINT:out:LAST: Current\\: %5.1lf %Sbytes/sec"; if ($ERROR = RRDs::error) { print "$0: unable to generate yearly traffic graph: $ERROR\n"; }