Seite 2 - Netzwerk-Monitoring mit den Net-SNMP-Tools

Lesezeit
5 Minuten
Bis jetzt gelesen

Seite 2 - Netzwerk-Monitoring mit den Net-SNMP-Tools

18.11.2008 - 16:00
Veröffentlicht in:
Die SNMP-Werkzeuge
Die Net-SNMP-Tools sind unter anderem als Installationspaket für Windows oder RPM für Fedora Core verfügbar. Daneben bringen viele Linux-Distributionen, so auch unser Testsystem unter Suse Linux 10, die Tools bereits mit, so dass die Installation schnell vollzogen ist. Verschaffen wir uns daraufhin mit dem Tool "snmpwalk" einen ersten Überblick über eine Netzkomponente. Der Befehl erwartet dazu die zu verwendende SNMP-Version, eine Community und natürlich einen Hostnamen:
snmpwalk -v 2c -c public win2k3-test

liefert somit eine Liste sämtlicher OIDs, die unser Server win2k3-test bereitstellt. Dazu durchläuft der Befehl die Baumstruktur der MIB, wobei er dem Algorithmus der Tiefensuche folgt und jedes gefundene Blatt ausgibt.

1. Pfade anzeigen mit "snmpwalk"
Standardmäßig werden die OIDs nicht mit dem absoluten Pfad ausgegeben, sondern mit dem Namen des MIB-Moduls, das diesen Teilbereich der MIB beschreibt, gefolgt vom relativen Pfad innerhalb des Moduls. Aus dem OID ".1.3.6.1.2.1.1.5.0", der den Hostnamen enthält, wird in der Ausgabe somit beispielsweise "SNMPv2-MIB::sysName.0 = STRING: win2k3-test".

Möchten Sie stattdessen die absoluten Pfade in punktierter Dezimalschreibweise ausgeben, so rufen Sie den Walk mit der Option "-On" auf. Der Befehl
snmpwalk -v 2c -c public -On win2k3- test

liefert also den Systemnamen als ".1.3.6.- 1.2.1.1.5.0 = STRING: win2k3-test".

Im Gegenzug liefert der Schalter "-Of" die ausformulierten Pfade, womit der Systemname als ".iso.org.dod.internet. mgmt.mib-2.system.sysName.0 = STRING: win2k3-test" auf den Bildschirm gelangt.

Natürlich ist es nicht erforderlich, immer den vollständigen Baum zu durchlaufen. Als weiteres Argument akzeptiert der Walk einen Pfad als Einstiegspunkt und gibt nur den darunter befindlichen Teilbaum aus. Mit dem Befehl
snmpwalk -v 2c -c public win2k3-test
  .1.3.6.1.4.1

erscheinen also etwa sämtliche Informationen unterhalb des Knotens "enterprises".

Vergleichbar hierzu können Sie auf den absoluten Pfad verzichten und stattdessen den Namen des Knotens als Argument verwenden:
snmpwalk -v 2c -c public win2k3-test enterprise

Bei der Abfrage unseres Windows-Server- 2003-Testsystems, auf dem zusätzlich zum Windows-SNMP-Dienst auch der in der Ausgabe 06/2006 des IT-Administrators vorgestellte SNMP-Informant [5] installiert waren, zeigte sich der oben beschriebene Effekt: Auch mit der Option "-Of" gestartet, enthüllt der Walk nicht, was sich hinter einzelnen Parametern verbirgt, wenn das entsprechende MIB-Modul nicht auf der Managementstation hinterlegt ist. Erst nachdem wir die MIB-Module des SNMP-Informanten auf unserer Managementstation in das Verzeichnis / usr / share / snmp / mibs kopiert hatten, erfuhren wir beispielsweise, dass die Zahlenkolonne ".1.3.6.1.4.1.9600.1.1.5.1.5.6.95.84.111. 116.97.108" den ausformulierten OID ".iso.org.dod.internet.private.enterprises. wtcs.informant.standard.processorTable. processorEntry.cpuPercentProcessor- Time."_Total"" und somit die Gesamtprozessorauslastung des Systems repräsentiert.

