SNMP

Netzwerkgeräte, die SNMP v1, v2c oder v3 beantworten (USV-Anlagen, PDUs, Switches, Router, Präzisionsklimageräte und Raumsensoren), über ihren Agenten im Abfrageintervall jedes Tags gelesen: die Karte SNMP-Agent, die OID eines Tags in Zahlen oder mit Standardnamen, die Datentypen, als die jedes Objekt gelesen wird, Lesen und Schreiben, der Durchlauf, der die Objekte eines Agenten findet, und zwei vollständige Beispiele.

Als Markdown ansehen

Der Treiber SNMP liest und schreibt die Geräte eines Technikraums über ihren SNMP-Agenten: USV-Anlagen, PDUs, Switches, Router, Präzisionsklimageräte und Temperatur- oder Feuchtesensoren. Er ergänzt den Treiber Redfish, der die Management-Controller der Server liest: Zusammen decken beide den Technikraum ab. Jedes Tag liest ein Objekt des Agenten über seine OID, etwa upsBatteryStatus.0 oder ifHCInOctets.2, und seine Werte landen dort, wo die jedes anderen Tags landen: in Logic, auf Dashboards, in den Läufen eines Prüfstands von Process.

Die Station fragt: Jedes Tag wird in seinem Abfrageintervall gelesen, in SNMPv1, SNMPv2c oder SNMPv3, und das Abfrageintervall (ms) der Karte Gerät wirkt wie bei jedem Treiber, wobei jedes Tag es überschreiben kann. Was das Gerät von sich aus sendet, seine Traps, wird nicht empfangen; siehe Grenzen, die man kennen sollte.

Ein Gerät dieses Treibers ist ein Agent, erreicht an seinem Host über den UDP-Port 161. Die Geräte stehen unter dem Treiber und können in Ordnern abgelegt werden, Treiber → Ordner → Gerät → Tag, wie unter jedem Treiber ohne serielle Leitung und ohne Broker.

Die Seite des Treibers

Mit Connector konfigurieren trägt die Seite den eigenen Suchbereich des Treibers, mit dem Agenten und den Teilbäumen, die Geräte suchen durchläuft (siehe Gerätesuche). Darunter steht die Tabelle Geräte jedes Treibers (siehe Die Gerätetabelle), die mit Gerät hinzufügen rechts neben ihrem Titel wächst; leer zeigt sie "Noch keine Geräte." Die Leiste des Treibers trägt Geräte suchen, ausgegraut, bis die Karte Suchbereich vollständig ist.

Gerät

Verbindung

Feld Bedeutung Standard
Hostadresse Der Hostname oder die IP-Adresse des Agenten. leer
Port Der UDP-Port, auf dem der Agent antwortet, 1 bis 65535. Ein leeres Feld zeigt 161 in Grau, und der Agent wird darauf gefragt. 161

Ein neues Gerät hat keinen Host: Es zeigt "Hostadresse noch nicht eingetragen", und es wird nichts gesendet, bis es einen hat. Die Base URI, die die Kopfzeile zeigt, ist die Laufzeitadresse, mit der Version, der geltenden SNMPv3-Sicherheit, dem Zeitlimit für die Antwort und den Wiederholungen: snmp://192.168.10.40:161?version=2c&timeoutMs=2000&retries=1 oder snmp://192.168.10.2:161?version=3&security=authPriv&auth=sha256&priv=aes128&timeoutMs=2000&retries=1. Sie enthält nie die Community, den Benutzer oder ein Passwort.

Die Karte SNMP-Agent

Unter der Karte Verbindung sagt die Karte SNMP-Agent, wie der Agent gefragt wird. Welche Felder sie zeichnet, folgt der Version und, bei SNMPv3, der Sicherheitsstufe.

