Project

General

Profile

« Previous | Next » 

Revision 3535716b

Added by Hamish Coleman about 16 years ago

  • ID 3535716ba15d0e014fd9b07d8130438d7ebde5d2

Add two systems for plotting MRTG log data in gnuplot

View differences:

gnuplot-mrtg
#!/bin/bash
#
# given a list of MRTG nrproc files, plot the loadavg
#
if [ -z "$1" ]; then
echo need a mrtg file
exit 1
fi
if [ ! -f $1 ]; then
echo file $1 does not exist
exit 1
fi
TIMEOFFSET=39600
TEMPFILE=`tempfile`
(
cat <<EOF
set terminal png size 700,135
set mouse clipboardformat 5
set mouse mouseformat 5
set xdata time
set timefmt "%s"
set datafile missing "0"
set grid
set format y "%.0s %c"
set title "MRTG from $1"
set ylabel "Bytes per Second"
set xlabel "Time"
plot "$1" using (\$1+$TIMEOFFSET):4 t 'In' lt rgb 'green' w filledcurves y1=0 , \
"$1" using (\$1+$TIMEOFFSET):5 t 'Out' lt rgb 'blue' w lines
EOF
) >$TEMPFILE
gnuplot $TEMPFILE
rm -f $TEMPFILE
gnuplot.cgi
#!/usr/bin/perl
use warnings;
use strict;
#
# Given the name of a MRTG log file in the current directory, output a PNG
#
use CGI ':all';
use CGI::Carp qw(fatalsToBrowser);
my $log = param('log');
if (!defined $log) {
die "No logfile";
}
if (! -e $log) {
die "logfile does not exist";
}
my $xsize = param('xs') || 700;
my $ysize = param('ys') || 135;
my $ylabel = param('ylabel') || 'Bytes per Second';
my $li = param('li') || 'In';
my $lo = param('lo') || 'Out';
# FIXME - calulate the timezone
my $timezone_offset=39600;
print "Content-Type: image/png\n\n";
open( GNUPLOT, "|/usr/bin/gnuplot");
print GNUPLOT <<EOF;
set terminal png size $xsize,$ysize
set key left top
set grid
set xdata time
set format y "%.0s %c"
set timefmt "%s"
set datafile missing "0"
# set title "MRTG from $log"
# set xlabel "Time"
set ylabel "$ylabel"
plot "$log" using (\$1+$timezone_offset):4 t '$li' lt rgb 'green' w filledcurves y1=0 , \\
"$log" using (\$1+$timezone_offset):5 t '$lo' lt rgb 'blue' w lines
EOF

Also available in: Unified diff