Translations of this page:

check_snmp

SNMP (Simple Network Management Protocol)

Grundlegendes

SNMP ist ein Anfrage- und Antwort-Protokoll. Ein Management-System (Nagios) richtet eine Anfrage an einen Agenten. Der SNMP-Agent reagiert auf diese Frage mit einer Antwort, die mitteilt, ob die Anfrage erfolgreich beantwortet oder nicht bearbeitet werden konnte.

Ein spezieller Typ unaufgeforderter Antworten, die der Agent an ein Management-System, ohne vorher eine Anfrage seitens des Management-Systems bekommen zu haben, wird Traps genannt. Ein Trap ist nichts anderes als ein Ereignisbericht, der aussagt, dass der Agent ein unvorhergesehenes Ereignis entdeckt hat. Mehr dazu und wie SNMP-TrapTranslation eingerichtet wird, findet sich hier.

Das Plugin sollte unter /usr/local/nagios/libexec liegen, da es zu den Standard-Plugins für Nagios zählt.

Was muss alles installiert sein?

NET::SNMP ist zwingend notwendig, auf dem Nagios-Server und auf dem zu überprüfenden System. Unter Windows ist der SNMP Service per default installiert (wie er konfiguriert wird, weiter unten). Ob ihr euch das rpm net-snmp-5.1.1-2.i386.rpm herunter ladet oder es mit CPAN versucht, bleibt euch überlassen.

Kurzer Test ob SNMP Grundsätzlich auf beiden Systemen läuft wie folgt:

snmpwalk -v2c -c public Hostadresse system
Ergebnis:
SNMPv2-MIB::sysDescr.0 = STRING: Hardware: x86 Family 15 Model 2 Stepping 5 AT/AT COMPATIBLE - Software: Windows Version 5.2 (Build 3790 Multiprocessor Free)
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.311.1.1.3.1.2
SNMPv2-MIB::sysUpTime.0 = Timeticks: (525535581) 60 days, 19:49:15.81
SNMPv2-MIB::sysContact.0 = STRING: xxxxxx@xxx.at
SNMPv2-MIB::sysName.0 = STRING: AVLRBRWI16
SNMPv2-MIB::sysLocation.0 = STRING: VTG Systemtechnik
SNMPv2-MIB::sysServices.0 = INTEGER: 73 

Wenn ein solches oder ähnliches Ergebnis vorliegt, kann man davon ausgehen, dass SNMP funktioniert, also Nagios bekommt Antworten auf seine Fragen!

SNMPD Linux / Windows

Der SNMP Service bzw. Daemon muss richtig konfiguriert werden, um die SNMP Plugins richtig nützen zu können, aus Sicherheitsgründen wird nicht „Accept SNMP packets from any host“ aktiviert, sondern werden explizit die Server eingetragen, (per IP-Adresse, FQDN oder C-Name) die auch die Berechtigung bzw. die Aufgabe haben, requests an die remote Hosts zu stellen.

SNMP Community unter Linux findet man unter:

vi /etc/snmp/snmpd.conf

Bei Windows wie folgt:

  • rechtsklick auf Arbeitsplatz
  • Verwalten / Manage
  • unter Dienste / Services findet man den SNMP-Service:

Grundlegendes zu Abfragen

Abfragen können über die OID (eine Art Pfad zum Ergebnis [Node], die aus Ziffernkombinationen in Dot-Schreibweise besteht) oder über den für Menschen verständlicheren Namen getätigt werden.

snmpwalk –v2c –c Community Hostadresse 1.3.6.1.2.1.1

führt zum gleichen Ergebnis wie:

snmpwalk -v2c -c Community Hostadresse system

Hier nochmal eine kurze Beschreibung der ersten Stellen des Mibtrees:

1.3.6.1.2.1.1.2
1.3.6.1.2.1.1.sysObjectID
iso.org.dod.internet.mgmt.mib-2.1.2
iso.org.dod.internet.mgmt.mib-2.system.sysObjectID
iso(1).org(3).dod(6).internet(1).mgmt(2).mib-2(1).system(1).sysObjectID(2)

MIBs sind Textdokumente, die es dem SNMP-Check ermöglichen, die erhaltenen OIDs zu übersetzen. Die mitgelieferte MIB-II sollte für den normalen Gebrauch ausreichen, ich gehe also davon aus, dass hier nur mit dieser gearbeitet wird und keine extra MIBs installiert werden.

Der MIBtree als Grafik: mibtree.jpg

CHECK_SNMP