Feld Angezeigt Bedeutung Standard
SNMP-Version immer SNMPv1, SNMPv2c oder SNMPv3, jede mit einer Zeile darunter. SNMPv1: "SNMPv1 kennt keine 64-Bit-Zähler, und ein Objekt, das dem Agenten fehlt, lässt die ganze Anfrage scheitern; der Treiber stellt sie dann ohne dieses Objekt erneut." SNMPv2c: "SNMPv2c liest die 64-Bit-Zähler, und ein Objekt, das dem Agenten fehlt, lässt nur dieses Tag scheitern. Die meisten Geräte beantworten es." SNMPv3: "SNMPv3 meldet sich mit einem Benutzer an und signiert und verschlüsselt seine Nachrichten, wie es die Sicherheitsstufe vorgibt." SNMPv2c
Community SNMPv1, SNMPv2c Die Community, auf die der Agent antwortet, höchstens 255 Bytes, in einem Feld, das die Eingabe verbirgt; leer zeigt es public als Hinweis, nie als Wert. Darunter: "Ein Agent ignoriert eine Anfrage mit einer Community, die er nicht annimmt; eine falsche Community sieht daher aus wie ein Agent, der nicht antwortet." leer
SNMPv3-Benutzer SNMPv3 Der Benutzer, den der Agent kennt, höchstens 32 Zeichen. leer
Sicherheitsstufe SNMPv3 Signiert und verschlüsselt (authPriv): "Jede Nachricht wird mit dem Authentifizierungspasswort signiert und mit dem Verschlüsselungspasswort verschlüsselt." Nur signiert (authNoPriv): "Jede Nachricht wird mit dem Authentifizierungspasswort signiert und unverschlüsselt übertragen." Weder signiert noch verschlüsselt (noAuthNoPriv): "Nur der Benutzername wird gesendet: nichts wird signiert und nichts verschlüsselt." Signiert und verschlüsselt (authPriv)
Authentifizierungsprotokoll SNMPv3, signiert MD5, SHA-1, SHA-256, SHA-384 oder SHA-512. SHA-1
Authentifizierungspasswort SNMPv3, signiert Das Passwort, das die Nachrichten signiert. leer
Verschlüsselungsprotokoll SNMPv3, authPriv DES, AES-128, AES-192 oder AES-256. AES-128
Verschlüsselungspasswort SNMPv3, authPriv Das Passwort, das die Nachrichten verschlüsselt. leer
Zeitlimit für die Antwort (ms) immer 100 bis 60000: "Wie lange eine Anfrage auf die Antwort des Agenten wartet, bevor sie erneut gesendet wird." 2000
Wiederholungen immer 0 bis 5: "Wie oft eine unbeantwortete Anfrage erneut gesendet wird, bevor das Gerät als offline gilt." 1

Unter den beiden Passwörtern: "Jedes Passwort ist das, das der Agent für diesen Benutzer hält, mit mindestens 8 Zeichen." Benutzer, Sicherheitsstufe und die beiden Protokolle sind die, mit denen der Agent für diesen Benutzer eingerichtet ist, auf der Einstellungsseite des Geräts selbst: Die Station kann den Agenten nicht danach fragen. MD5, SHA-1 und DES werden angeboten, weil viele installierte Geräte nichts Neueres annehmen.

Eine noch nicht eingegebene Anmeldeangabe ist kein Fehler: Das Gerät wird gespeichert, der Treiber sendet dem Agenten nichts, solange sie fehlt, und eine ruhige Zeile unter der Karte sagt, was fehlt, die erste von diesen:

Es fehlt Die Karte sagt
Die Community (SNMPv1, SNMPv2c) "Geben Sie die Community ein, auf die der Agent antwortet. Bis dahin sendet das Gerät nichts."
Der Benutzer (SNMPv3) "Geben Sie den SNMPv3-Benutzer ein. Bis dahin sendet das Gerät nichts."
Das Authentifizierungspasswort (authNoPriv, authPriv) "Geben Sie das Authentifizierungspasswort ein. Bis dahin sendet das Gerät nichts."
Das Verschlüsselungspasswort (authPriv) "Geben Sie das Verschlüsselungspasswort ein. Bis dahin sendet das Gerät nichts."

Ein Gerät, das seinen Host hat und dem noch eine Anmeldeangabe fehlt, wird nicht verbunden, und sein letzter Fehler nennt die Anmeldeangabe, auf die sein Agent wartet. Einen Wert, den die Karte nicht annehmen kann, speichert sie nicht, und sie sagt in Rot, warum:

Sie geben ein Die Karte sagt
Ein Authentifizierungspasswort mit weniger als 8 Zeichen "Das Authentifizierungspasswort braucht mindestens 8 Zeichen."
Ein Verschlüsselungspasswort mit weniger als 8 Zeichen "Das Verschlüsselungspasswort braucht mindestens 8 Zeichen."
Einen Benutzer mit mehr als 32 Zeichen oder eine Community mit mehr als 255 Bytes "Der Benutzer fasst höchstens 32 Zeichen und die Community höchstens 255 Bytes."
Ein Zeitlimit für die Antwort außerhalb von 100 bis 60000 oder Wiederholungen außerhalb von 0 bis 5 Das Feld kehrt zum geltenden Wert zurück und sagt "Geben Sie eine Zahl zwischen 100 und 60000 ein." oder "Geben Sie eine Zahl zwischen 0 und 5 ein."

Das Speichern hält dieselben Regeln wie die Karte, und das Aktionsprotokoll sagt es, wenn es eine ablehnt: "Das Gerät 'UPS room 1' hat eine SNMP-Einstellung, die sein Treiber nicht verwenden kann. Öffnen Sie es und korrigieren Sie das Feld, das sein Panel markiert." Die Community und die beiden Passwörter werden wie jede Anmeldeangabe eines Geräts gehalten (siehe Anmeldedaten und Zertifikate): im Ruhezustand für das Windows-Konto geschützt, das sie eingegeben hat, im Export der Konfiguration versiegelt, und nie in der Base URI, im Journal oder in der Antwort eines Agenten gezeigt. Eine unter einem anderen Windows-Konto eingegebene kommt leer zurück, und das Gerät wartet auf sie wie auf eine nie eingegebene.

