Neue Befehle dem SNMP Handler hinzufügen

Es kommt natürlich immer mal vor, das man zusätzliche Werte in SNMP abfragen möchte, die nicht vorgesehen sind. So lassen sich alle möglichen Befehle ausführen und der Rückgabewert per SNMP im Netzwerk verteilen. Das hat den Vorteil das die üblichen Methoden von Nagios genutzt werden können.

Wollen wir zum Beispiel den freien Speicherplatz eines NAS Laufwerks per SNMP verteilen gehen wir wie folgt vor:

Zuerst erstellen wir ein Script der uns den Wert übermittelt:

#!/bin/sh

strpart=$1

if [ "$strpart" == "used" ]; then
 diskused=$(df | grep -o '/md1.*%' | grep -Eo '[0-9]+ [0-9]+ *[0-9]+%' | grep -Eo '^[0-9]+')
 echo $diskused
 exit 0

elif [ "$strpart" == "use" ]; then
 use=$(df | grep -o '/md1.*%' | grep -Eo '*[0-9]+%')
 echo $use
 exit 0

elif [ "$strpart" == "free" ]; then
 free=$(df | grep -o '/md1.*%' | grep -Eo '[0-9]+ *[0-9]+%' | grep -Eo '^[0-9]+')
 echo $free
 exit 0
else
 echo -e "Command not found.\n Use used,use or free" && exit "3"
fi
exit 0

Nun müssen wir dieses Script ausführbar machen (chmod +x ~/diskusage.sh). Um nun die Ergebnisse per SNMP bereitzustellen müssen wir zuerst die snmpd.conf bearbeiten. Hier fügen wir folgendes zusätzlich ein:

extend disk_use ~/diskusage.sh use
extend disk_used ~/diskusage.sh used
extend disk_free ~/diskusage.sh free

Ein Neustart des Dienstes (/etc/init.d/snmpd restart) bewirkt, dass die neu hinzugefügten Parameter unter NET-SNMP-EXTEND-MIB::nsExtendObjects verfügbar sind. Um die OID der jeweiligen Kommandos herauszufinden, genügt folgende Suche:

snmpget -v1 -One -c public localhost NET-SNMP-EXTEND-MIB::nsExtendOutputFull.\"disk_use\"

 

 

Dennis

Hallo zusammen, mein Name ist Dennis. Ich bin Geschäftsführer eines IT-Dienstleistungsunternehmen für den Mittelstand. In meiner Freizeit treibe ich gerne Sport und beschäftige mich mit allerlei Technik. Bei Fragen jeglicher Art könnt ihr einfach auf mich zukommen :)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.