(check_snmp (nagios-plugins 1.4) 1.53)  nur SNMP 1 oder 3 möglich! Normalerweise unter /usr/local/nagios/libexec zu finden, verfügt auch dieses Check Plugin über eine Hilfeseite, die man mit folgendem Befehl aufrufen kann:

./check_snmp –h

Oder

./check_snmp –help

Beispiele

Die SNMP Abfrage kann auf das Ergebnis angepasst werden, so z.B. soll die Eingangsspannung einer APC USV überwacht werden. Folgender Befehl wird abgesetzt, sofern der Communitystring „public“ lautet.

./check_snmp -H Hostadresse -o .1.3.6.1.4.1.534.1.3.4.1.2.1 -C public -w 215 -c 200

SNMP CRITICAL - *231* | iso.3.6.1.4.1.534.1.3.4.1.2.1=231

Wie zu sehen ist, ist der Wert 231 weder im WARNING Bereich (215) noch im CRITICAL Bereich (200) und da er nur in eine Richtung überwachen kann (also nach oben), bringt er diesen als CRITICAL. Nun kann der Pluginaufruf angepasst werden, sodass WARNING und CRITICAL einen bestimmten Bereich abdecken, dann weiß das Plugin auch, dass der Wert in Ordnung sein muss, wenn er nicht in einem der beiden Bereiche liegt!

./check_snmp -h | grep ranges

Richtige Definition für WARNING und CRITICAL wäre dann:

-w 225:215 -c 215:200

SNMP OK - *231* | iso.3.6.1.4.1.534.1.3.4.1.2.1=231

Auf diese Art und Weise kann dieses Plugin beliebig abgeändert werden und auf die verschiedenen OID’s angepasst werden. Einfach mit -h oder –help das Plugin aufrufen und wer lesen kann findet sich garantiert zurecht.

gore-tex 31.01.2006 13:29

Alarmieren, sobald ein bestimmter Wert unterschritten wird

Syntax ./check_snmp -H $HOSTADDRESS$ -P 1 -o OID -C public -w max:min -c max:min

Das folgende Beispiel überwacht den freien Speicher (physikalischer Speicher + SWAP) auf einer CheckPoint-Secure-Plattform:

./check_snmp -H 1.1.1.1 -P 1 -o 1.3.6.1.4.1.2021.4.11.0 -C public -w 200000:100000 -c 99999:50000

Wichtig ist, dass bei der Range-Angabe zuerst der Maximalwert eingetragen wird und dann getrennt durch einen : der Minimalwert. Bei dieser Abfrage erhält man den derzeit freien Speicher in KB zurück, somit bekommt man eine Warning, wenn nur noch zwischen 100 und 200 MB Speicher frei sind, und eine Critical-Meldung, wenn noch zwischen 50 und 99 MB frei sind.

Mehrere Abfragen in einem Plugin-Aufruf

Die check_snmp-Syntax zum Abfragen mehrerer OIDs in einem Plugin-Aufruf hat sich mit der Version aus den Nagios-Plugins 1.4.14 geändert. Während ältere Versionen pro Parameter ein -o-Flag vorsah, dem jeweils Einheiten und Schwellwerte mit ihren jeweiligen Flags versehen folgten…

check_snmp -H $HOSTADDRESS$ -C <community> -D ', ' -l CAPACITY \
 -o SNMPv2-SMI::mib-2.33.1.4.4.1.5.1 -u "% load"     -w  0:75   -c 0:85 \
 -o SNMPv2-SMI::mib-2.33.1.2.4.0     -u "% battery"  -w 40:100  -c 20:100

… muss man neuerdings kommaseparierte Listen hinter den jeweiligen Flags angeben:

 check_snmp -H $HOSTADDRESS$ -C <community> -D ', ' -l CAPACITY \
  -o SNMPv2-SMI::mib-2.33.1.4.4.1.5.1,SNMPv2-SMI::mib-2.33.1.2.4.0 \
  -u "% load","% battery" \
  -w  0:75,40:100   -c 0:85,20:100

Das Beispiel überwacht Auslastung und Batteriekapazität einer UPS. Das Flag -D schreibt dem Plugin vor, welchen Zeichentrenner er in der Ausgabe verwenden soll:

 CAPACITY OK - 45 % load, 100 % battery | SNMPv2-SMI::mib-2.33.1.4.4.1.5.1=45 SNMPv2-SMI::mib-2.33.1.2.4.0=100  
nagios/plugins/check_snmp.txt · Zuletzt geändert: 2009/12/17 11:37 von trish
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0