Adressierung des Tags

Die OID

Ein Tag dieses Treibers liest ein Objekt seines Agenten. Die Karte Quelle des Tags trägt das Feld OID, mit dem Hinweis "Eine OID in Zahlen, etwa 1.3.6.1.2.1.1.3.0, oder ein Standardname mit seiner Instanz, etwa sysUpTime.0, ifInOctets.2 oder upsBatteryStatus.0" darunter. Jede Anfrage trägt die Zahl, in welcher Form das Tag auch geschrieben ist:

Geschrieben Gelesen als
1.3.6.1.2.1.1.3.0, .1.3.6.1.2.1.1.3.0, iso.3.6.1.2.1.1.3.0 Diese Zahl, die das Panel sysUpTime.0 nennt.
sysUpTime.0, sysUpTime, SNMPv2-MIB::sysUpTime.0, ohne Rücksicht auf Groß- und Kleinschreibung Ein Einzelwert, dessen einzige Instanz .0 weggelassen werden darf.
ifInOctets.2 Eine Spalte einer Tabelle mit dem Index ihrer Zeile, hier Schnittstelle 2, der immer geschrieben wird.
enterprises.318.1.1.1.2.2.1.0 Ein Zweig mit den Zahlen darunter: ein Objekt aus der eigenen MIB des Geräts, als Zahl angezeigt.

Unter dem Feld, nur lesbar, die OID in beiden Formen:

Anzeige Was sie zeigt
MIB-Name Den Standardnamen des Objekts mit seiner Instanz (ifInOctets.2), und darunter, was die MIB über das Objekt sagt: seine MIB, die Art von Wert, die es hält, und ob es schreibbar ist, etwa IF-MIB · Counter32 · nur lesbar oder UPS-MIB · Integer32 · beschreibbar. "Kein Standardname" für ein Objekt, das der Treiber nicht beim Namen kennt.
Numerische OID Die OID in Zahlen, also das, was jede Anfrage trägt.

Ein Objekt ohne Standardnamen fügt die Zeile "Ein Objekt aus der eigenen MIB des Geräts: Es erscheint als Zahl, da keine MIB-Datei gelesen wird." hinzu. Ein Tag, dessen OID der Treiber nicht lesen kann, wird nicht gespeichert, und die Seite des Tags sagt, warum:

Sie geben ein Die Seite des Tags sagt
Keine OID "OID ist für diesen Treiber erforderlich."
Einen Namen, den der Treiber nicht kennt "Dieser Name gehört zu keinem der Standard-MIB-Objekte, die der Treiber kennt. Schreiben Sie die OID in Zahlen."
Eine Spalte ohne ihre Zeile, etwa ifInOctets "Eine Tabellenspalte braucht den Index ihrer Zeile, etwa ifInOctets.1."
Einen Einzelwert mit einer anderen Instanz als 0, etwa sysUpTime.1 "Ein Einzelwert hat genau eine Instanz, .0, die weggelassen werden darf."
Einen Zweig allein, etwa enterprises oder ifTable "Ein Zweig des Baums benennt keinen Wert. Schreiben Sie die Zahlen des Objekts darunter."
Eine erste Zahl über 2, eine zweite von 40 oder mehr, mehr als 128 Zahlen oder eine Zahl über 4294967295 "Eine OID beginnt mit 0, 1 oder 2 und einer Zahl unter 40 und hat höchstens 128 Zahlen bis 4294967295."
Alles andere, was keine OID ist "Schreiben Sie die OID in Zahlen, etwa 1.3.6.1.2.1.1.3.0, oder einen Standardnamen mit seiner Instanz, etwa sysUpTime.0."

Das Speichern hält dieselbe Regel: "Das Tag 'Battery status' benennt keine OID, die der SNMP-Treiber lesen kann. Öffnen Sie es und korrigieren Sie die Adresse, die das Tag-Panel markiert." Die nur lesbare Zeile Quelladresse (Bus) zeigt die Zahl, die der Treiber erhält: 1.3.6.1.2.1.33.1.2.1.0 für ein Tag, das als upsBatteryStatus.0 geschrieben ist.

Die Namen, die der Treiber kennt

Der Treiber trägt eine Tabelle der Objekte der Standard-MIBs, die einen Namen verdienen, nach den RFCs geschrieben, sodass ein Name auf jeder Station dasselbe bedeutet. Keine MIB-Datei wird gelesen.

MIB Was sie benennt
SNMPv2-MIB (RFC 3418) Die Gruppe system: sysDescr, sysObjectID, sysUpTime, sysContact, sysName, sysLocation, sysServices.
IF-MIB (RFC 2863) ifNumber, die Schnittstellentabelle (ifDescr, ifOperStatus, ifInOctets, ifOutErrors und der Rest) und ihre Erweiterung mit den 64-Bit-Zählern (ifName, ifHCInOctets, ifHCOutOctets, ifHighSpeed, ifAlias).
UPS-MIB (RFC 1628) Identität, Batterie, Eingang, Ausgang, Bypass, Alarme, Test, Steuerung und Konfiguration einer USV: upsBatteryStatus, upsEstimatedChargeRemaining, upsOutputSource, upsOutputPercentLoad und der Rest.
ENTITY-SENSOR-MIB (RFC 3433) Die Sensortabelle: entPhySensorType, entPhySensorScale, entPhySensorValue, entPhySensorOperStatus und der Rest.
ENTITY-MIB (RFC 6933) Name, Beschreibung und Klasse einer physischen Einheit, die einen Sensor beschriften: entPhysicalName, entPhysicalDescr, entPhysicalClass.
HOST-RESOURCES-MIB (RFC 2790) Das System (hrSystemUptime, hrSystemProcesses), die Speichertabelle (hrStorageUsed) und die Prozessortabelle (hrProcessorLoad).

driver_capabilities führt jeden Namen mit seiner OID auf; siehe Agent-Werkzeuge.

Datentypen und Zugriff

Die Liste Datentyp bietet nur an, als was das Objekt ohne Verlust gelesen wird:

Das Objekt hält Am natürlichsten gelesen als Ebenfalls angeboten
Integer32, Aufzählungen und TruthValue eingeschlossen Int32 Int64, Float, Double, String
Counter32, Gauge32, TimeTicks (Hundertstelsekunden) UInt32 Int64, Double, String
Counter64 UInt64 Double, String
DisplayString String
Bytes, eine IP-Adresse oder eine OID String: die Bytes hexadezimal (00:1A:2B), die Adresse mit Punkten, die OID mit Punkten
Ein Objekt ohne Standardnamen Float Int32, UInt32, Int64, UInt64, Double, String: Die Antwort des Agenten entscheidet beim Lesen

Ein Zähler wird nicht als Float angeboten, das über 16.777.216 rundet, und ein Counter64 nicht als Int64, das einen Zählstand über seiner Hälfte ablehnen würde. Boolean wird nie angeboten: SNMP kennt keinen Wahrheitswert, und sein TruthValue (1 wahr, 2 falsch) und die eigene 0 und 1 eines Geräts würden denselben Typ auf zwei entgegengesetzte Arten lesen, deshalb wird ein Zustand als Int32 gelesen. Ändert sich die OID, wird ein Typ, als den das neue Objekt nicht gelesen wird, zu dem, als den es am natürlichsten gelesen wird; und ein Typ, als den es nicht gelesen wird, wird abgelehnt, mit den Typen, als die es gelesen wird: "ifHCOutOctets.2 wird als einer dieser Typen gelesen: UInt64, Double, String."

Ein Standardobjekt, das seine MIB als nur lesbar erklärt (die Zähler, sysUpTime, die Zustände), wird nur als Nur lesen angeboten, und das Feld Zugriff sagt "Nur lesbar: Das Gerät meldet diesen Wert, und nichts von außen setzt ihn." Ein Standardobjekt, das seine MIB als schreibbar erklärt (sysContact, sysName, sysLocation, ifAdminStatus, ifAlias, die Test-, Steuer- und Konfigurationsobjekte der UPS-MIB), und ein Objekt aus der eigenen MIB des Geräts bekommen jeden Zugriff angeboten: Ob der Agent das Schreiben annimmt, ist seine eigene Antwort.

Lesen

Im Abfrageintervall jedes Tags sendet die Station ein GET. Was der Agent antwortet, entscheidet, was das Tag zeigt (siehe Die Wertkette):

Der Agent antwortet Was das Lesen tut
Den Wert Den Wert, im Typ des Tags, bevor die Stufen des Tags selbst ihn umrechnen. Text, der eine Zahl enthält (23.5, wie manche Geräte schreiben), wird in einem numerischen Tag gelesen.
Einen Wert, den der Typ des Tags nicht fassen kann, etwa eine negative Zahl in einem UInt32 Ein fehlgeschlagenes Lesen dieses Tags, mit dem Grund; das Gerät liest seine anderen Tags weiter.
noSuchObject oder noSuchInstance, oder einen Fehler an genau diesem Objekt Ein fehlgeschlagenes Lesen dieses Tags, benannt mit der Antwort des Agenten; das Gerät liest seine anderen Tags weiter. Bei SNMPv1, wo ein fehlendes Objekt die ganze Anfrage scheitern lässt, fragt der Treiber ohne dieses Objekt erneut.
Nichts innerhalb des Zeitlimits für die Antwort, nach allen Wiederholungen Stille: Das Gerät geht offline und verbindet sich neu, und die Regel des Tags für ein Gerät, das nicht geantwortet hat, entscheidet, was es zeigt. Die Ursache nennt den Agenten, die Wartezeit und die Versuche und erinnert daran, dass ein Agent auch bei einer Community oder einem SNMPv3-Benutzer schweigt, die er nicht annimmt.
Einen SNMPv3-Bericht (ein unbekannter Benutzer, ein falsches Passwort oder Protokoll, eine Sicherheitsstufe, die der Agent nicht annimmt), oder die Antwort des Hosts, dass auf dem Port kein Agent lauscht Ein Verbindungsfehler mit dieser Ursache, im Journal und im letzten Fehler des Geräts; das Gerät verbindet sich neu.

Ein Gerät stellt eine Anfrage nach der anderen. Ein Lesen fragt nach dem Objekt des Tags und, in derselben Anfrage, nach den anderen Tags des Geräts, die keine frische Antwort haben, bis zu 32 OIDs; ein Agent, der antwortet, die Anfrage sei zu groß (tooBig), bekommt ab dann halb so viele geschickt. Eine so mitgebrachte Antwort bedient das Lesen eines anderen Tags, solange sie jünger ist als die Hälfte von dessen Abfrageintervall, sodass vierzig Tags ein oder zwei Anfragen pro Durchgang kosten. Die Engine eines SNMPv3-Agenten wird einmal pro Verbindung gelernt, und eine Anfrage, die der Agent als außerhalb seines Zeitfensters meldet, wird noch einmal mit den Werten des Agenten selbst gesendet.

Schreiben

Ein Tag, dessen Zugriff schreibt, sendet ein SET über die Warteschlange des Geräts. Ein Schreiben läuft durch denselben Trichter wie bei jedem anderen Treiber: Das Schreibfeld nimmt den technischen Wert, und die Umrechnungsstufen werden umgekehrt, bevor der Rohwert gesendet wird (siehe Connector). Das SET trägt die Art von Wert, mit der der Agent das Objekt zuletzt beantwortet hat; ersatzweise die, die seine MIB erklärt; ersatzweise die, die ein GET jetzt beantwortet; und zuletzt die des Tags selbst (ein Int32 als Integer32, ein UInt32 als Gauge32, ein String als OCTET STRING). Ein Wert, den diese Art nicht fassen kann, wird abgelehnt, bevor etwas gesendet wird.

Der Agent antwortet Was das Schreiben meldet
Keinen Fehler Erledigt. Jede Antwort, die das Gerät hielt, wird vergessen, sodass das nächste Lesen neu fragt.
Einen Fehlerstatus "Schreiben von der Anlage abgelehnt: <reason>.", wobei der Grund den Status so nennt, wie RFC 3416 ihn schreibt, etwa notWritable (17), wrongType (7) oder wrongValue (10), und bei SNMPv1 readOnly (4).
Nichts innerhalb des Zeitlimits für die Antwort, nach allen Wiederholungen "Schreiben nicht bestätigt: Die Anlage hat nicht rechtzeitig geantwortet."

Gerätesuche

Die Karte Suchbereich

Mit Connector konfigurieren trägt die Seite des Treibers ihre Karte Suchbereich, unter der Zeile "Durchläuft die Standard-Teilbäume eines Agenten und listet auf, was er findet. Ein SNMPv3-Agent wird über sein Gerät durchsucht: Wählen Sie es als zu durchsuchenden Agenten."

Feld Bedeutung Standard
Zu durchsuchender Agent Eine hier eingegebene Adresse oder ein Gerät des Treibers mit seinem Namen. Der Agent eines Geräts wird mit seinem Host, seinem Port, seiner Version, seinen Einstellungen und seinen Anmeldeangaben gelesen, wie sie gespeichert sind, und eine Änderung am Gerät, die noch auf das Speichern wartet, wird zuerst gespeichert. Nur so wird ein SNMPv3-Agent durchsucht. Eine hier eingegebene Adresse
Adresse des Agenten Ein eingegebener Agent: sein Hostname oder seine IP-Adresse, und sein Port nach einem Doppelpunkt, wenn es nicht der darunter ist. leer
Port Ein eingegebener Agent: 1 bis 65535. 161
SNMP-Version Ein eingegebener Agent: SNMPv1 oder SNMPv2c. SNMPv2c
Community Ein eingegebener Agent: die Community, auf die er antwortet, in einem Feld, das die Eingabe verbirgt, mit public als Hinweis. Darunter: "Nur für diesen Suchlauf. Ein Gerät, das aus dem Ergebnis hinzugefügt wird, behält sie als seine Community." leer
Teilbäume Je ein Haken: Systemgruppe (SNMPv2-MIB), Schnittstellen (IF-MIB), USV (UPS-MIB), Sensoren (ENTITY-SENSOR-MIB) und Host-Ressourcen (HOST-RESOURCES-MIB). alle außer Host-Ressourcen
Zusätzlich durchlaufen "Ein weiterer Teilbaum, in Zahlen oder unter einem Standardnamen, etwa enterprises.318. Die eigenen Objekte des Geräts kommen als Zahlen zurück." leer