Damit dies funktioniert, erwartet snmpwalk als zusätzliche Option den Namen des MIB-Moduls. So durchläuft das Kommando
snmpwalk -v 2c -c public –m
   INFORMANT-STD win2k3-test
   enterprises.wtcs

den Ast ".1.3.6.1.4.1.9600" unter Berücksichtigung der MIB des SNMP-Informanten in der Standard-Edition. Mit dem Parameter "-m all" zieht der Durchlauf alle ihm bekannten MIB-Module zu Rate.

Neben dieser sequenziellen Ausgabe von Werten per snmpwalk können Sie auch das Tool snmptranslate benutzen, um eine übersichtliche Darstellung von MIB-Ästen zu erhalten (siehe Kasten):
snmptranslate -Tp -m all
   .1.3.6.1.4.1.9600.1.1

Interessieren Sie sich nicht für einen kompletten Ast der MIB, sondern für eine konkrete Variable, so hilft snmptranslate bei der Übersetzung und verrät mit dem Aufruf
snmptranslate -m all
   .1.3.6.1.4.1.9600.1.1.2.1.0

dass sich hinter diesem OID der Wert "INFORMANT-STD::memoryAvailableBytes. 0" und somit der freie physikalische Hauptspeicher verbirgt. Beachten Sie aber, dass snmptranslate im Gegensatz zum Walk kein Gerät befragt und somit keine konkreten Werte ausgibt, sondern lediglich auf Grund der lokal auf der Managementstation hinterlegten MIBs deren Struktur darstellt.

 Ausgabe von snmptranslate
 +--standard(1)
   |
   +--logicalDiskTable(1)
   |  |
   |  +--logicalDiskEntry(1)
   |     |  Index: lDiskInstance
   |     |
   |     +-- -R-- String    lDiskInstance(1)
   |     |        Textual Convention: InstanceName
   |     |        Size: 0..64
   |     +-- -R-- Gauge     lDiskPercentDiskReadTime(2)
   |     +-- -R-- Gauge     lDiskPercentDiskTime(3)
   |     +-- -R-- Gauge     lDiskPercentDiskWriteTime(4)
   |     +-- -R-- Gauge     lDiskPercentFreeSpace(5)
   |     +-- -R-- Gauge     lDiskPercentIdleTime(6)
   |     +-- -R-- Gauge     lDiskAvgDiskQueueLength(7)
   |     +-- -R-- Gauge     lDiskAvgDiskReadQueueLength(8)
   |     +-- -R-- Gauge     lDiskAvgDiskWriteQueueLength(9)
   |     +-- -R-- Gauge     lDiskAvgDiskSecPerRead(10)
   |     +-- -R-- Gauge     lDiskAvgDiskSecPerTransfer(11)
   |     +-- -R-- Gauge     lDiskAvgDiskSecPerWrite(12)
   |     +-- -R-- Gauge     lDiskCurrentDiskQueueLength(13)
   |     +-- -R-- Gauge     lDiskDiskBytesPerSec(14)
   |     +-- -R-- Gauge     lDiskDiskReadBytesPerSec(15)
   |     +-- -R-- Gauge     lDiskDiskReadsPerSec(16)
   |     +-- -R-- Gauge     lDiskDiskTransfersPerSec(17)
   |     +-- -R-- Gauge     lDiskDiskWriteBytesPerSec(18)
   |     +-- -R-- Gauge     lDiskDiskWritesPerSec(19)
   |     +-- -R-- Gauge     lDiskFreeMegabytes(20)
   |     +-- -R-- Gauge     lDiskSplitIOPerSec(21)
 
[...]

2. Client-Werte ermitteln mit "snmpget"
Den konkreten Wert eines OID ermitteln Sie mit dem Tool "snmpget". So resultiert beispielsweise der Befehl
snmpget -v 2c -c public switch001
   .1.3.6.1.2.1.2.2.1.10.1

