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.