With MRTG you can watch also thresholds and start actions like
e-mail, fax, sms, scripts and more. MRTG is a a set of free perl scripts. Unfortunately MRTG cannot display negative values. Use in this case RRDTools from same author.
configuration for MRTG:
Target[PCMeasureDemo]: `/usr/bin/pcmeasure2mrtg.pl 10.254.89.8 lpt1.1 com2.1` MaxBytes[PCMeasureDemo]: 1000 Title[PCMeasureDemo]: LiveDemo PCMeasure
PageTop[PCMeasureDemo]: <H1>LiveDemo PCMeasure</H1> YTicsFactor[PCMeasureDemo]: 0.1 Options[PCMeasureDemo]: gauge, noinfo, nopercent, growright YLegend[PCMeasureDemo]: Grad Celsius Timezone[PCMeasureDemo]: GMT ShortLegend[PCMeasureDemo]: x 0,1 Grad Celsius LegendI[PCMeasureDemo]: Outdoor LegendO[PCMeasureDemo]: Indoor Legend1[PCMeasureDemo]: Outdoor in Grad Celsius Legend2[PCMeasureDemo]: Indoor in Grad Celsius
this script is called from MRTG to collect data from PCMeasure
Datei pcmeasure2mrtg.pl
#!/usr/bin/perl ############################################################# # pcmeasure2mrtg.pl Zugriff auf Daten der MessPC Software # über das Netzwerk und Übergabe an MRTG # # Version 1.1 vom 3.8.2002 # # (C) Lutz Schulze 2002 www.messpc.de
# # Aufruf: pcmeasure2mrtg.pl IP-Adresse sensor1 sensor2 # # Die Parameter sensor1 und sensor2 bestimmen die Interfaces # der MessPC - Software, die ausgegeben werden sollen. # Beispiel: pcmeasure2mrtg.pl 10.1.1.1 lpt1.1 com1.1 #############################################################
use IO::Socket; use Text::ParseWords; sub parse_csv { return quotewords(";",0, $_[0]); }
$remote_host = $ARGV[0]; # IP-address $remote_port = 4000; # TCP Port
$socket = IO::Socket::INET->new(PeerAddr =>$remote_host, PeerPort =>$remote_port, Proto =>"tcp",
Type =>SOCK_STREAM) or die "cannot connect to $remote_host:$remote_port: $@\n";
print $socket "pcmeasure.$ARGV[1]\n"; $answer = <$socket>; @fields = parse_csv($answer); for ($i =0;$i < @fields;$i++) { $pos1 =index $fields[$i],'value'; if ($pos1 != -1) {
$pos2 =index $fields[$i],'='; $valuestring1 = substr($fields[$i],$pos2+1); } } close($socket);
$valuestring2 = 0; if ($ARGV[2] ne '') { $socket = IO::Socket::INET->new(PeerAddr =>$remote_host, PeerPort =>$remote_port,
Proto =>"tcp", Type =>SOCK_STREAM) or die "cannot connect to $remote_host:$remote_port: $@\n";
print $socket "pcmeasure.$ARGV[2]\n"; $answer = <$socket>; @fields = parse_csv($answer); for ($i =0;$i < @fields;$i++) { $pos1 =index $fields[$i],'value'; if ($pos1 != -1) { $pos2 =index $fields[$i],'='; $valuestring2 = substr($fields[$i],$pos2+1);
} } close($socket); }
$valuestring1 = $valuestring1 * 10; #MRTG will nur ganze Zahlen $valuestring2 = $valuestring2 * 10; print "$valuestring1\n$valuestring2\n0 Std\n$ARGV[0]\n";
|