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 |