in der Ausgabe der eingegangenen Bytes auf dem ersten Netzwerk-Interface eines Geräts: "IF-MIB::ifInOctets.1 = Counter32: 569642832", wobei zur Interpretation dieses Wertes nun noch Hintergrundinformationen zu den von SNMP unterstützten Datentypen erforderlich sind. So werden eingehende und ausgehende Daten auf Interfaces als "Counter32" erfasst – eine Variable, die keine negativen Werte umfasst und sich ausschließlich erhöht.

Bei Überschreiten des Wertebereichs – in diesem Fall 232-1 – beginnt der Zähler erneut bei Null. Da es sich um einen absoluten Wert handelt, ist der Informationswert einer einzelnen Abfrage verhältnismäßig gering. Erst die Differenz zweier Abfragen zeigt die übertragene Datenmenge über einen Zeitraum.

Bei einer kontinuierlichen Messung müssen also als Baseline mehrere zurückliegende Messwerte beziehungsweise deren Differenzen erfasst werden. Hierbei ist die Überschreitung des Wertebereichs als Sonderfall zu behandeln, um Messergebnisse nicht zu verfälschen. Anders verhält es sich bei Variablen vom Typ "Gauge32", die zwar ebenfalls keine negativen Werte enthalten, jedoch sowohl zu- als auch abnehmen können. Variablen diesen Typs, wie der bereits vorgestellte OID "INFORMANTSTD:: memoryAvailableBytes.0", der die aktuelle Hauptspeicherbelegung zeigt, besitzen also ohne weitere Berechnungen einen direkten Informationswert über den aktuellen Systemzustand. Natürlich erübrigt sich damit nicht der Vergleich mit Referenzwerten, um zu entscheiden, ob ein konkreter Wert dem Normalzustand entspricht.


Bild 3: Was ist los in meinem Netz? Statistiksysteme wie der "LANrunner" geben Auskunft.
Basis hierfür bildet SNMP.

3. Aneinanderreihungen mit "snmpgetnext"
Ein naher Verwandter des snmpget ist das Tool "snmpgetnext". Mit diesem Befehl, dessen Syntax analog zum "Get" funktioniert, fragen Sie nicht einen OID, sondern den in der Hierarchie der MIB unmittelbar nachfolgenden ab. Übergeben Sie also etwa die OID der eingehenden Daten auf dem ersten Interface mittels
snmpget -v 2c -c public switch001
   .1.3.6.1.2.1.2.2.1.10.1

So erhalten Sie als Ausgabe den Wert des zweiten Interface: "IF-MIB::ifInOctets.2 = Counter32: 1955364572". Dies veranschaulicht die Funktion des Tools snmpwalk, das genau in dieser Weise verfährt und einzelne Getnext-Schritte aneinander reiht, bis es die komplette MIB durchlaufen hat.

4. Schreiben von Werten mit "snmpset"
In unserem Werkzeugkasten findet sich weiterhin das Tool "snmpset", das uns einen schreibenden Zugriff auf Variablen in der MIB erlaubt, sofern eine entsprechende Community übergeben wird. Solche Variablen können, wie die Angaben im System-Zweig der MIB, informativen Charakter besitzen. Legen Sie zum Beispiel mittels
snmpset -v 2c -c private switch001
   system.sysContact.0 s “Christian Knermann”

einen Ansprechpartner für das Gerät "switch001" fest. Direkten Einfluss auf die Funktionalität nehmen Sie, indem Sie etwa Ports an einem Switch gezielt ein- oder ausschalten. Dies bewerkstelligt die Variable "ifAdminStatus" vom Typ "Integer" mit den zulässigen Werten "1" (=an) und "2" (=aus), die Sie im Zweig "interfaces" der MIB finden. So schalten Sie mittels
snmpset -v 2c -c private switches001
   .1.3.6.1.2.1.2.2.1.7.8 i 2

beispielsweise den achten Port aus: "IFMIB:: ifAdminStatus.38 = INTEGER: down(2)". Das Gegenteil bewirkt
snmpset -v 2c -c private swaev401
   .1.3.6.1.2.1.2.2.1.7.38 i 1

Damit scheint es angebracht, die Einrichtung von Communitys mit Schreibrechten mit Bedacht zu wählen und den Zugriff auf einen Client per SNMP auf bestimmte Managementstationen einzugrenzen.

