4 Odkrywanie OID-ów SNMP

Przegląd

W tej sekcji przeprowadzimy odkrywanie niskiego poziomu na urządzeniu SNMP.

Ta metoda odkrywania OID SNMP jest obsługiwana od wersji 6.4 serwera/proxy Zabbix.

Przykładowa konfiguracja

1. Utwórz pozycję agenta SNMP z kluczem takim jak:

walk[.1.3.6.1.4.1.9999.1.1.1.1]

Ta pozycja wykonuje pojedyncze przejście po tabeli SNMP i zwraca wszystkie wpisy tabeli w jednym żądaniu, w formacie odpowiadającym danym wyjściowym narzędzia snmpwalk z opcjami formatowania -Oe -Ot -On.

Zwróci następującą wielowierszową wartość tekstową:

.1.3.6.1.4.1.9999.1.1.1.1.1.1 = STRING: "Temperature Sensor"
.1.3.6.1.4.1.9999.1.1.1.1.2.1 = STRING: "temp"
.1.3.6.1.4.1.9999.1.1.1.1.3.1 = 100
.1.3.6.1.4.1.9999.1.1.1.1.1.2 = STRING: "Humidity Sensor"
.1.3.6.1.4.1.9999.1.1.1.1.2.2 = STRING: "humidity"
.1.3.6.1.4.1.9999.1.1.1.1.3.2 = 200

2. Utwórz regułę wykrywania:

  • W polu Name wprowadź opisową nazwę reguły wykrywania (np. „Wykryj czujniki”).
  • W polu Type wybierz „Dependent item”.
  • W polu Key wprowadź opisowy klucz (np. „net.if.discovery”).
  • W polu Master item wybierz „SNMP walk item”.

3. Na karcie Preprocessing dodaj krok przetwarzania wstępnego z opcją „SNMP walk to JSON” wybraną na liście rozwijanej Name i z 3 parametrami:

  • Field name: "{#SENSORNAME}"; OID prefix: ".1.3.6.1.4.1.9999.1.1.1.1.1": Format: "Unchanged".
  • Field name: "{#SENSORTYPE}"; OID prefix: ".1.3.6.1.4.1.9999.1.1.1.1.2": Format: "Unchanged".
  • Field name: "{#SENSORVALUE}"; OID prefix: ".1.3.6.1.4.1.9999.1.1.1.1.3": Format: "Unchanged".

Po przetwarzaniu wstępnym reguła wykrywania zwraca tablicę JSON zestawów makr.

Na przykład:

[
    {
        "{#SNMPINDEX}": "1",
        "{#SENSORNAME}": "Temperature Sensor",
        "{#SENSORTYPE}": "temp",
        "{#SENSORVALUE}": "100"
    },
    {
        "{#SNMPINDEX}": "2",
        "{#SENSORNAME}": "Humidity Sensor",
        "{#SENSORTYPE}": "humidity",
        "{#SENSORVALUE}": "200"
    }
]