Was dem Bereich noch fehlt, steht in Rot unter der Karte, und Geräte suchen bleibt ausgegraut, bis er vollständig ist:

Der Bereich Die Karte sagt
Ein eingegebener Agent ohne Adresse "Geben Sie die Adresse des SNMP-Agenten ein, der durchsucht werden soll."
Ein eingegebener Agent, dessen Adresse kein Host ist "'http://192.168.0.30' ist nicht die Adresse eines SNMP-Agenten. Schreiben Sie seinen Hostnamen oder seine IP-Adresse, auf Wunsch mit Port, zum Beispiel 192.168.0.30 oder 192.168.0.30:161."
Ein eingegebener Agent ohne Community, oder mit einer von mehr als 255 Bytes "Geben Sie die Community ein, auf die der Agent antwortet, höchstens 255 Bytes."
Ein Gerät, das es nicht mehr gibt "Das zum Durchsuchen gewählte SNMP-Gerät gibt es nicht mehr. Wählen Sie einen anderen Agenten zum Durchsuchen."
Ein Gerät ohne seinen Host oder ohne eine Anmeldeangabe, die sein Agent braucht "Dem Gerät 'UPS room 1' fehlt noch sein Host oder eine Anmeldeangabe, die sein Agent braucht. Vervollständigen Sie zuerst seine SNMP-Karte."
Ein zu durchlaufender Teilbaum, der keine OID ist "'vendor' ist keine OID zum Durchlaufen. Schreiben Sie sie in Zahlen oder unter einem Standardnamen, etwa enterprises.318."
Nichts angehakt und nichts genannt "Markieren Sie mindestens einen Teilbaum, oder nennen Sie einen zum Durchlaufen."

Hat das zu durchsuchende Gerät eine Änderung, die sich nicht speichern lässt, startet der Suchlauf nicht: "Die Gerätesuche wurde nicht gestartet, weil die Änderung am zu durchsuchenden Gerät nicht gespeichert werden konnte."

Was der Suchlauf anbietet

Geräte suchen fragt den Agenten zuerst nach seinem Namen (sysName.0), was auch beweist, dass der Agent auf diese Anmeldeangaben antwortet, und durchläuft dann jeden angehakten Teilbaum und den genannten, mit GETBULK bei SNMPv2c und SNMPv3 und GETNEXT bei SNMPv1, bis der Agent außerhalb davon antwortet. Die Fortschrittszeile zählt, was gelesen wurde: "Der SNMP-Agent unter 192.168.10.40:161 wird durchlaufen: 120 Objekte gefunden." Ein Suchlauf listet höchstens 2000 Objekte und läuft höchstens 60 Sekunden; wird er dort abgeschnitten oder verstummt der Agent mittendrin, behält er, was er gefunden hat, und sagt es: "Der Durchlauf von 192.168.10.40:161 endete vorzeitig, mit 2000 Objekte gefunden. Ein Suchlauf listet höchstens 2000 Objekte, läuft höchstens 60 s und endet dort, wo der Agent verstummt."

Der Suchlauf bietet einen Kandidaten je Agent an, benannt nach seinem sysName (nach dem Namen des Geräts oder dem Host, wenn der Agent keinen nennt), mit der Version, dem Zeitlimit und den Wiederholungen, mit denen er gelesen wurde, und den gefundenen Objekten als Kandidaten-Tags:

Gefundenes Objekt Name des Tags Datentyp Zugriff
Ein Einzelwert, den der Treiber beim Namen kennt Sein Name, ohne das .0: sysUpTime Der, als den der beantwortete Wert am natürlichsten gelesen wird Lesen und schreiben, wo seine MIB ihn als schreibbar erklärt, sonst Nur lesen
Eine Spalte einer Tabelle, die der Treiber beim Namen kennt Ihr Name und ihre Zeile: ifInOctets.2 Derselbe Derselbe
Ein Objekt aus der eigenen MIB des Geräts Seine Zahl: 1.3.6.1.4.1.318.1.1.1.2.2.1.0 Derselbe Nur lesen

Ein Wert, den kein Typ eines Tags fassen kann, bleibt außen vor. Ein Gerät, das aus einem eingegebenen Suchlauf hinzugefügt wird, behält die Community, die der Suchlauf benutzt hat, geschützt wie jede Anmeldeangabe eines Geräts; ein Gerät, das aus dem Suchlauf eines Geräts hinzugefügt wird, trägt die Anmeldeangaben dieses Geräts. Ein Kandidat, dessen Agenten ein Gerät des Treibers schon liest (das durchsuchte Gerät, oder ein anderes am selben Host und Port), wird als Bereits konfiguriert gekennzeichnet: Seine Karte führt nur die Objekte auf, die noch kein Tag dieses Geräts liest, wobei eine OID mit Namen und mit Zahl als dieselbe zählt, und Tags hinzufügen vor Öffnen fügt die angehakten diesem Gerät hinzu. Das übrige Verhalten des Suchlaufs steht unter Gerätesuche.