Fazit
Die Net-SNMP-Tools ermöglichen es, das weite Feld des Monitorings per SNMP zu erschließen und helfen, einen Überblick über SNMP-fähige Geräte und die Komplexität ihrer Überwachung zu gewinnen. Ist das Ziel, eine größere Anzahl von Geräten in ein kontinuierliches Monitoring einzubinden, wächst allerdings die Menge der Messdaten rasant. So sind etwa zu einem einzelnen Switch-Port bereits vier Messwerte – eingehende und ausgehende Daten sowie eingehende und ausgehende Fehler – zu erfassen, was auch in kleinen bis mittelständischen Unternehmen schnell mehrere tausend Einzelwerte ergibt. Dies erfordert Lösungen, die neben den aktuellen Messwerten zu Vergleichszwecken auch historische Daten vorhalten und vorzugsweise in grafischer Form aufbereiten.

Der Schlüssel liegt hier in der Langzeitmessung in Intervallen von zum Beispiel fünf Minuten, um frühzeitig Trends und potenzielle Betriebsstörungen erkennen zu können. Zahlreiche Lösungen für jede Unternehmensgröße stehen bereit, begonnen beim frei verfügbaren MRTG [6] über die LANrunner Appliance [7] bis hin zur kompletten Management- Middleware in Dimensionen von HP OpenView oder IBM Tivoli. Hier entscheidet der Informationsbedarf der Administratoren und nicht zuletzt der Geldbeutel des Unternehmens.

         <<Vorherige Seite          Seite 2 von 2          





Ausgabe 11/06 des IT-Administrator Magazins S. 36 - 39, Autor: Christian Knermann

[1] www.net-snmp.org
[2] www.snmp-informant.com
[3] Perkins, David; McGinnis, Evan: "Understanding SNMP Mibs", Prentice Hall, ISBN: 0-13-437708-7
[4] Stallings, William: "SNMP, SNMPv2, SNMPv3 and RMON 1 and 2 – Third Edition", Addison-Wesley Professional, ISBN: 0-201-48534-6
[5] "Windows-Systeme per SNMP überwachen" in IT-Administrator 06/2006
[6] http://oss.oetiker.ch/mrtg/
[7] www.lanrunner.de

Ähnliche Beiträge

Netzwerkverwaltung an der Medizinischen Universität Wien

Die IT-Abteilung der Medizinischen Universität Wien betreibt das Netzwerk der Universität, wozu die Betreuung von rund 10.000 Anschlüssen sowie Hunderten Endgeräten und Servern gehört. Für diese Aufgabe wurde eine neue Informations- und Planungssoftware für Kabelmanagement und Netzwerkdokumentation implementiert. Das neue Werkzeug ist flexibel, skalierbar und deckt die steigenden Sicherheitsanforderungen voll ab.

Zero-Touch-Provisionierung von aktiven Netzwerkkomponenten (3)

Zero-Touch-Provisionierungsprozesse sind im Rollout von Client-PCs und Servern bereits lange Zeit Standard. Im Gegensatz dazu kommen diese Prozesse bei aktiven Netzwerkkomponenten wie Routern und Switches nur selten zum Einsatz. Im dritten und letzten Teil gehen wir auf weitere Varianten ein, etwa die ZTP-Provisionierung ohne proprietären Server, die Boot-Loader-Variante iPXE oder das alte Verfahren AutoInstall.

Zero-Touch-Provisionierung von aktiven Netzwerkkomponenten (2)

Zero-Touch-Provisionierungsprozesse sind im Rollout von Client-PCs und Servern bereits lange Zeit Standard. Im Gegensatz dazu kommen diese Prozesse bei aktiven Netzwerkkomponenten wie Routern und Switches nur selten zum Einsatz. Im zweiten Teil der Workshopserie schildern wir den proprietären Cisco-Ansatz "Network-Plug-and-Play", der über eine GUI erfolgt und bei dem sich die ausgerollten Komponenten an die Gegebenheiten im Netzwerk anpassen lassen.