RRDTool

Aus xinux.net
Zur Navigation springen Zur Suche springen
#!/bin/bash

RRDDIR="/var/www/rrd"
ARCHIVES="$RRDDIR/archives"
#GRAPHS="/var/www/rrd/graphs"
STEP="5"
HEARTBEAT="120"
MIN="0"
MAX="13107200"

[ ! -d $ARCHIVES ] && mkdir -p $ARCHIVES
chown root:www-data $RRDDIR
chmod g+w $RRDDIR


echo "$STEP" > $RRDDIR/step
#STIME=`expr $(date +%s) + 7200`
STIME=`date +%s | tee ${RRDDIR}/starttime`

rm $ARCHIVES/*

rrdtool create $ARCHIVES/traffic_Rx.rrd \
       --start $STIME \
       --step  $STEP \
       DS:Rx:COUNTER:$HEARTBEAT:$MIN:$MAX \
       RRA:AVERAGE:0.5:1:1440

rrdtool create $ARCHIVES/traffic_Tx.rrd \
       --start $STIME \
       --step  $STEP \
       DS:Tx:COUNTER:$HEARTBEAT:$MIN:$MAX \
       RRA:AVERAGE:0.5:1:1440
sleep 5

while true
do
       [ ! -d $GRAPHS ] && mkdir -p $GRAPHS

       #TIME=`expr $(date +%s) + 7200`
       TIME=`date +%s | tee ${RRDDIR}/curtime`
       RX=`awk -F: '/eth0/ { print $2 }' /proc/net/dev | awk '{ print $1 }'`
       TX=`awk -F: '/eth0/ { print $2 }' /proc/net/dev | awk '{ print $9 }'`

       rrdtool update $ARCHIVES/traffic_Rx.rrd $TIME:$RX
       rrdtool update $ARCHIVES/traffic_Tx.rrd $TIME:$TX
       sleep $STEP
done


#!/usr/bin/perl -w

use strict;
use RRDs;
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser warningsToBrowser);

my $rrddir="rrd";
my $archives="$rrddir/archives";
my $stimefile="$rrddir/starttime";
my $curtimefile="$rrddir/curtime";
my $stepfile="$rrddir/step";
my $imagefile="$rrddir/traffic.png";
my $stime;
my $curtime;
my $step;
if ( -e $stimefile) {
       open FILE, '<', $stimefile or die "Kann Datei $stimefile nicht zum Lesen oeffnen: $!";
       $stime = <FILE>;
       close FILE;
}

if ( -e $curtimefile) {
        open FILE, '<', $curtimefile or die "Kann Datei $curtimefile nicht zum Lesen oeffnen: $!";
        $curtime = <FILE>;
        close FILE;
}

if ( -e $stepfile) {
        open FILE, '<', $stepfile or die "Kann Datei $stepfile nicht zum Lesen oeffnen: $!";
        $step = <FILE>;
        close FILE;
}

RRDs::graph ("$imagefile",
               "--title=Traffic on eth0",
               "--vertical-label=Bytes/s",
               "--start=$stime",
               "--end=$curtime",
               "--height=250",
               "--lower-limit=0",
               "DEF:Rx=$archives/traffic_Rx.rrd:Rx:AVERAGE",
               "DEF:Tx=$archives/traffic_Tx.rrd:Tx:AVERAGE",
               "LINE2:Rx#FF0000:Rx",
               "LINE3:Tx#0000FF:Tx");

my $err=RRDs::error;
if ($err) {print "problem generating the graph: $err\n";}

print "Content-Type: text/html\n\n".
       "<html>\n".
       "<head><title>Traffic</title></head>\n".
       "<body>\n".
       "<img src=$imagefile>\n".
       "</body>\n".
       "</html>\n";

Vorlage:HOWTO