Każdy obiekt reprezentuje jeden wykryty czujnik i udostępnia makra takie jak {#SNMPINDEX}, {#SENSORNAME}, {#SENSORTYPE} oraz {#SENSORVALUE}.

Są one grupowane według indeksu SNMP, który jest numerycznym sufiksem na końcu każdego OID (np. .1, .2) — ten indeks jednoznacznie identyfikuje każdy wiersz w tabeli SNMP i jest automatycznie wyodrębniany jako {#SNMPINDEX}.

4. W ramach reguły wykrywania utwórz jeden lub więcej prototypów pozycji (z regułą wykrywania jako pozycją nadrzędną).

Na przykład zależna pozycja wartości czujnika:

  • W polu Name wprowadź „Sensor {#SNMPINDEX}: {#SENSORNAME}”.
  • W polu Type wybierz „Dependent item”.
  • W polu Key wprowadź „sensor.value[{#SNMPINDEX}]”.
  • W polu Master item wybierz „SNMP walk item”.

Na karcie Preprocessing dodaj krok przetwarzania wstępnego o nazwie „SNMP walk value” z OID ".1.3.6.1.4.1.9999.1.1.1.1.3.{#SNMPINDEX}" w polu Parameter. Format: "Unchanged".

Zostaną wykryte następujące pozycje:

Name Key OID from which value is extracted Item value
Sensor 1: Temperature Sensor sensor.value[1] .1.3.6.1.4.1.9999.1.1.1.1.3.1 100
Sensor 2: Humidity Sensor sensor.value[2] .1.3.6.1.4.1.9999.1.1.1.1.3.2 200

Po uruchomieniu reguły wykrywania zostaną utworzone pozycje takie jak sensor.value[1], sensor.value[2].

Każda pozycja zależna wyodrębnia swoją wartość z wyniku SNMP walk pozycji nadrzędnej przy użyciu przetwarzania wstępnego, bez wykonywania osobnych żądań SNMP.

5. Odwołuj się do prototypów pozycji zależnych w prototypach wyzwalaczy, używając tych samych makr z reguły wykrywania. Przykład:

{Template_Sensor:sensor.value[{#SNMPINDEX}].last()} > 75

Powoduje to utworzenie wyzwalacza dla każdego wykrytego czujnika (na przykład sensor.value[1], sensor.value[2]) i jego uruchomienie, jeśli najnowsza wartość (temperatury lub wilgotności) przekroczy 75.

6. Uwzględnij pozycje zależne dla każdej wykrytej jednostki. Przykładowy klucz elementu wykresu:

sensor.value[{#SNMPINDEX}]

Dla każdego {#SNMPINDEX} tworzony jest jeden wykres, przedstawiający temperaturę i wilgotność w czasie.

Ta konfiguracja wykonuje tylko jedno żądanie SNMP walk na cykl odpytywania, niezależnie od liczby wykrytych pozycji. Wszystkie pozycje zależne wyodrębniają swoje wartości z nadrzędnego wyniku SNMP walk przy użyciu przetwarzania wstępnego, co znacząco zmniejsza ruch SNMP i obciążenie.

Dynamiczne indeksy z walk[]

Dynamiczne indeksy (na przykład indeksy interfejsów) mogą się zmieniać po rekonfiguracji sprzętu. Aby uwzględnić takie zachowanie, tworzona jest nadrzędna reguła wykrywania SNMP walk z kluczem takim jak:

walk[1.3.6.1.2.1.2.2.1.10]

Po przetwarzaniu wstępnym SNMP walk do JSON wynik może wyglądać następująco:

[
    {
        "{#SNMPINDEX}": "2",
        "{#VALUE}": "123456"
    },
    {
        "{#SNMPINDEX}": "3",
        "{#VALUE}": "654321"
    }
]

Prototyp pozycji zależnej używa makra {#SNMPINDEX} do zbudowania klucza:

net.if.in[{#SNMPINDEX}]

Przetwarzanie wstępne dla tego prototypu obejmuje nazwę „SNMP walk value” z OID „1.3.6.1.2.1.2.2.1.10.{#SNMPINDEX}” w polu Parameter. Format: „Unchanged”.

W czasie działania tworzone są rzeczywiste pozycje, takie jak net.if.in[2] i net.if.in[3]. Jeśli dany indeks interfejsu ulegnie zmianie (na przykład jeśli indeks 2 zostanie zastąpiony przez 5 w tabeli SNMP), to przy następnym uruchomieniu reguły wykrywania:

  • Stara zależna pozycja net.if.in[2] zostanie oznaczona jako „lost” lub usunięta i nie będą już zbierane dla niej nowe dane.
  • Zostanie utworzona nowa zależna pozycja net.if.in[5], rozpoczynająca z pustą historią.
  • Dane historyczne z net.if.in[2] nie są automatycznie przenoszone do net.if.in[5].

Przykład prototypu wyzwalacza:

{Template_Interface:net.if.in[{#SNMPINDEX}].last()} > 1000000000

Przykład prototypu wykresu obejmuje pozycje:

net.if.in[{#SNMPINDEX}]
net.if.out[{#SNMPINDEX}]

Ta konfiguracja zapewnia niezawodne monitorowanie tabel z dynamicznymi indeksami przy jednoczesnym zminimalizowaniu ruchu SNMP — wymagany jest tylko jeden SNMP walk na cykl odpytywania, a prototypy pozycji zależnych wyodrębniają potrzebne wartości.

Wykryte encje

Gdy serwer jest uruchomiony, utworzy rzeczywiste zależne pozycje, wyzwalacze i wykresy na podstawie wartości zwracanych przez regułę wykrywania SNMP.