munin: Rename and duplicate hpasmcli2 plugin.
authorMatthijs Kooijman <matthijs@stdin.nl>
Tue, 4 May 2010 20:50:42 +0000 (22:50 +0200)
committerMatthijs Kooijman <matthijs@stdin.nl>
Tue, 4 May 2010 21:01:44 +0000 (23:01 +0200)
It now covers both fans and temps.

etc/munin/plugin-conf.d/hpasmcli
etc/munin/plugins/hpasmcli2 [deleted file]
etc/munin/plugins/hpasmcli2_fans [new file with mode: 0755]
etc/munin/plugins/hpasmcli2_temp [new symlink]

index f3e7c254ec44113cbb2948e805e71bb908d6a5ab..38f2a37b6ddbef426324e5a904be19e561e6ba4e 100644 (file)
@@ -1,2 +1,2 @@
-[hpasmcli2]
+[hpasmcli2*]
 user root
diff --git a/etc/munin/plugins/hpasmcli2 b/etc/munin/plugins/hpasmcli2
deleted file mode 100755 (executable)
index c768cb7..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-#! /usr/bin/perl -w
-#
-# Plugin to monitor Proliant server health status using hpasmcli.
-#
-# Config variables:
-#   user root       -- requrired by hpasmcli
-#   env.hpasmcli    -- path to hpasmcli executable (optional)
-#   env.degree      -- Unit of temperatures (C or F / default value is C)
-#
-#
-# Author: Tsuyoshi Wada <mail@tuyo.jp>
-#
-# v1.0  2007/12/08 - First version
-#
-# Copyright (c) 2007 Tsuyoshi Wada
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1. Redistributions of source code must retain the above copyright
-#    notice, this list of conditions and the following disclaimer.
-# 2. Redistributions in binary form must reproduce the above copyright
-#    notice, this list of conditions and the following disclaimer in the
-#    documentation and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-# Magic markers
-#%# family=contrib
-#%# capabilities=autoconf suggest
-
-use strict;
-
-my $hpasmcli = exists $ENV{hpasmcli} ? $ENV{hpasmcli} : undef;
-$hpasmcli = `which hpasmcli` unless $hpasmcli;
-chomp $hpasmcli;
-$hpasmcli = undef unless -x $hpasmcli;
-my @dirs = qw(/bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin);
-until ($hpasmcli or @dirs == 0) {
-    my $dir = shift @dirs;
-    my $path = $dir.'/hpasmcli';
-    $hpasmcli = $path if -x $path;
-}
-my $degree = exists $ENV{degree} ? $ENV{degree} : 'C';
-my $deg_name = $degree eq 'C' ? "Celsius": "Fahrenheit";
-
-if (defined($ARGV[0])) {
-    if ($ARGV[0] eq 'autoconf') {
-        if ($hpasmcli and -x $hpasmcli) {
-            my @chk_result = `$hpasmcli -s \"help\"`;
-            if ($? eq "0") {
-                print "yes\n";
-                exit 0;
-            } else {
-                my $reason = 'Unknown error';
-                foreach my $line (@chk_result) {
-                    if ($line =~ /^ERROR/i) {
-                        chomp($line);
-                        $reason = $line;
-                        last;
-                    }
-                }
-                print "no ($reason)\n";
-                exit 1;
-            }
-        } else {
-            print "no (hpasmcli not found)\n";
-            exit 1;
-        }
-    } elsif ($ARGV[0] eq 'suggest') {
-        print "temp\nfans\n";
-        exit 0;
-    }
-}
-
-$0 =~ /hpasmcli2_(.+)*$/;
-my $show_target = $1;
-my @show_result = `$hpasmcli -s \"show $show_target\"`;
-my %output;
-
-if (defined($show_target) and $show_target eq 'temp') {
-    foreach my $line (@show_result) {
-        if ($line =~ /^#/) {
-            $line =~ s/\s+/ /g;
-            $line =~ s/^\s//g;
-            my ($sensor, $loc, $temp, $threshold) = split(/\s/, $line);
-            next if ($temp eq "-");
-            $loc =~ s/\/|#//g;
-            $temp = $degree eq 'C' ? (split(/\//, $temp))[0] : (split(/\//, $temp))[1];
-            $temp =~ s/C|F//g;
-            $threshold = $degree eq 'C' ? (split(/\//, $threshold))[0] : (split(/\//, $threshold))[1];
-            $threshold =~ s/C|F//g;
-            $sensor =~s/#//g;
-            $output{$sensor} = {
-                'location'  => lc($loc),
-                'temp'      => $temp,
-                'threshold' => $threshold
-            };
-        }
-    }
-    if (defined($ARGV[0]) and $ARGV[0] eq 'config') {
-        print "graph_title hpasm: Temperature\n";
-        print "graph_args --base 1000 -l 0\n";
-        print "graph_vlabel Degrees in $deg_name\n";
-        print "graph_category sensors\n";
-        print "graph_info This graph shows the temperatures as reported by hpasmcli.\n";
-        foreach my $key (sort keys %output) {
-            print "temp$key.label $output{$key}->{'location'}\n";
-            print "temp$key.warning " . ($output{$key}->{'threshold'} * 0.75) . "\n";
-            print "temp$key.critical $output{$key}->{'threshold'}\n";
-        }
-    } else {
-        foreach my $key (sort keys %output) {
-            print "temp$key.value $output{$key}->{'temp'}\n";
-        }
-    }
-} elsif (defined($show_target) and $show_target eq 'fans') {
-    foreach my $line (@show_result) {
-        if ($line =~ /^#/) {
-            $line =~ s/\s+/ /g;
-            $line =~ s/^\s//g;
-            my ($fan, $loc, $present, $speed, $rate, $redundant, $partner, $pluggable) = split(/\s/, $line);
-            next if ($present ne "Yes");
-            $loc =~ s/\/|#//g;
-            $rate =~ s/\%//g;
-            my $threshold = '100';
-            $fan =~s/#//g;
-            $output{$fan} = {
-                'location'  => lc($loc),
-                'rate'      => $rate,
-                'threshold' => $threshold
-            };
-        }
-    }
-    if (defined($ARGV[0]) and $ARGV[0] eq 'config') {
-        print "graph_title hpasm: Fans\n";
-        print "graph_args --base 1000 -l 0\n";
-        print "graph_vlabel of max (%)\n";
-        print "graph_category sensors\n";
-        print "graph_info This graph shows the info of fans as reported by hpasmcli.\n";
-        foreach my $key (sort keys %output) {
-            print "fan$key.label FAN$key $output{$key}->{'location'}\n";
-            print "fan$key.warning " . ($output{$key}->{'threshold'} * 0.75) . "\n";
-            print "fan$key.critical $output{$key}->{'threshold'}\n";
-        }
-    } else {
-        foreach my $key (sort keys %output) {
-            print "fan$key.value $output{$key}->{'rate'}\n";
-        }
-    }
-} else {
-    die "Unknown target specified ($show_target)\n";
-}
-
-exit 0;
diff --git a/etc/munin/plugins/hpasmcli2_fans b/etc/munin/plugins/hpasmcli2_fans
new file mode 100755 (executable)
index 0000000..c768cb7
--- /dev/null
@@ -0,0 +1,165 @@
+#! /usr/bin/perl -w
+#
+# Plugin to monitor Proliant server health status using hpasmcli.
+#
+# Config variables:
+#   user root       -- requrired by hpasmcli
+#   env.hpasmcli    -- path to hpasmcli executable (optional)
+#   env.degree      -- Unit of temperatures (C or F / default value is C)
+#
+#
+# Author: Tsuyoshi Wada <mail@tuyo.jp>
+#
+# v1.0  2007/12/08 - First version
+#
+# Copyright (c) 2007 Tsuyoshi Wada
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+# 2. Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Magic markers
+#%# family=contrib
+#%# capabilities=autoconf suggest
+
+use strict;
+
+my $hpasmcli = exists $ENV{hpasmcli} ? $ENV{hpasmcli} : undef;
+$hpasmcli = `which hpasmcli` unless $hpasmcli;
+chomp $hpasmcli;
+$hpasmcli = undef unless -x $hpasmcli;
+my @dirs = qw(/bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin);
+until ($hpasmcli or @dirs == 0) {
+    my $dir = shift @dirs;
+    my $path = $dir.'/hpasmcli';
+    $hpasmcli = $path if -x $path;
+}
+my $degree = exists $ENV{degree} ? $ENV{degree} : 'C';
+my $deg_name = $degree eq 'C' ? "Celsius": "Fahrenheit";
+
+if (defined($ARGV[0])) {
+    if ($ARGV[0] eq 'autoconf') {
+        if ($hpasmcli and -x $hpasmcli) {
+            my @chk_result = `$hpasmcli -s \"help\"`;
+            if ($? eq "0") {
+                print "yes\n";
+                exit 0;
+            } else {
+                my $reason = 'Unknown error';
+                foreach my $line (@chk_result) {
+                    if ($line =~ /^ERROR/i) {
+                        chomp($line);
+                        $reason = $line;
+                        last;
+                    }
+                }
+                print "no ($reason)\n";
+                exit 1;
+            }
+        } else {
+            print "no (hpasmcli not found)\n";
+            exit 1;
+        }
+    } elsif ($ARGV[0] eq 'suggest') {
+        print "temp\nfans\n";
+        exit 0;
+    }
+}
+
+$0 =~ /hpasmcli2_(.+)*$/;
+my $show_target = $1;
+my @show_result = `$hpasmcli -s \"show $show_target\"`;
+my %output;
+
+if (defined($show_target) and $show_target eq 'temp') {
+    foreach my $line (@show_result) {
+        if ($line =~ /^#/) {
+            $line =~ s/\s+/ /g;
+            $line =~ s/^\s//g;
+            my ($sensor, $loc, $temp, $threshold) = split(/\s/, $line);
+            next if ($temp eq "-");
+            $loc =~ s/\/|#//g;
+            $temp = $degree eq 'C' ? (split(/\//, $temp))[0] : (split(/\//, $temp))[1];
+            $temp =~ s/C|F//g;
+            $threshold = $degree eq 'C' ? (split(/\//, $threshold))[0] : (split(/\//, $threshold))[1];
+            $threshold =~ s/C|F//g;
+            $sensor =~s/#//g;
+            $output{$sensor} = {
+                'location'  => lc($loc),
+                'temp'      => $temp,
+                'threshold' => $threshold
+            };
+        }
+    }
+    if (defined($ARGV[0]) and $ARGV[0] eq 'config') {
+        print "graph_title hpasm: Temperature\n";
+        print "graph_args --base 1000 -l 0\n";
+        print "graph_vlabel Degrees in $deg_name\n";
+        print "graph_category sensors\n";
+        print "graph_info This graph shows the temperatures as reported by hpasmcli.\n";
+        foreach my $key (sort keys %output) {
+            print "temp$key.label $output{$key}->{'location'}\n";
+            print "temp$key.warning " . ($output{$key}->{'threshold'} * 0.75) . "\n";
+            print "temp$key.critical $output{$key}->{'threshold'}\n";
+        }
+    } else {
+        foreach my $key (sort keys %output) {
+            print "temp$key.value $output{$key}->{'temp'}\n";
+        }
+    }
+} elsif (defined($show_target) and $show_target eq 'fans') {
+    foreach my $line (@show_result) {
+        if ($line =~ /^#/) {
+            $line =~ s/\s+/ /g;
+            $line =~ s/^\s//g;
+            my ($fan, $loc, $present, $speed, $rate, $redundant, $partner, $pluggable) = split(/\s/, $line);
+            next if ($present ne "Yes");
+            $loc =~ s/\/|#//g;
+            $rate =~ s/\%//g;
+            my $threshold = '100';
+            $fan =~s/#//g;
+            $output{$fan} = {
+                'location'  => lc($loc),
+                'rate'      => $rate,
+                'threshold' => $threshold
+            };
+        }
+    }
+    if (defined($ARGV[0]) and $ARGV[0] eq 'config') {
+        print "graph_title hpasm: Fans\n";
+        print "graph_args --base 1000 -l 0\n";
+        print "graph_vlabel of max (%)\n";
+        print "graph_category sensors\n";
+        print "graph_info This graph shows the info of fans as reported by hpasmcli.\n";
+        foreach my $key (sort keys %output) {
+            print "fan$key.label FAN$key $output{$key}->{'location'}\n";
+            print "fan$key.warning " . ($output{$key}->{'threshold'} * 0.75) . "\n";
+            print "fan$key.critical $output{$key}->{'threshold'}\n";
+        }
+    } else {
+        foreach my $key (sort keys %output) {
+            print "fan$key.value $output{$key}->{'rate'}\n";
+        }
+    }
+} else {
+    die "Unknown target specified ($show_target)\n";
+}
+
+exit 0;
diff --git a/etc/munin/plugins/hpasmcli2_temp b/etc/munin/plugins/hpasmcli2_temp
new file mode 120000 (symlink)
index 0000000..3fc4052
--- /dev/null
@@ -0,0 +1 @@
+hpasmcli2_fans
\ No newline at end of file