SNMP extend

Möchte man das Ergebnis von eigenen Skripten dem Nagios bekannt machen, bietet sich SNMP an. Zumal wenn letzteres schon eingerichtet ist, um andere Systemwerte im Nagios abzufragen.

Die Zeile extend check_xyz "/usr/local/scripts/check_xyz.sh arg1 argn" in der Datei /etc/snmp/snmpd.conf macht das Sktipt dem SNMPD bekannt. Mit dem Befehl sudo service snmpd restart wird die geänderte Konfiguration eingelesen. Möchte man die Änderung testen, kann die Abfrage mit snmpwalk -v1 -c public localhost NET-SNMP-EXTEND-MIB::nsExtendObjects bei entsprechenden Rechten ausgeführt werden.

Erscheint innerhalb der SNMP-Meldungen „Permission denied“, kann das an einer unzureichenden SELinux-Konfiguration liegen. Der Befehl sudo setenforce 0 deaktiviert die Sperrung (bis sudo setenforce 1 oder ein Reboot ausgeführt wird). Kann das eigene Skript in diesem Zustand genutzt werden, müssen die SELinux-Policies angepasst werden.

Weitere Details im Red Had Deployment Guide unter „18.5.5. Extending Net-SNMP“.

Mit folgendem Mini-Skript als Nagios-Command kann auf dem Nagios-System die erste Ausgabezeile und der Exit-Code im Nagios-Service genutzt werden.

#!/bin/sh
 
# snmpwalk -v1 -c public localhost NET-SNMP-EXTEND-MIB::nsExtendObjects
 
if [ $# -ne 3 ]; then
   echo -n "Falscher Skriptaufruf. Korrekt: "
   echo "`basename $0` <HOSTNAME> <COMMUNITY> <SCRIPTNAME>"
   exit 99
fi
 
HOSTNAME=$1
COMMUNITY=$2
SCRIPTNAME=$3
 
SNMPCMD="/usr/bin/snmpget -OevqU -v1 -c $COMMUNITY $HOSTNAME"
 
OID_RESULT='NET-SNMP-EXTEND-MIB::nsExtendResult."SCRIPTNAME"'
SNMP_RESULT=`$SNMPCMD ${OID_RESULT/SCRIPTNAME/$SCRIPTNAME}`
 
OID_OUTPUT='NET-SNMP-EXTEND-MIB::nsExtendOutLine."SCRIPTNAME".1'
SNMP_OUTPUT=`$SNMPCMD ${OID_OUTPUT/SCRIPTNAME/$SCRIPTNAME}`
 
echo $SNMP_OUTPUT
 
exit $SNMP_RESULT

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.