LinHES Forums http://forum.linhes.org/ |
|
combine MB/CPU and HDD temps in one rrd graph http://forum.linhes.org/viewtopic.php?f=6&t=18644 |
Page 1 of 1 |
Author: | graysky [ Fri Jul 25, 2008 6:21 pm ] |
Post subject: | combine MB/CPU and HDD temps in one rrd graph |
Can someone with RRD experience help me combine my MB, CPU and HDD temp into one graph? I'm just not well versed in these rrd files to save my life. I'm thinking that some how, they need to combined into a single rrd_combined.pl and have the graph output show all 3 on the same axis. rrd_MBtemp.pl Code: #!/usr/bin/perl # # rrd_MBtemp.pl # Motherboard Temperature data collection routine for KnoppMyth # ######################################################################## # Configuration: my $dbf = 'MBtemp'; my $configfile = '/etc/rrd.config'; ######################################################################## use RRDs; if (! -d "/myth") { $configfile = "./D_rrd.config"; } # DEBUG do $configfile; sub create { # $_[0] = filename if (! -e "$log/$_[0].rrd") { print "Create db for $_[0] => $log/$_[0].rrd\n"; RRDs::create( "$log/$_[0].rrd", "-s 300", "DS:mbt1:GAUGE:600:0:U", "DS:mbt2:GAUGE:600:0:U", "DS:mbt3:GAUGE:600:0:U", "RRA:AVERAGE:0.5:1:576", "RRA:AVERAGE:0.5:6:672", "RRA:AVERAGE:0.5:24:732", "RRA:AVERAGE:0.5:144:1460"); $ERROR = RRDs::error; print "Error: RRDs::create failed for '$_[0]' : $ERROR\n" if $ERROR; } } my ($mbt1, $mbt2); sub gather { $mbt1 = `$MBT_prog | grep "M/B Temp" | cut -c 15-17`; $mbt2 = `$MBT_prog | grep "CPU Temp" | cut -c 15-17`; $mbt3 = `$MBT_prog|grep -i "aux temp" |cut -c 13-17`; $mbt1 =~ s/[\n ]//g; $mbt2 =~ s/[\n ]//g; $mbt3 =~ s/[\n ]//g; print "$dbf: motherboard $mbt1, CPU $mbt2, case $mbt3, °C\n"; # The motherboard sensor occasionally returns nonsense values. # This should keep the spurious peaks from roaching the graph... if ($mbt1 > 100.0) { $mbt1 = $mbt2 } print "$dbf: motherboard $mbt1, CPU $mbt2, case $mbt3, °C\n"; } sub update { # $_[0] = filename RRDs::update( "$log/$_[0].rrd", "-t", "mbt1:mbt2:mbt3", "N:$mbt1:$mbt2:$mbt3"); $ERROR = RRDs::error; print "Error: RRDs::update for '$_[0]' : $ERROR\n" if $ERROR; } #° sub graph { # $_[0] = time interval (ie: day...) # $_[1] = filename suffix. RRDs::graph( "$png/$dbf-$_[1].png", "-s -1$_[0]", "-aPNG", "-w $Gwd", "-h $Ght", "-E", "-l 20", "-M", "--color", "SHADEA$color", "--color", "SHADEB$color", "--color", "BACK$color", "-t Motherboard & CPU temperature degrees C :: $_[0]", "DEF:mbt1=$log/$dbf.rrd:mbt1:AVERAGE", "DEF:mbt2=$log/$dbf.rrd:mbt2:AVERAGE", "LINE1:mbt1$color_mbt1: MB temp\\:", "GPRINT:mbt1:MIN:Minimum\\: % 5.1lf", "GPRINT:mbt1:MAX:Maximum\\: % 5.1lf", "GPRINT:mbt1:AVERAGE:Average\\: % 5.1lf", "GPRINT:mbt1:LAST:Current\\: % 5.1lf °C\\j", "LINE1:mbt2$color_mbt2:CPU temp\\:", "GPRINT:mbt2:MIN:Minimum\\: % 5.1lf", "GPRINT:mbt2:MAX:Maximum\\: % 5.1lf", "GPRINT:mbt2:AVERAGE:Average\\: % 5.1lf", "GPRINT:mbt2:LAST:Current\\: % 5.1lf °C\\j"); $ERROR = RRDs::error; print "Error: RRDs::graph failed for '$_[0]' : $ERROR\n" if $ERROR; } ######################################################################## create "$dbf"; gather; update "$dbf"; graph 'day', 'Daily'; graph 'week', 'Weekly'; graph 'month', 'Monthly'; graph 'year', 'Yearly'; graph '2hour', '12hourly'; ######################################################################## # vim: sw=4 ts=8 # End rrd_HDtemp.pl Code: #!/usr/bin/perl
# # rrd_HDtemp.pl # Disk temperature data collection routine for KnoppMyth # ######################################################################## # Configuration: my $dbf = "HDtemp"; my $configfile = '/etc/rrd.config'; my @temps; ######################################################################## use RRDs; if (! -d "/myth") { $configfile = "./D_rrd.config"; } # DEBUG do $configfile; sub create { # $_[0] = filename if (! -e "$log/$_[0].rrd") { print "Create db for $_[0] => $log/$_[0].rrd\n"; push @args, "$log/$_[0].rrd"; push @args, "-s 300"; @devs = split /\s+/, $HDT_dev; for($i = 0; $i < scalar(@devs); $i++) { push @args, "DS:hdt" . ($i + 1) . ":GAUGE:600:0:U"; } push @args, "RRA:AVERAGE:0.5:1:576"; push @args, "RRA:AVERAGE:0.5:6:672"; push @args, "RRA:AVERAGE:0.5:24:732"; push @args, "RRA:AVERAGE:0.5:144:1460"; RRDs::create(@args); $ERROR = RRDs::error; print "Error: RRDs::create failed for '$_[0]' : $ERROR\n" if $ERROR; } } sub gather { my ($dev, $hdt1, $hdtT, $hdtD, $res); # device names in $_[0] $res = "$dbf:"; undef @temps; @devs = split /\s+/, $_[0]; foreach $_ (@devs) { $dev = "/dev/$_"; my $line = `/usr/sbin/hddtemp -q $dev`; chomp( $line ); my ( $devN, $devD, $devT ) = split( /\:\s+/, $line ); #print "HDtemp $_[0]: '$devN' '$devD' '$devT'\n"; my ( $dev1, $dev2 ) = split( /\s+or\s+/, $devT ); #print "HDtemp $_[0]: '$dev1' '$dev2'\n"; ( $hdt1, $hdtT ) = split( /\s+/, $dev1 ); #print "HDtemp $_[0]: '$hdt1' '$hdtT'\n"; if ($devN ne $dev) { $hdt1 = 0; $hdtT = '?'; $hdtD = ''; } else { $hdtD = $devD; } if ("$hdtT" eq "") {$hdt1 = "C"; } $out .= "$_: $hdt1, "; push @temps, $hdt1; } chop $out; # remove extra space chop $out; # remove extra comma print "$out\n"; } sub update { # $_[0] = filename my($str1, $str2); $str1 = ''; $str2 = 'N:'; for($i = 0; $i < scalar(@temps); $i++) { $str1 .= ("hdt" . ($i + 1) . ":"); $str2 .= ($temps[$i] . ":"); } chop $str1; # Get rid of last colon chop $str2; # Get rid of last colon RRDs::update("$log/$_[0].rrd", "-t", $str1, $str2); print "$str1\n$str2\n"; $ERROR = RRDs::error; print "Error: RRDs::update for '$_[0]' : $ERROR\n" if $ERROR; } sub graph { # $_[0] = time interval (ie: day...) # $_[1] = filename suffix. undef @args; @devs = split /\s+/, $HDT_dev; @args = ( "$png/$dbf-$_[1].png", "-s -1$_[0]", "-aPNG", "-w $Gwd", "-h $Ght", "-E", "-l 20", "-M", "--color", "SHADEA$color", "--color", "SHADEB$color", "--color", "BACK$color", "-t Disk temperature :: $_[0]"); for($i = 0; $i < scalar(@temps); $i++) { push @args, "DEF:hdt" . ($i + 1) . "=$log/$dbf.rrd:hdt" . ($i + 1) . ":AVERAGE"; push @args, "LINE1:hdt" . ($i+1) . "$HDT_colors[$i]: $devs[$i] degrees C\\:", "GPRINT:hdt" . ($i + 1) . ":MIN:Minimum\\: %.0lf", "GPRINT:hdt" . ($i + 1) . ":MAX:Maximum\\: %.0lf", "GPRINT:hdt" . ($i + 1) . ":AVERAGE:Average\\: %.2lf", "GPRINT:hdt" . ($i + 1) . ":LAST:Current\\: %.1lf\\j"; } RRDs::graph(@args); $ERROR = RRDs::error; print "Error: RRDs::graph failed for '$_[0]' : $ERROR\n" if $ERROR; } ######################################################################## create "$dbf"; gather "$HDT_dev"; update "$dbf"; graph 'day', 'Daily'; graph 'week', 'Weekly'; graph 'month', 'Monthly'; graph 'year', 'Yearly'; graph '2hour', '12hourly'; ######################################################################## # vim: sw=4 ts=8 # End |
Page 1 of 1 | All times are UTC - 6 hours |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |