X-Git-Url: https://git.zerfleddert.de/cgi-bin/gitweb.cgi/upsgraph/blobdiff_plain/2c148a8ed56c09cb34ba4c44f5d6b84c06afb50c..e26b065f3d496edd6845b58c5a3598793315876f:/upsgraph.pl diff --git a/upsgraph.pl b/upsgraph.pl index 24d196a..04a4f8c 100755 --- a/upsgraph.pl +++ b/upsgraph.pl @@ -8,6 +8,7 @@ if ((@ARGV != 1) && (@ARGV != 2)) { use Net::SNMP; use IO::Socket::INET; use RRDs; +use File::Copy; use Data::Dumper; $UPSGRAPH::outdir = ""; @@ -107,6 +108,11 @@ if ($> == 0) { foreach my $host (@$hosts) { my $rrdfile = $host->{'rrdfile'}; + foreach my $var (keys(%{$host->{'vars'}})) { + $host->{'vars'}->{$var}->{'min'} = 'U' if (!defined($host->{'vars'}->{$var}->{'min'})); + $host->{'vars'}->{$var}->{'max'} = 'U' if (!defined($host->{'vars'}->{$var}->{'max'})); + } + if (-e "${rrdfile}") { print "Reading old ${rrdfile} to preserve data...\n"; @@ -173,6 +179,36 @@ foreach my $host (@$hosts) { exit 1; } + if (defined($rrdinfo->{"ds[${field}].min"})) { + if ($rrdinfo->{"ds[${field}].min"} ne $host->{'vars'}->{$field}->{'min'}) { + RRDs::tune("${rrdfile}.${field}","-i",$field.":".$host->{'vars'}->{$field}->{'min'}); + } + } else { + if ($host->{'vars'}->{$field}->{'min'} ne 'U') { + RRDs::tune("${rrdfile}.${field}","-i",$field.":".$host->{'vars'}->{$field}->{'min'}); + } + } + + if (RRDs::error) { + print "Error while setting min: " . RRDs::error . "\n"; + exit 1; + } + + if (defined($rrdinfo->{"ds[${field}].max"})) { + if ($rrdinfo->{"ds[${field}].max"} ne $host->{'vars'}->{$field}->{'max'}) { + RRDs::tune("${rrdfile}.${field}","-a",$field.":".$host->{'vars'}->{$field}->{'max'}); + } + } else { + if ($host->{'vars'}->{$field}->{'max'} ne 'U') { + RRDs::tune("${rrdfile}.${field}","-a",$field.":".$host->{'vars'}->{$field}->{'max'}); + } + } + + if (RRDs::error) { + print "Error while setting max: " . RRDs::error . "\n"; + exit 1; + } + if ($rrdinfo->{'rra[0].rows'} != $keep) { print "Resizing ${rrdfile}.${field} from " . $rrdinfo->{'rra[0].rows'} . " to ${keep} samples.\n"; @@ -288,7 +324,7 @@ while(1) { } foreach my $var (@{$host->{'fields'}}) { - my @graphdef = ("-t", $hostname." - ".$vars->{$var}->{'name'}, "DEF:${var}=${rrdfile}.${var}:${var}:AVERAGE", "LINE1:${var}#FF0000"); + my @graphdef = ("--lazy", "-t", $hostname." - ".$vars->{$var}->{'name'}, "DEF:${var}=${rrdfile}.${var}:${var}:AVERAGE", "LINE1:${var}#FF0000"); (my $averages, my $width, my $height) = RRDs::graph("${outdir}/${hostname}.${var}.png.new", "-w", "720", @graphdef); @@ -296,7 +332,7 @@ while(1) { if (RRDs::error) { print "Error while graphing: " . RRDs::error . "\n"; } else { - rename("${outdir}/${hostname}.${var}.png.new", "${outdir}/${hostname}.${var}.png"); + copy("${outdir}/${hostname}.${var}.png.new", "${outdir}/${hostname}.${var}.png"); } print HTML "
\n"; @@ -325,7 +361,7 @@ while(1) { if (RRDs::error) { print "Error while graphing: " . RRDs::error . "\n"; } else { - rename("${outdir}/${hostname}.${var}.long.png.new", "${outdir}/${hostname}.${var}.long.png"); + copy("${outdir}/${hostname}.${var}.long.png.new", "${outdir}/${hostname}.${var}.long.png"); } print HTML2 "
"; @@ -337,7 +373,7 @@ while(1) { if (RRDs::error) { print "Error while graphing: " . RRDs::error . "\n"; } else { - rename("${outdir}/${hostname}.${var}.week.png.new", "${outdir}/${hostname}.${var}.week.png"); + copy("${outdir}/${hostname}.${var}.week.png.new", "${outdir}/${hostname}.${var}.week.png"); } print HTML2 "
"; @@ -349,7 +385,7 @@ while(1) { if (RRDs::error) { print "Error while graphing: " . RRDs::error . "\n"; } else { - rename("${outdir}/${hostname}.${var}.year.png.new", "${outdir}/${hostname}.${var}.year.png"); + copy("${outdir}/${hostname}.${var}.year.png.new", "${outdir}/${hostname}.${var}.year.png"); } print HTML2 "
";