- foreach my $var (@fields) {
- if (!(defined($vars->{$var}->{'value'}))) {
- $vars->{$var}->{'value'} = 'U';
- }
- RRDs::update("${rrdfile}.${var}", "N:" . $vars->{$var}->{'value'});
- }
- if (RRDs::error) {
- print "Error while updating: " . RRDs::error . "\n";
- }
+ my @graphdef = ('-P', "-t", $hostname." - ".$vars->{$var}->{'name'});
+ push @graphdef, "--lazy" if !$first;
+
+ push @graphdef, "DEF:${var}-avg=${rrdfile}.${var}:${var}:AVERAGE";
+ push @graphdef, "DEF:${var}-min=${rrdfile}.${var}:${var}:MIN";
+ push @graphdef, "DEF:${var}-max=${rrdfile}.${var}:${var}:MAX";
+ push @graphdef, "DEF:${var}-houravg=${rrdfile}.${var}:${var}:AVERAGE:step=3600";
+ push @graphdef, "LINE1:${var}-avg#FF0000";
+ push @graphdef, "VDEF:cur=${var}-avg,LAST";
+ push @graphdef, 'GPRINT:cur:Current\\: <span foreground="#FF0000">%.2lf</span>\\r';
+
+ my $mtime;
+ $mtime=(stat("${outdir}/${hostname}.${var}.png.work"))[9];
+
+ (my $averages, my $width, my $height) =
+ rrd_graph("${outdir}/${hostname}.${var}.png.work",
+ "-w", "720", @graphdef);
+
+ pop @graphdef;
+ pop @graphdef;
+ pop @graphdef;
+
+ if ($rrd_result) {
+ print "Error while graphing: " . $rrd_result . "\n";
+ } else {
+ my $newmtime=(stat("${outdir}/${hostname}.${var}.png.work"))[9];
+ if ((!defined($mtime)) || ($newmtime != $mtime)) {
+ copy("${outdir}/${hostname}.${var}.png.work", "${outdir}/${hostname}.${var}.png.new");
+ rename("${outdir}/${hostname}.${var}.png.new", "${outdir}/${hostname}.${var}.png");
+ }
+ }