mirror of
https://github.com/munin-monitoring/contrib.git
synced 2018-11-08 00:59:34 +01:00
remove nagios/icinga related code and use envirunment variables for configuration
This commit is contained in:
parent
eec9de90b3
commit
d7d422fa65
@ -1,9 +1,9 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
#==============================================================================#
|
#==============================================================================#
|
||||||
# #
|
# #
|
||||||
# Check the sensor status of HW Group Poseidon family. For more info refer to:#
|
# check status of sensor of HW Group Poseidon 3268. For more info refer to: #
|
||||||
# http://www.hw-group.com/products/poseidon/poseidon_3268_en.html #
|
# http://www.hw-group.com/products/poseidon/poseidon_3268_en.html #
|
||||||
# 2012 by Florian Lechner (flo-github@catbull.com) #
|
# 2012 by Florian Lechner #
|
||||||
# #
|
# #
|
||||||
#==============================================================================#
|
#==============================================================================#
|
||||||
# #
|
# #
|
||||||
@ -21,29 +21,11 @@
|
|||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
|
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
|
||||||
# #
|
# #
|
||||||
#==============================================================================#
|
#==============================================================================#
|
||||||
# #
|
|
||||||
# This plugin requires snmpget to work propperly #
|
|
||||||
# #
|
|
||||||
#==============================================================================#
|
|
||||||
|
|
||||||
# Munin autoconf and snmpautoconf magic
|
# Munin autoconf and snmpautoconf magic
|
||||||
#%# family=auto snmpauto contrib
|
#%# family=auto snmpauto contrib
|
||||||
#%# capabilities=snmpconf
|
#%# capabilities=snmpconf
|
||||||
|
|
||||||
#==============================================================================#
|
|
||||||
# Config Section #
|
|
||||||
#==============================================================================#
|
|
||||||
|
|
||||||
# SNMP Config
|
|
||||||
MIBS=":" # we don't use any configured MIBs so we don't
|
|
||||||
#+ have to deal with errors in the MIBs
|
|
||||||
SNMPVERSION="1" # as of firmware 3.1.5 only SNMPv1 is supported
|
|
||||||
SNMPCOMUNITY="public" # SNMP community string to read from the device
|
|
||||||
|
|
||||||
#==============================================================================#
|
|
||||||
# No configuration beyonde this line! #
|
|
||||||
#==============================================================================#
|
|
||||||
|
|
||||||
E_OK="0" # everything went allright
|
E_OK="0" # everything went allright
|
||||||
E_UNKNOWN="1" # "catch all" for otherwise unhandled errors
|
E_UNKNOWN="1" # "catch all" for otherwise unhandled errors
|
||||||
|
|
||||||
@ -51,10 +33,6 @@ E_ARG="81" # invalid argument
|
|||||||
E_USAGE="82" # wrong program name or arguments
|
E_USAGE="82" # wrong program name or arguments
|
||||||
E_SNMPGET="83" # error while executing the 'snmpget' utility
|
E_SNMPGET="83" # error while executing the 'snmpget' utility
|
||||||
|
|
||||||
E_ICINGA_OK="0" # Icinga exitcodes for states 'ok',
|
|
||||||
E_ICINGA_WARN="1" #+ 'warning', and
|
|
||||||
E_ICINGA_CRIT="2" #+ 'critical'
|
|
||||||
|
|
||||||
E_COMMANDNOTFOUND="127" # unable to locate binary
|
E_COMMANDNOTFOUND="127" # unable to locate binary
|
||||||
|
|
||||||
#==============================================================================#
|
#==============================================================================#
|
||||||
@ -96,23 +74,6 @@ IFS="
|
|||||||
|
|
||||||
#==============================================================================#
|
#==============================================================================#
|
||||||
|
|
||||||
# printIcingaStatus (sensorNumber)
|
|
||||||
# print status output for icinga/icinga
|
|
||||||
printIcingaStatus () {
|
|
||||||
_sensorNumber="$1"
|
|
||||||
getSensorData $_sensorNumber
|
|
||||||
_name="$sensorType$_sensorNumber" # long name
|
|
||||||
_value="$(($sensorValue/10)),$(($sensorValue%10))" # decimal rep.
|
|
||||||
|
|
||||||
if [ "$sensorState" = "$STATE_OK" ]; then
|
|
||||||
echo "$_name OK - $sensorName is $_value $sensorUnit."
|
|
||||||
return $E_ICINGA_OK
|
|
||||||
else
|
|
||||||
echo "$_name Critical - $sensorName is "$_value $sensorUnit"."
|
|
||||||
return $E_ICINGA_CRIT
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# printMuninConfig ()
|
# printMuninConfig ()
|
||||||
# print output for munin auto configuration
|
# print output for munin auto configuration
|
||||||
printMuninConfig () {
|
printMuninConfig () {
|
||||||
@ -228,7 +189,7 @@ snmpGet () {
|
|||||||
_longValue="`snmpget -O v\
|
_longValue="`snmpget -O v\
|
||||||
-m $MIBS\
|
-m $MIBS\
|
||||||
-v $SNMPVERSION\
|
-v $SNMPVERSION\
|
||||||
-c $SNMPCOMUNITY\
|
-c $SNMPCOMMUNITY\
|
||||||
$_host $_oid 2>/dev/null`"
|
$_host $_oid 2>/dev/null`"
|
||||||
|
|
||||||
_exitStatus="$?"
|
_exitStatus="$?"
|
||||||
@ -302,23 +263,11 @@ sanitize () {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# usage ([munin|icinga])
|
# usage ()
|
||||||
# print either specific usage for use as munin/icinga plugin or long usage
|
# print usage
|
||||||
usage () {
|
usage () {
|
||||||
case $1 in
|
echo "usage: snmp_<host>_poseidon-sensors [config|snmpconf]" 1>&2
|
||||||
munin) echo "usage: snmp_<host>_poseidon-sensors [config|snmpconf]" 1>&2
|
|
||||||
exit $E_USAGE
|
exit $E_USAGE
|
||||||
;;
|
|
||||||
icinga) echo "usage: check_snmp_poseidon <host-ip> <sensor#>" 1>&2
|
|
||||||
exit $E_USAGE
|
|
||||||
;;
|
|
||||||
*) echo "usage: check_snmp_poseidon <host-ip> <sensor#>
|
|
||||||
for nagios/icinga compatible output.
|
|
||||||
usage: snmp_<host>_poseidon-sensors [config|snmpconf]
|
|
||||||
for munin compatible output" 1>&2
|
|
||||||
exit $E_USAGE
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# err (ErrorMsg, Exitcode)
|
# err (ErrorMsg, Exitcode)
|
||||||
@ -341,6 +290,17 @@ err () {
|
|||||||
|
|
||||||
#==============================================================================#
|
#==============================================================================#
|
||||||
|
|
||||||
|
# SNMP Config
|
||||||
|
MIBS=":" # we don't use any configured MIBs so we don't
|
||||||
|
#+ have to deal with errors in the MIBs
|
||||||
|
if [ -z $SNMPVERSION ]; then
|
||||||
|
SNMPVERSION="1" # as of firmware 3.1.5 only SNMPv1 is supported
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z $SNMPCOMMUNITY ]; then
|
||||||
|
SNMPCOMMUNITY="public" # SNMP community string to read from the device
|
||||||
|
fi
|
||||||
|
|
||||||
# handle -h option
|
# handle -h option
|
||||||
while getopts ":h" opt; do
|
while getopts ":h" opt; do
|
||||||
case $opt in
|
case $opt in
|
||||||
@ -357,29 +317,13 @@ if [ ! -x `which snmpget` ]; then
|
|||||||
err "Fatal: unable to locate \'snmpget\'! Exiting..." $E_COMMANDNOTFOUND
|
err "Fatal: unable to locate \'snmpget\'! Exiting..." $E_COMMANDNOTFOUND
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# analyze how we have been called and...
|
# extract pluginname ...
|
||||||
myName="`basename "$0"`"
|
myName="`basename "$0" | cut -d "_" -f 1,3`"
|
||||||
|
|
||||||
hostAddr="`echo $myName | cut -d "_" -f 2`"
|
# ...and hostname
|
||||||
muninName="`echo $myName | cut -d "_" -f 1,3`"
|
hostAddr="`basename "$0" | cut -d "_" -f 2`"
|
||||||
icingaName="`echo $myName | cut -d "_" -f 1,2,3`"
|
|
||||||
|
|
||||||
# ...and behave like a munin/icinga plugin...
|
if [ "$myName" = "snmp_poseidon-sensors" ]; then
|
||||||
if [ "$icingaName" = "check_snmp_poseidon" ]; then
|
|
||||||
# IP address of the Poseidon device
|
|
||||||
hostAddr=`sanitize $1 || err
|
|
||||||
"Fatal: Invalid argument \"$1\"! Exiting..." $E_ARG`
|
|
||||||
# number of the sensor
|
|
||||||
sensorNr=`sanitize $2 || err
|
|
||||||
"Fatal: Invalid argument \"$2\"! Exiting..." $E_ARG`
|
|
||||||
if [[ -n ${sensorNr//[0-9]/} ]]; then err \
|
|
||||||
"Fatal: Invalid argument \"$sensorNr\"\! Exiting..." $E_ARG
|
|
||||||
fi
|
|
||||||
|
|
||||||
printIcingaStatus "$sensorNr"
|
|
||||||
exit $?
|
|
||||||
# ...or as a munin plugin
|
|
||||||
elif [ "$muninName" = "snmp_poseidon-sensors" ]; then
|
|
||||||
hostAddr=`sanitize $hostAddr || err \
|
hostAddr=`sanitize $hostAddr || err \
|
||||||
"Fatal: Invalid argument \"$hostAddr\"! Exiting..." $E_ARG`
|
"Fatal: Invalid argument \"$hostAddr\"! Exiting..." $E_ARG`
|
||||||
if [ -z "$hostAddr" ]; then
|
if [ -z "$hostAddr" ]; then
|
||||||
|
Loading…
Reference in New Issue
Block a user