1 Indeksy dynamiczne

Przegląd

Chociaż wymagany numer indeksu (na przykład interfejsu sieciowego) można znaleźć wśród OID-ów SNMP, czasami nie można całkowicie polegać na tym, że numer indeksu zawsze pozostanie taki sam.

Numery indeksów mogą być dynamiczne — mogą zmieniać się z upływem czasu, a w konsekwencji Twoja pozycja może przestać działać.

Aby uniknąć takiej sytuacji, można zdefiniować OID, który uwzględnia możliwość zmiany numeru indeksu.

Na przykład, jeśli chcesz pobrać wartość indeksu do dołączenia do ifInOctets, która odpowiada interfejsowi GigabitEthernet0/1 na urządzeniu Cisco, użyj następującego OID:

ifInOctets["index","ifDescr","GigabitEthernet0/1"]
Składnia

Używana jest specjalna składnia dla OID:

<OID danych>["index","<bazowy OID indeksu>","<szukany ciąg znaków>"]

Parametr Opis
OID danych Główny OID używany do pobierania danych dla pozycji.
index Metoda przetwarzania. Obecnie obsługiwana jest jedna metoda:
index - wyszukuje indeks i dołącza go do OID danych
bazowy OID indeksu Ten OID zostanie sprawdzony w celu uzyskania wartości indeksu odpowiadającej ciągowi znaków.
szukany ciąg znaków Ciąg znaków używany do dokładnego dopasowania wartości podczas wyszukiwania. Wielkość liter ma znaczenie.

Przykład

Pobieranie użycia pamięci procesu apache.

Jeśli używana jest ta składnia OID:

HOST-RESOURCES-MIB::hrSWRunPerfMem["index","HOST-RESOURCES-MIB::hrSWRunPath", "/usr/sbin/apache2"]

numer indeksu zostanie tutaj wyszukany:

...
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"
...

Teraz mamy indeks 5388. Indeks zostanie dołączony do OID danych, aby otrzymać interesującą nas wartość:

HOST-RESOURCES-MIB::hrSWRunPerfMem.5388 = INTEGER: 31468 KBytes

Buforowanie wyszukiwania indeksów

Gdy żądana jest pozycja dynamicznego indeksu, Zabbix pobiera i buforuje całą tabelę SNMP pod bazowym OID dla indeksu, nawet jeśli dopasowanie zostałoby znalezione wcześniej. Jest to wykonywane na wypadek, gdyby inna pozycja odwoływała się później do tego samego bazowego OID — Zabbix wyszuka indeks w pamięci podręcznej zamiast ponownie odpytywać monitorowany host. Należy pamiętać, że każdy proces pollera używa oddzielnej pamięci podręcznej.

We wszystkich kolejnych operacjach pobierania wartości weryfikowany jest tylko znaleziony indeks. Jeśli nie uległ zmianie, żądana jest wartość. Jeśli uległ zmianie, pamięć podręczna jest przebudowywana — każdy poller, który napotka zmieniony indeks, ponownie przechodzi tabelę indeksów SNMP.