View unanswered posts    View active topics

All times are UTC - 6 hours





Post new topic Reply to topic  [ 1 post ] 
Print view Previous topic   Next topic  
Author Message
Search for:
 Post subject: rrd_MBfan.pl
PostPosted: Mon Jul 30, 2007 9:22 pm 
Offline
Joined: Wed Jan 18, 2006 8:36 pm
Posts: 199
The version of rrd_MBfan.pl in R5F1 does not appear to work, however this one does. There are two items that may have to be changed, depending on your system:
Code:
my @dev = ('FAN0', 'FAN1', 'FAN2');
my @label = ("CPU Fan", "PS Fan", "Chip Fan");


If you only have two fans, remove the appropriate item from @dev and from @label to ignore that item. You may also need to change the order of the labels to get them to match your system.

If you have existing files you may need to erase them to get this working properly:
Code:
rm -f /myth/rrd/log/MBfan.rrd
rm -f /myth/rrd/png/MBfan-*.png


Code:
#!/usr/bin/perl
#
# Modified from Martin Pot's 2003 script at
# http://martybugs.net/linux/hddtemp.cgi
#
# Graphs motherboard fan speed using mbmon
# rrd_MBfan.pl

########################################################################
# Configuration:
# run mbmon -r -c 1 to see what temps your mobo supports, then change @dev
my @dev = ('FAN0', 'FAN1', 'FAN2');
my @label = ("CPU Fan", "PS Fan", "Chip Fan");
my $dbf = 'MBfan';
my @rdgs;
my $configfile = '/etc/rrd.config';
my @colors = ('#0000FF', '#00FF00', '#FF0000');
########################################################################
use RRDs;

if (! -d "/myth") { $configfile = "./D_rrd.config"; }   # DEBUG
do $configfile;

sub create {
        my $filename = shift;
        my @args;
        undef @args;
        if(! -e "$log/$filename.rrd") {
                print "Create db for $filename => $log/$filename.rrd\n";
                push @args, "$log/$filename.rrd";
                push @args, "-s 300";
                for(my $i = 0; $i < scalar(@dev); $i++) {
                       push @args, "DS:spd" . $i . ":GAUGE:600:0:10000";
                }
                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 '$filename' : $ERROR\n" if
 $ERROR;
        }
}

sub gather {
        my ($line, $r, @list);
        if(open P, "mbmon -r -c 1 |") {
                while($line = <P>) {
                        chomp $line;
                        foreach $r (@dev) {
                                next if($line !~ m/^$r/);
                                @list = split /\s*:\s*/, $line;
                                push @rdgs, $list[1];
                        }
                }
                close P;
        }
}

sub update {
        # $_[0] = filename
        my($str1, $str2);
        $str1 = '';
        $str2 = 'N:';
        for($i = 0; $i < scalar(@dev); $i++) {
                $str1 .= ("spd" . $i . ":");
                $str2 .= ($rdgs[$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;
    @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 Fan Speed:: $_[0]");
    for($i = 0; $i < scalar(@dev); $i++) {
        push @args, "DEF:spd" . $i . "=$log/$dbf.rrd:spd" . $i . ":AVERAGE";
        push @args, "LINE1:spd" . $i . "$colors[$i]: $label[$i] RPM\\:",
        "GPRINT:spd" . $i . ":MIN:Minimum\\: %.0lf",
        "GPRINT:spd" . $i . ":MAX:Maximum\\: %.0lf",
        "GPRINT:spd" . $i . ":AVERAGE:Average\\: %.2lf",
        "GPRINT:spd" . $i . ":LAST:Current\\: %.1lf\\j";
    }
    RRDs::graph(@args);
    $ERROR = RRDs::error;
    $ERROR = RRDs::error;
    print "Error: RRDs::graph failed for '$_[0]' : $ERROR\n" if $ERROR;
}
########################################################################
create "$dbf";
gather "$dev";
update "$dbf";
graph 'day',   'Daily';
graph 'week',  'Weekly';
graph 'month', 'Monthly';
graph 'year',  'Yearly';
########################################################################
# vim: sw=4 ts=8
# End


Top
 Profile  
 

Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 1 post ] 


All times are UTC - 6 hours




Who is online

Users browsing this forum: No registered users and 10 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Jump to:  
Powered by phpBB® Forum Software © phpBB Group

Theme Created By ceyhansuyu