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

Cleanup APC UPS plugins using SNMP.

Remove the plugins using snmpwalk to produce their results, as there
are three different, Perl-based implementations.

Of these, one might not work because it uses net-snmp and thus rely on
the presence of some MIB file which might not be present.

None of the plugins use Munin::SNMP and none uses multigraph
capabilities.
This commit is contained in:
Diego Elio Pettenò 2012-08-28 16:37:19 -07:00
parent 29da235be1
commit a989e8ce14
6 changed files with 0 additions and 99 deletions

316
plugins/snmp/snmp__apc_ups3_ Executable file
View file

@ -0,0 +1,316 @@
#!/usr/bin/perl
#
# Copyright (C) 2008 Gorlow Maxim [Sheridan]
# Copyright (C) 2009 Andrey Yakovlev [Freedom]
#
# 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.
#
# apc_host_snmp_volt - IO voltage (volt)
# apc_host_snmp_freq - IO frequency (hz)
# apc_host_snmp_status - UPS status (online, off....)
# apc_host_snmp_temp - Temperature (c)
# apc_host_snmp_load - UPS and Battery load (%)
# apc_host_snmp_curr - Current (ampers)
#
#%# family=snmpauto
#
use strict;
no strict 'refs';
my $host = $ENV{host} || undef;
my $community = $ENV{community} || "public";
my $type = "volt";
my $response;
if ($0 =~ /^(?:|.*\/)apc_([^_]*)_snmp_(.+)$/)
{
$host = $1 until ($1 eq "");
$type = $2;
if ($host =~ /^([^:]+):(\d+)$/)
{
$host = $1;
7 #$port = $2;
}
}
elsif (!defined($host)) {
die "# Error: couldn't understand what I'm supposed to monitor."; }
my @snmpParam = ($community,$host);
my @oidsList;
my @modelList = ('1.3.6.1.4.1.318.1.1.1.1.1.1.0','1.3.6.1.4.1.318.1.1.1.1.2.3.0','1.3.6.1.4.1.318.1.1.1.2.2.3.0');
if ($type eq "volt")
{
@oidsList = ('1.3.6.1.4.1.318.1.1.1.4.2.1.0',
'1.3.6.1.4.1.318.1.1.1.3.2.1.0',
'1.3.6.1.4.1.318.1.1.1.3.2.2.0',
'1.3.6.1.4.1.318.1.1.1.3.2.3.0');
}
elsif ($type eq "freq")
{
@oidsList = ['upsAdvOutputFrequency'],
['upsAdvInputFrequency'];
}
elsif ($type eq "status")
{
@oidsList = ('1.3.6.1.4.1.318.1.1.1.4.1.1.0 ');
}
elsif ($type eq "temp")
{
@oidsList = ('1.3.6.1.4.1.318.1.1.1.2.2.2.0',
'1.3.6.1.4.1.318.1.1.10.2.3.2.1.4.1');
}
elsif ($type eq "load")
{
@oidsList = ('1.3.6.1.4.1.318.1.1.1.4.2.3.0',
'1.3.6.1.4.1.318.1.1.1.2.2.1.0');
}
elsif ($type eq "curr")
{
@oidsList = ('upsAdvOutputCurrent');
}
#if (defined $ARGV[0] and $ARGV[0] eq "snmpconf")
#{}
if ($ARGV[0] and $ARGV[0] eq "config")
{
my $model;
my $vLabel;
my $hLabel;
my $graph_args;
if ($type eq "volt")
{
$vLabel = "Voltage";
$hLabel = "IO Voltage";
print "graph_order out in inmax inmin\n";
print "in.label Input\n";
print "in.type GAUGE\n";
print "in.info Input voltage.\n";
print "in.colour FFCC99\n";
print "in.draw AREA\n";
print "out.label Output\n";
print "out.type GAUGE\n";
print "out.info Output voltage.\n";
print "out.colour 009BCC\n";
print "out.draw AREA\n";
print "inmax.label Input max\n";
print "inmax.type GAUGE\n";
print "inmax.info Input voltage maximum.\n";
print "inmax.colour FF0033\n";
print "inmax.draw LINE1\n";
print "inmin.label Input min\n";
print "inmin.type GAUGE\n";
print "inmin.info Input voltage minimum.\n";
print "inmin.colour 66FF00\n";
print "inmin.draw LINE1\n";
}
elsif ($type eq "freq")
{
$vLabel = "Frequency";
$hLabel = "IO Frequency";
print "graph_order in out\n";
print "out.label Output\n";
print "out.type GAUGE\n";
print "out.info Output frequency.\n";
print "out.draw LINE2\n";
print "in.label Input\n";
print "in.type GAUGE\n";
print "in.info Input frequency.\n";
print "in.draw LINE2\n";
}
elsif ($type eq "status")
{
$vLabel = "Status";
$hLabel = "Status";
print "state.label Status\n";
print "state.type GAUGE\n";
print "state.draw AREA\n";
print "state.min 1\n";
print "state.max 12\n";
print "unknown.label Unknown\n";
print "unknown.type GAUGE\n";
print "unknown.draw LINE3\n";
print "onLine.label Online\n";
print "onLine.type GAUGE\n";
print "onLine.draw LINE4\n";
print "onLine.min 0\n";
print "onLine.max 1\n";
print "onLine.warning 1:\n";
print "onBattery.label On Battery\n";
print "onBattery.type GAUGE\n";
print "onBattery.draw LINE4\n";
print "onBattery.min 0\n";
print "onBattery.max 1\n";
print "softwareBypass.label Software Bypass\n";
print "softwareBypass.type GAUGE\n";
print "softwareBypass.draw LINE3\n";
print "off.label Off\n";
print "off.type GAUGE\n";
print "off.draw LINE3\n";
print "rebooting.label Rebooting\n";
print "rebooting.type GAUGE\n";
print "rebooting.draw LINE3\n";
print "switchedBypass.label Switched Bypass\n";
print "switchedBypass.type GAUGE\n";
print "switchedBypass.draw LINE3\n";
print "hardwareFailureBypass.label HW Failure Bypass\n";
print "hardwareFailureBypass.type GAUGE\n";
print "hardwareFailureBypass.draw LINE3\n";
}
elsif ($type eq "temp")
{
$vLabel = "Temperature, C";
$hLabel = "Temperature";
$graph_args = "--upper-limit 35 -l 15";
print "graph_order batt sens1\n";
print "batt.label Battery temperature\n";
print "batt.type GAUGE\n";
print "batt.info Battery temperature.\n";
print "batt.draw LINE2\n";
print "batt.warning 15:30\n";
print "sens1.label Sensor temperature\n";
print "sens1.type GAUGE\n";
print "sens1.info Sensor temperature.\n";
print "sens1.draw LINE2\n";
print "sens1.warning 15:30\n";
print "sens1.critical 10:40\n";
}
elsif ($type eq "load")
{
$vLabel = "Percent";
$hLabel = "UPS load and Batt. capacity ";
$graph_args = "--upper-limit 110 -l 0"; # --rigid
print "graph_order load bcap\n";
print "load.label UPS load\n";
print "load.type GAUGE\n";
print "load.info UPS load.\n";
print "load.draw AREA\n";
print "load.warning 85\n";
print "load.critical 95\n";
print "bcap.label Battery capacity\n";
print "bcap.type GAUGE\n";
print "bcap.info Battery capacity.\n";
print "bcap.draw LINE2\n";
print "bcap.warning 20:\n";
print "bcap.critical 10:\n";
}
elsif ($type eq "curr")
{
$vLabel = "Ampers";
$hLabel = "Current";
print "out.label Output\n";
print "out.type GAUGE\n";
print "out.info Output current\n";
print "out.draw LINE2\n";
}
## common part
print "host_name $host\n" unless $host eq 'localhost';
my @response = getSnmpValueArr (\@snmpParam,\@modelList);
$response[0] =~ s/[\" ]//g; # Ditch the quotes.
$response[1] =~ s/[\" ]//g;
my $rest = $response[2] /6000;
$model = "$response[0] [$response[1]] ";
print "graph_title $hLabel, $response[0]\n";
print "graph_args --base 1000 $graph_args\n";
print "graph_vlabel $vLabel\n";
print "graph_category Ups\n";
print "graph_info This graph shows the $hLabel ($vLabel) of $model <br> Onbattery remaining runtime <b>$rest</b> minutes.\n";
#all ok
exit 0;
}
# Get results
my @response = getSnmpValueArr (\@snmpParam,\@oidsList);
if ($type eq "volt")
{
print "out.value $response[0]\n";
print "in.value $response[1]\n";
print "inmax.value $response[2]\n";
print "inmin.value $response[3]\n";
}
elsif ($type eq "freq")
{
print "out.value $response[0]\n";
print "in.value $response[1]\n";
}
elsif ($type eq "status")
{
my $unknown = $response[0]==1 || 0;
my $onLine = $response[0]==2 || 0;
my $onBattery = $response[0]==3 || 0;
my $softwareBypass = $response[0]==6 || 0;
my $off = $response[0]==7 || 0;
my $rebooting = $response[0]==8 || 0;
my $switchedBypass = $response[0]==9 || 0;
my $hardwareFailureBypass = $response[0]==10 || 0;
print "state.value $response[0]\n";
print "unknown.value $unknown\n";
print "onLine.value $onLine\n";
print "onBattery.value $onBattery\n";
print "softwareBypass.value $softwareBypass\n";
print "off.value $off\n";
print "rebooting.value $rebooting\n";
print "switchedBypass.value $switchedBypass\n";
print "hardwareFailureBypass.value $hardwareFailureBypass\n";
}
elsif ($type eq "temp")
{
print "batt.value $response[0]\n";
print "sens1.value $response[1]\n";
}
elsif ($type eq "load")
{
print "load.value $response[0]\n";
print "bcap.value $response[1]\n";
}
elsif ($type eq "curr")
{
print "out.value $response[0]\n";
}
sub getSnmpValueArr
{
my ($param, $oidlist ) = @_;
my @result;
foreach my $oid (@$oidlist) {
push ( @result, getSnmpValue($param,$oid) );
}
chomp @result;
return @result;
}
#
# (\(community,IP),OID)
sub getSnmpValue
{
my ($param, $oid) = @_;
my ($comm, $ip) = @$param;
return `/usr/local/bin/bsnmpget -n -o quiet -s ${comm}\@${ip} -v 1 $oid`;
}
__END__

View file

@ -1,36 +0,0 @@
#!/bin/sh
#
# Plugin to monitor battery from UPS APC 9619
# 2009/04/10 12:27:02 radar AT aol DOT pl
#
# ln -s /usr/share/munin/plugins/snmp__ups_battery /etc/munin/plugins/snmp_UPS.IP_ups_battery
#
# Magic markers (optional - only used by munin-config and some installation scripts):
#%# family=contrib
UPSHOST=$(basename $0 | awk -F'_|_' '{print $2}')
if [ "$1" = "config" ]; then
UPSMODEL=$(snmpwalk -v 2c -c public $UPSHOST .1.3.6.1.4.1.318.1.1.1.1.1.1.0 | awk -F'"|"' '{print $2}')
echo "graph_title $UPSMODEL - Battery"
echo "graph_args --base 1000 -l 0 -u 100"
echo "graph_vlabel %"
echo "graph_scale no"
echo "graph_category sensors"
echo "graph_info This graph shows the battery capacity/load read from $UPSMODEL"
echo "batterycapacity.label Battery Capacity"
echo "batterycapacity.type GAUGE"
echo "batterycapacity.draw LINE3"
echo "batterycapacity.info Battery Capacity"
echo "batterycapacity.colour ff0000"
echo "batteryload.label Battery Load"
echo "batteryload.type GAUGE"
echo "batteryload.draw AREA"
echo "batteryload.info Battery Load"
exit 0
fi
echo -n "batterycapacity.value "
snmpwalk -v 2c -c public $UPSHOST .1.3.6.1.4.1.318.1.1.1.2.2.1.0 | awk '{print $NF}'
echo -n "batteryload.value "
snmpwalk -v 2c -c public $UPSHOST .1.3.6.1.4.1.318.1.1.1.4.2.3.0 | awk '{print $NF}'

View file

@ -1,29 +0,0 @@
#!/bin/sh
#
# Plugin to monitor temperature from UPS APC 9619
# 2009/04/10 12:27:02 radar AT aol DOT pl
#
# ln -s /usr/share/munin/plugins/snmp__ups_temp /etc/munin/plugins/snmp_UPS.IP_ups_temp
#
# Magic markers (optional - only used by munin-config and some installation scripts):
#%# family=contrib
UPSHOST=$(basename $0 | awk -F'_|_' '{print $2}')
if [ "$1" = "config" ]; then
UPSMODEL=$(snmpwalk -v 2c -c public $UPSHOST .1.3.6.1.4.1.318.1.1.1.1.1.1.0 | awk -F'"|"' '{print $2}')
echo "graph_title $UPSMODEL- Temperature"
echo "graph_args --base 1000 -l 0 "
echo "graph_vlabel degrees C"
echo "graph_category sensors"
echo "graph_info This graph shows the temperature read from $UPSMODEL"
echo "temperature.label sensor UPS"
echo "temperature.type GAUGE"
echo "temperature.info Temperature from sensor UPS."
echo "temperature.warning 25"
echo "temperature.critical 30"
exit 0
fi
echo -n "temperature.value "
snmpwalk -v 2c -c public $UPSHOST .1.3.6.1.4.1.318.1.1.10.2.3.2.1.4.1 | awk '{print $NF}'

View file

@ -1,34 +0,0 @@
#!/bin/sh
#
# Plugin to monitor voltage from UPS APC 9619
# 2009/04/10 12:27:02 radar AT aol DOT pl
#
# ln -s /usr/share/munin/plugins/snmp__ups_voltage /etc/munin/plugins/snmp_UPS.IP_ups_voltage
#
# Magic markers (optional - only used by munin-config and some installation scripts):
#%# family=contrib
UPSHOST=$(basename $0 | awk -F'_|_' '{print $2}')
if [ "$1" = "config" ]; then
UPSMODEL=$(snmpwalk -v 2c -c public $UPSHOST .1.3.6.1.4.1.318.1.1.1.1.1.1.0 | awk -F'"|"' '{print $2}')
echo "graph_title $UPSMODEL - Voltage"
echo "graph_args --base 1000"
echo "graph_vlabel Voltage in (-) / out (+)"
echo "graph_category sensors"
echo "graph_info This graph shows the voltage read from $UPSMODEL"
echo "voltagein.label V"
echo "voltagein.type GAUGE"
echo "voltagein.info Voltage."
echo "voltagein.graph no"
echo "voltageout.label V"
echo "voltageout.type GAUGE"
echo "voltageout.info Voltage."
echo "voltageout.negative voltagein"
exit 0
fi
echo -n "voltagein.value "
snmpwalk -v 2c -c public $UPSHOST .1.3.6.1.4.1.318.1.1.1.3.2.1.0 | awk '{print $NF}'
echo -n "voltageout.value "
snmpwalk -v 2c -c public $UPSHOST .1.3.6.1.4.1.318.1.1.1.4.2.1.0 | awk '{print $NF}'