Die eigene Seite eines Geräts tut dasselbe ohne die Seite seines Treibers: Tags suchen im Kopf seiner Karte der Tags durchläuft den Agenten dieses Geräts mit seinen Einstellungen und Anmeldedaten, über die Standard-Teilbäume und den Herstellerzweig, den seine Tags schon lesen (enterprises.318 für ein Tag darunter), und bietet nur die Objekte an, für die es noch kein Tag hat (siehe Die Tags eines Geräts suchen).

Beispiel: eine USV über SNMPv2c

Eine USV mit Netzwerkkarte antwortet über SNMPv2c unter 192.168.10.40, mit einer Lese-Community, die auf dieser Karte eingestellt ist. Lesen Sie ihre Batterie:

  1. Auf der Seite des Treibers Gerät hinzufügen; nennen Sie es UPS room 1, tragen Sie unter Hostadresse 192.168.10.40 ein und lassen Sie Port auf 161.
  2. Lassen Sie auf der Karte SNMP-Agent SNMPv2c stehen, geben Sie die Lese-Community der Karte unter Community ein, und lassen Sie das Zeitlimit für die Antwort (ms) auf 2000 und Wiederholungen auf 1. Die Zeile, die nach der Community fragte, verschwindet.
  3. Tag hinzufügen Battery status, OID upsBatteryStatus.0, Datentyp Int32. Unter dem Feld zeigt der MIB-Name upsBatteryStatus.0 mit UPS-MIB · Integer32 · nur lesbar, die numerische OID 1.3.6.1.2.1.33.1.2.1.0, und der Zugriff bleibt auf Nur lesen. Der Wert ist 1 unknown, 2 batteryNormal, 3 batteryLow oder 4 batteryDepleted.
  4. Tag hinzufügen Battery charge, OID upsEstimatedChargeRemaining.0, Datentyp Int32, Einheit %.
  5. Wenn die USV es meldet, Tag hinzufügen Minutes remaining, OID upsEstimatedMinutesRemaining.0, Datentyp Int32, Einheit min.

Die Base URI lautet snmp://192.168.10.40:161?version=2c&timeoutMs=2000&retries=1. Ein Agent tut dasselbe mit den Werkzeugen:

device_upsert name="UPS room 1" driver=Snmp host=192.168.10.40 snmpVersion=V2c snmpCommunity="<the UPS card's read community>"
tag_upsert device="UPS room 1" name="Battery status" address=upsBatteryStatus.0 opcUaType=Int32
tag_upsert device="UPS room 1" name="Battery charge" address=upsEstimatedChargeRemaining.0 opcUaType=Int32 unit=%
tag_upsert device="UPS room 1" name="Minutes remaining" address=upsEstimatedMinutesRemaining.0 opcUaType=Int32 unit=min

Beispiel: die Schnittstellenzähler eines Switches über SNMPv3

Ein verwalteter Switch unter 192.168.10.2 antwortet über SNMPv3 für den Benutzer scada, auf dem Switch mit SHA-256-Authentifizierung und AES-128-Verschlüsselung eingerichtet. Lesen Sie den Verkehr und den Zustand seines Ports 2:

  1. Gerät hinzufügen; nennen Sie es Core switch, Hostadresse 192.168.10.2, Port 161.
  2. Wählen Sie auf der Karte SNMP-Agent SNMPv3, geben Sie scada unter SNMPv3-Benutzer ein, lassen Sie Signiert und verschlüsselt (authPriv) stehen, wählen Sie SHA-256 unter Authentifizierungsprotokoll und geben Sie sein Passwort ein, lassen Sie AES-128 unter Verschlüsselungsprotokoll und geben Sie sein Passwort ein: jeweils das, das der Switch für scada hält, mit mindestens 8 Zeichen.
  3. Tag hinzufügen Port 2 in, OID ifHCInOctets.2. Der Datentyp wird UInt64, der Typ, als den ein 64-Bit-Zähler gelesen wird, und die Liste bietet nur UInt64, Double und String an; Einheit B.
  4. Tag hinzufügen Port 2 out, OID ifHCOutOctets.2, UInt64, Einheit B.
  5. Tag hinzufügen Port 2 state, OID ifOperStatus.2, Datentyp Int32: 1 up, 2 down, 3 testing, 7 lowerLayerDown.

Die .2 ist der Schnittstellenindex des Switches, der, den ifName.2 benennt; ein Suchlauf über den Teilbaum der Schnittstellen listet jede Schnittstelle mit ihrem Index. Die Base URI lautet snmp://192.168.10.2:161?version=3&security=authPriv&auth=sha256&priv=aes128&timeoutMs=2000&retries=1. Mit den Werkzeugen wird ein opcUaType, als den das Objekt nicht gelesen wird, etwa Int32 auf ifHCOutOctets.2, mit den Typen abgelehnt, als die es gelesen wird:

