In diesem Beitrag beschreibe ich die Abfrage von Routern (Cisco, Linksys, Enterasys, Netgear, Alcatel) über SNMP mit Hilfe von check_snmp. Da SNMP nach RFC 1157 und RFC 3410 standardisiert ist, kann man damit so ziemlich jedes Gerät zwischen Drucker, Windows/Linux Server und Routern/Switches über das Netzwerk abfragen. Dabei stehen dem einem so viele Werte zur Verfügung, dass man zuerst einmal auswählen muss welche man überhaupt überwachen will.
1.) Konfiguration des Routers für Zugriff über SNMP.
Der erste Schritt, ist die Einrichtung des Routers. SNMP V1 und V2c haben keine User/Password Authentifizierung, sondern bloß einen Community-String. Dieses Passwort wird benötigt um Werte über SNMP abzufragen oder zu verändern. Die Konfiguration geschieht entweder über Telnet oder ein Webinterface auf dem Router.
Achtung: Per Default ist auf den Meisten Geräten mit SNMP der String “public” als Read-Only und “private” als Read-Write eingestellt. Dies ist eine Sicherheitslücke, die Sofort geschlossen werden sollte!
2.) Installation von check_snmp
Wenn man Icinga nach dem Tutorial auf dieser Seite installiert hat, sollte das Plugin auf jeden Fall schon da sein, weil es in den Standard-Nagios-Plugins enthalten ist. Sollte das Plugin nicht installiert sein, ist das in den meisten Fällen auf das fehlen der snmp Devel Pakete zurückzuführen. Diese installiert man unter Debian/Ubuntu einfach mit hilfe von
1 | aptitude install snmp libsnmp-dev |
Hat man die Standard-Plugins zuvor schon einmal installiert muss man dies erneut durchführen und sollte nicht vergessen vorher “make clean” auszuführen.
3.) Beschaffung von Infos über das Gerät.
Obwohl nicht von jedem empfohlen, da es manche wirklich schwachbrüstige Router auf dem Zahnfleisch laufen lässt aber sehr praktisch um einmal alles herauszufinden ist ein snmpwalk über alle Einträge.
1 | snmpwalk -v 2c 192.168.0.1 -c COMMUNITY-STRING > RouterInfos.txt |
In diesem Beispiel hat des Router die IP 192.168.0.1 und die Ergebnisse werden in RouterInfos.txt gespeichert.
Jetzt kann man nach interessanten Einträgen suchen. Leider sieht dies bei unterschiedlichen Herstellern und sogar Modellen unterschiedlich aus. Aber interessant sind Einträge über den Zustand von Schnittstellen sowie ein Byte-Counter für die Schnittstelle um den Durchschnittlichen Traffic auszuwerten. Auch Informationen wie die Zeit seit letztem Reboot, Temperatur, CPU und Speicherauslastung sind hier zu finden.
4) Konfigurationsbeispiel
Die Beispielkonfiguration testen den Zustand der Schnittstelle eth0 auf einem CISCO Router. Zu beachten ist der Einsatz von $USER3$. In diesem Makro ist der Community-String für den Router gespeichert. Diesen kann man vom Icinga-Webinterface aus nicht auslesen.
1 2 3 4 5 6 7 8 9 10 11 | define service{
use generic-service
host_name ROUTERNAME
service_description Check eth0
check_command check_snmp!-C $USER3$ -o ifOperStatus.0 -r 1 -m RFC1213-MIB
} |
1 Kommentar
wo kann ich sagt:
15. März 2010 von 13:20 (UTC 1 )
“Sollte das Plugin nicht installiert sein, ist das in den meisten Fällen auf das fehlen der snmp Devel Pakete zurückzuführen” – danke! *g*