1 Dynamische Indizes
Übersicht
Auch wenn Sie die erforderliche Indexnummer (zum Beispiel die einer Netzwerkschnittstelle) unter den SNMP-OIDs finden können, können Sie sich manchmal nicht vollständig darauf verlassen, dass die Indexnummer immer gleich bleibt.
Indexnummern können dynamisch sein – sie können sich im Laufe der Zeit ändern, wodurch Ihr Datenpunkt möglicherweise nicht mehr funktioniert.
Um dieses Szenario zu vermeiden, kann eine OID definiert werden, die die Möglichkeit berücksichtigt, dass sich eine Indexnummer ändert.
Wenn Sie beispielsweise den Indexwert abrufen müssen, der an ifInOctets angehängt werden soll und der der Schnittstelle GigabitEthernet0/1 auf einem Cisco-Gerät entspricht, verwenden Sie die folgende OID:
ifInOctets["index","ifDescr","GigabitEthernet0/1"]
Die Syntax
Es wird eine spezielle Syntax für OID verwendet:
<OID der Daten>["index","<Basis-OID des Index>","<zu suchende Zeichenfolge>"]
| Parameter | Beschreibung |
|---|---|
| OID der Daten | Haupt-OID, die zum Abrufen von Daten für den Datenpunkt verwendet wird. |
| index | Verarbeitungsmethode. Derzeit wird eine Methode unterstützt: index - nach dem Index suchen und ihn an die Daten-OID anhängen |
| Basis-OID des Index | Diese OID wird nachgeschlagen, um den Indexwert zu erhalten, der der Zeichenfolge entspricht. |
| zu suchende Zeichenfolge | Die Zeichenfolge, die für eine exakte Übereinstimmung mit einem Wert bei der Suche verwendet wird. Groß-/Kleinschreibung wird beachtet. |
Beispiel
Abrufen der Speicherauslastung des apache-Prozesses.
Bei Verwendung dieser OID-Syntax:
HOST-RESOURCES-MIB::hrSWRunPerfMem["index","HOST-RESOURCES-MIB::hrSWRunPath", "/usr/sbin/apache2"]
wird die Indexnummer hier nachgeschlagen:
...
HOST-RESOURCES-MIB::hrSWRunPath.5376 = STRING: "/sbin/getty"
HOST-RESOURCES-MIB::hrSWRunPath.5377 = STRING: "/sbin/getty"
HOST-RESOURCES-MIB::hrSWRunPath.5388 = STRING: "/usr/sbin/apache2"
HOST-RESOURCES-MIB::hrSWRunPath.5389 = STRING: "/sbin/sshd"
...
Nun haben wir den Index 5388. Der Index wird an die Daten-OID angehängt, um den Wert zu erhalten, an dem wir interessiert sind:
HOST-RESOURCES-MIB::hrSWRunPerfMem.5388 = INTEGER: 31468 KBytes
Zwischenspeicherung der Indexsuche
Wenn ein Datenpunkt mit dynamischem Index angefordert wird, ruft Zabbix die gesamte SNMP-Tabelle unter der Basis-OID für den Index ab und speichert sie im Cache, auch wenn eine Übereinstimmung früher gefunden würde. Dies geschieht für den Fall, dass sich später ein anderer Datenpunkt auf dieselbe Basis-OID bezieht - Zabbix sucht den Index dann im Cache nach, anstatt den überwachten Host erneut abzufragen. Beachten Sie, dass jeder Poller-Prozess einen separaten Cache verwendet.
Bei allen nachfolgenden Wertermittlungen wird nur der gefundene Index überprüft. Wenn er sich nicht geändert hat, wird der Wert angefordert. Wenn er sich geändert hat, wird der Cache neu aufgebaut - jeder Poller, der auf einen geänderten Index trifft, durchläuft die SNMP-Indextabelle erneut.