SNMP intern

Siehe auch:

Riskieren wir mal einen Blick hinter die Kulissen von SNMP und wie die einzelnen Komponenten zusammen arbeiten. In den SNMP Grundlagen haben Sie sicher schon gelesen, was sich hinter GET, SET und Traps verbirgt. Aber dann gibt es noch einige andere Dinge. Mit dem umfangreichen Bild haben ich versucht, die Zusammenhänge etwas zu visualisieren. Links ist das überwachte System, welches vom rechten System abgefragt wird.

Die gemanagte Station

Der Windows SMTP-Dienst wird durch den blauen Bereich dargestellt, welcher über die grünen Verbindung von Programmen auf der der Management Station angesprochen wird. Auch der SNMP-Trap-Dienst ist enthalten, welcher Warnungen aktiv versenden kann.

Der Windows SNMP-Dienst unterstützt von Hause aus die MIB-2 und erlaubt damit einen Zugriff auf Daten des TCP/IP-Stack. Über Extension DLLs, welche von den Anwendungen installiert werden, ist auch ein Zugriff z.B.: auf den IIS; Serverdienst etc. möglich. Eine Besonderheit verbirgt sich hinter der PERFMIB.DLL. Diese wird zum Bindeglied zwischen den umfangreich vorhandenen Performance Countern, die jedoch einer Konfiguration Bedarf. Mit PERF2MIB müssen die existierenden Performance Counter erst ausgelesen und in eine INI-Datei konvertiert werden, die von PERFMIB dann genutzt wird. Leider wurde die PERFMIB.DLL seit Windows NT4 nicht weiter entwickelt. Es scheint fast so, als ob Microsoft eher auf WMI als Schnittstelle setzt. Die PERFMIN.DLL läuft aber auch unter Windows 200x und unter http://www.wtcs.org/snmp4tpc gibt es eine kommerzielle Lösung zur Einbindung von Performance Countern in SNMP.

Die Managementstation

Auf der rechten Seite wird die etwas umfangreichere Management Station aufgezeigt, Es gibt einige sehr einfache Programme, um SNMP-Abfragen zu starten. Dazu gehören Blat und GETIF bzw SNMPGETW, welche einfach nur per SNMP Werte abfragen. Interessanter wird der Einsatz von SNMP durch eine Datenbank (Log DB) und ein echtes Management System. Dieses ist dafür zuständig, bestimmte Daten durch einen Collector von den verschiedenen überwachten Systemen zu sammeln und in einer Datenbank zu schreiben. Dieses System kann dann basierend auf diesen Daten verschiedene Auswertungen liefern und Alarm schlagen, z.B.: per Mail oder Pager. Meist enthält solche ein System auch einen SNMP-Trap Receiver, damit z.B. ein Router einen Leitungsausfall sofort melden kann und der Fehler nicht erst bei der nächsten Routineabfrage der Managementstation auffällt.

Damit die Managementsoftware überhaupt weiß, welche Werte Sie abfragen kann, gibt es die so genannten MIB-Dateien, die in die Software importiert werden müssen. Erst dann werden aus Zahlenkolonnen wie 1.3.6.1.3.4.2 sprechende Namen. Auch Windows selbst hat einen MIB-Datenbank namens MIB.BIN und einen MIB-Compiler  MIBCC.EXE, mit dem sie eigene MIB-Dateien in die Windows Datenbank importieren können. Die meisten Anwendungen bringen aber ihre eigene MIB-Verwaltung mit, so dass die Schnittstelle von Microsoft eher selten genutzt wird.

Windows SNMP erweitern.

Der Windows SNMP-Dienst bietet ihnen von Hause aus einen Zugriff auf die normalen SMMP-OIDs, die ein System mit IP-Stack bereit stellt. Der Windows SNMP-Dienst ist aber durch DLLs von Microsoft als auch Drittherstellern erweiterbar. So installiert Microsoft selbst schon entsprechende Erweiterungen, um z.B.: DNS, WINS; SERVER-Dienst etc. per SNMP abzufragen. Mit PERFMIB.DLL können Sie unter Windows NT4 sämtliche Windows Performance Counter per SNMP verfügbar machen, was angeblich auch unter Windows 200x funktioniert aber nicht supportet wird.

Daher gibt es Dritthersteller, die diese Lücke mit eigenen Programmen nutzen und die verschiedensten Parameter von Windows und darauf installierten Servern zur Verfügung stellen. Damit sie diese Werte dann per SNMP abfragen können, müssen Sie aber die OID für den Wert können. per GetIF können Sie über einen "Browser" zumindest die OIDs finden, die das System anbietet:

Allerdings ist die "Suche" natürlich etwas umständlich, da Sie mit einem "GetNext" alle OIDs durchlaufen müssen. Am besten ´fragen Sie daher den Hersteller selbst nach den "richtigen" OIDs, wenn Sie mit generischen SNMP-Aufrufen die Daten abfragen wollen.

Über solche Erweiterungen können Sie Exchange und andere Parameter per SNMP auslesen. Eine Übersicht von solchen "privaten" SNMP-OIDs erhalten Sie auch auf http://www.iana.org/assignments/enterprise-numbers.

SNMPTools Agent

Der kostenfreie Agent (Stand Aug 08) erweitert den Windows SNMP-Dienst derart, dass jeder Performance Counter ausgelesen werden kann. Er kann aber auch Kommandozeilen ausführen und die STDOUT-Ausgabe dann per SNMP zurückmelden. Aufmerksam geworden bin ich über einen Eintrag in einem Forum zur Monitoringsoftware cacti (http://forums.cacti.net/viewtopic.php?t=25600).

Die DLL ist auf http://erwan.l.free.fr/snmptools/ verfügbar und bindet sich unter der OID Start: 1.3.6.1.4.1.15. ein.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SNMP\Parameters\ExtensionAgents]
"snmptools"="SOFTWARE\\snmptools\\CurrentVersion"

[HKEY_LOCAL_MACHINE\SOFTWARE\snmptools\currentversion]
"Pathname"="%systemroot%\\system32\\snmptools.dll"
"debug"="1"

Das Debugging erfolgte damals noch fest nach c:\log.

Weitere Links zu SNMP