device_upsert name="Core switch" driver=Snmp host=192.168.10.2 snmpVersion=V3 username=scada password="<authentication password>" snmpSecurityLevel=AuthPriv snmpAuthProtocol=Sha256 snmpPrivacyProtocol=Aes128 snmpPrivacyPassword="<privacy password>"
tag_upsert device="Core switch" name="Port 2 in" address=ifHCInOctets.2 opcUaType=UInt64 unit=B
tag_upsert device="Core switch" name="Port 2 out" address=ifHCOutOctets.2 opcUaType=UInt64 unit=B
tag_upsert device="Core switch" name="Port 2 state" address=ifOperStatus.2 opcUaType=Int32

Agent-Werkzeuge

driver_capabilities beschreibt diesen Treiber unter snmp: die Versionen und die Anmeldeangaben, die jede nimmt, die Sicherheitsstufen und Protokolle, das Zeitlimit für die Antwort und die Wiederholungen, wie eine OID geschrieben wird, die Typen je Art von Wert, jeden Namen, den der Treiber kennt, mit seiner MIB, seiner OID und ob er schreibbar ist, wie sich Lesen und Schreiben verhalten, die Gerätesuche und die beiden Beispiele oben. device_upsert driver=Snmp nimmt host, port (Standard 161), snmpVersion (V1, V2c, der Standard, oder V3), snmpCommunity bei SNMPv1 und SNMPv2c ('' löscht sie), und bei SNMPv3 username (den Benutzer), password (sein Authentifizierungspasswort, mindestens 8 Zeichen), snmpSecurityLevel (AuthPriv, der Standard, AuthNoPriv oder NoAuthNoPriv), snmpAuthProtocol (Md5, Sha1, der Standard, Sha256, Sha384 oder Sha512), snmpPrivacyProtocol (Des, Aes128, der Standard, Aes192 oder Aes256) und snmpPrivacyPassword; dazu responseTimeoutMs (100 bis 60000, Standard 2000) und snmpRetries (0 bis 5, Standard 1). Eine Community an einem SNMPv3-Gerät oder ein SNMPv3-Feld an einem Community-Gerät wird abgelehnt. Ein Gerät, das die Werkzeuge zurückgeben, trägt snmp: die Version, hasCommunity, die geltende Sicherheitsstufe und die Protokolle, hasPrivacyPassword, das Zeitlimit, die Wiederholungen und missingCredential, die Anmeldeangabe, auf die es noch wartet; nie wird ein Geheimnis zurückgegeben. tag_upsert nimmt die OID als address und opcUaType, dessen Standard der Typ ist, als den das Objekt am natürlichsten gelesen wird; wireQuantity und eipPath werden abgelehnt. device_discover driver=Snmp durchläuft entweder target (einen Host, mit port, wenn es nicht 161 ist) mit snmpVersion (V1 oder V2c) und snmpCommunity, oder snmpDevice, den Namen eines Geräts des Treibers, und nur so wird ein SNMPv3-Agent durchsucht; snmpSubtrees wählt die Standard-Teilbäume (System, Interfaces, Ups, Sensors, HostResources, durch Kommas getrennt) und snmpSubtree fügt einen weiteren hinzu. Die Werkzeuge behalten keine Community eines Suchlaufs: Ein Gerät, das aus dem Gefundenen angelegt wird, bekommt sie in device_upsert erneut, und die Tags, die einem konfigurierten Gerät fehlen, werden mit tag_upsert hinzugefügt. Die übrigen Werkzeuge stehen unter Agent-Werkzeuge.

Grenzen, die man kennen sollte

  • Traps und Informs, was das Gerät von sich aus sendet, wenn etwas geschieht, werden nicht empfangen: Jeder Wert wird in seinem Abfrageintervall gelesen, eine Batterie, die schwach wird, zeigt sich also beim nächsten Lesen ihres Zustands.
  • Keine MIB-Datei wird importiert. Die Namen, die der Treiber kennt, sind die der Standard-MIBs, die er mitbringt; ein Objekt aus der eigenen MIB des Geräts, unter enterprises, wird als Zahl geschrieben und angezeigt, und was es bedeutet, steht in der Dokumentation des Herstellers.
  • Die Station ist kein SNMP-Agent: Nichts liest die Station selbst über SNMP.
  • Ein Suchlauf erreicht einen SNMPv3-Agenten nur über ein Gerät, das seinen Benutzer und seine Passwörter hält, und probiert von sich aus keine Community und keinen Benutzer.
  • Ein Suchlauf listet höchstens 2000 Objekte und läuft höchstens 60 Sekunden: Entfernen Sie auf einem großen Switch die Haken der Teilbäume, die nicht gebraucht werden, oder nennen Sie den, der gebraucht wird.
  • Kein Tag ist ein Boolean: Ein TruthValue oder ein eigenes Ein und Aus des Geräts wird als Int32 gelesen.