1
0
Fork 0
mirror of https://github.com/munin-monitoring/contrib.git synced 2025-07-24 18:07:20 +00:00

Category Tree: Reduce number of categories

sphinx -> search
unicorn -> webserver
moved some plugins to other dirs to get better seconde level heading
This commit is contained in:
dipohl 2017-02-23 02:22:08 +01:00
parent 444c7939de
commit e08a6448ce
20 changed files with 11 additions and 11 deletions

165
plugins/hp/hpasmcli2_ Executable file
View file

@ -0,0 +1,165 @@
#!/usr/bin/env 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(/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;

138
plugins/hp/snmp__hp_temp Executable file
View file

@ -0,0 +1,138 @@
#!/usr/bin/perl -w
#
# Copyright (C) 2006 Lars Strand
#
# Munin-plugin to monitor temperature on HP-servers.
# Uses SNMP, and needs hpasmd.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; version 2 dated June,
# 1991.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
#
# $Log$
#
#
#
#%# family=snmpauto
#%# capabilities=snmpconf
use strict;
use Net::SNMP;
my $DEBUG = 0;
my $MAXLABEL = 20;
my $host = $ENV{host} || undef;
my $port = $ENV{port} || 161;
my $community = $ENV{community} || "public";
# Taken from CPQHLTH-MIB.mib
my %locations = (
1 => "other",
2 => "unknown",
3 => "system",
4 => "systemBoard",
5 => "ioBoard",
6 => "cpu",
7 => "memory",
8 => "storage",
9 => "removableMedia",
10 => "powerSupply",
11 => "ambient",
12 => "chassis",
13 => "bridgeCard"
);
#my $response;
if (defined $ARGV[0] and $ARGV[0] eq "snmpconf")
{
print "index 1.3.6.1.4.1.232.6.2.6.8.1.\n";
print "require 1.3.6.1.4.1.232.6.2.6.8.1.4.1.1. [1-4]\n";
exit 0;
}
if ($0 =~ /^(?:|.*\/)snmp_([^_]+)_HP_temp$/)
{
$host = $1;
if ($host =~ /^([^:]+):(\d+)$/)
{
$host = $1;
$port = $2;
}
}
elsif (!defined($host))
{
print "# Debug: $0 -- $1\n" if $DEBUG;
die "# Error: couldn't understand what I'm supposed to monitor.";
}
# Sensor locations
my $cpqHeTemperatureLocale = "1.3.6.1.4.1.232.6.2.6.8.1.3.1.";
# Temperatures
my $cpqHeTemperatureCelsius = "1.3.6.1.4.1.232.6.2.6.8.1.4.1.";
# Temperatures thresholds
my $cpqHeTemperatureThreshold = "1.3.6.1.4.1.232.6.2.6.8.1.5.1.";
my ($session, $error) = Net::SNMP->session(
-hostname => $host,
-community => $community,
-port => $port
);
if (!defined ($session)) {
die "Croaking: $error";
}
# Fetch the values.
my $temp_locales = $session->get_table($cpqHeTemperatureLocale);
if (!defined ($temp_locales)) {
die "Croaking: $error";
}
my @i = ();
if (defined $ARGV[0] and $ARGV[0] eq "config") {
#print "host_name $host\n";
print "graph_title Temperature (in C)\n";
print "graph_category sensors\n";
print "graph_args --upper-limit 100 -l 0\n";
print "graph_vlabel C\n";
print "graph_info This graph shows the temperatures on a HP server.\n";
while (my ($oid, $loc_id) = each (%$temp_locales)) {
@i = split(/\./, $oid);
my $t = $session->get_request($cpqHeTemperatureThreshold . $i[-1]);
while (my ($ooid, $threshold) = each(%$t)) {
print "$locations{$loc_id}$i[-1].label $locations{$loc_id}\n";
print "$locations{$loc_id}$i[-1].info Temperature sensor on $locations{$loc_id}\n";
print "$locations{$loc_id}$i[-1].critical $threshold\n";
}
}
exit 0;
}
# Fetch values
while (my ($oid, $loc_id) = each (%$temp_locales)) {
@i = split(/\./, $oid);
my $t = $session->get_request($cpqHeTemperatureCelsius . $i[-1]);
while (my ($ooid, $temperature) = each(%$t)) {
print "$locations{$loc_id}$i[-1].value $temperature\n";
}
}