4 SNMP OID atklāšana
Pārskats
Šajā sadaļā mēs veiksim zemā līmeņa atklāšanu SNMP ierīcē.
Šī SNMP OID atklāšanas metode tiek atbalstīta kopš Zabbix serveris/starpniekserveris 6.4.
Konfigurācijas piemērs
1. Izveidojiet SNMP aģenta vienumu ar atslēgu, piemēram:
walk[.1.3.6.1.4.1.9999.1.1.1.1]

Šis vienums veic vienu SNMP tabulas caurskati un vienā pieprasījumā atgriež visus tabulas ierakstus formātā, kas atbilst utilītas snmpwalk izvadei ar formatēšanas opcijām -Oe -Ot -On.
Tas atgriezīs šādu vairākrindu teksta vērtību:
.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. Izveidojiet atklāšanas noteikumu:
- Laukā Name ievadiet aprakstošu atklāšanas noteikuma nosaukumu (piemēram, "Discover sensors").
- Laukā Type atlasiet "Dependent item".
- Laukā Key ievadiet aprakstošu atslēgu (piemēram, "net.if.discovery").
- Laukā Master item atlasiet "SNMP walk item".

3. Cilnē Preprocessing pievienojiet priekšapstrādes darbību, kuras nolaižamajā sarakstā Name atlasīts "SNMP walk to JSON", un konfigurējiet 3 parametrus:
- 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".
Pēc priekšapstrādes atklāšanas noteikums atgriež makro kopu JSON masīvu.
Piemēram:
[
{
"{#SNMPINDEX}": "1",
"{#SENSORNAME}": "Temperature Sensor",
"{#SENSORTYPE}": "temp",
"{#SENSORVALUE}": "100"
},
{
"{#SNMPINDEX}": "2",
"{#SENSORNAME}": "Humidity Sensor",
"{#SENSORTYPE}": "humidity",
"{#SENSORVALUE}": "200"
}
]
Katrs objekts apzīmē vienu atklāto sensoru un nodrošina tādus makro kā {#SNMPINDEX}, {#SENSORNAME}, {#SENSORTYPE} un {#SENSORVALUE}.
Tie tiek grupēti pēc SNMP indeksa, kas ir skaitliskais sufikss katra OID beigās (piemēram, .1, .2). Šis indekss unikāli identificē katru SNMP tabulas rindu un tiek automātiski iegūts kā {#SNMPINDEX}.
4. Zem atklāšanas noteikuma izveidojiet vienu vai vairākus vienumu prototipus (atklāšanas noteikumu norādot kā galveno vienumu).
Piemēram, no sensora vērtības atkarīgs vienums:
- Laukā Name ievadiet "Sensor {#SNMPINDEX}: {#SENSORNAME}".
- Laukā Type atlasiet "Dependent item".
- Laukā Key ievadiet "sensor.value[{#SNMPINDEX}]".
- Laukā Master item atlasiet "SNMP walk item".

Cilnē Preprocessing pievienojiet priekšapstrādes darbību ar nosaukumu "SNMP walk value", laukā Parameter ievadot OID ".1.3.6.1.4.1.9999.1.1.1.1.3.{#SNMPINDEX}". Format: "Unchanged".
Tiks atklāti šādi vienumi:
| 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 |
Kad atklāšanas noteikums tiek izpildīts, tiek izveidoti tādi vienumi kā sensor.value[1] un sensor.value[2].
Katrs atkarīgais vienums, izmantojot priekšapstrādi, iegūst savu vērtību no galvenā vienuma SNMP caurskates rezultāta, pats neveicot atsevišķus SNMP pieprasījumus.
5. Atsaucieties uz atkarīgo vienumu prototipiem trigeru prototipos, izmantojot tos pašus makro no atklāšanas noteikuma. Piemērs:
{Template_Sensor:sensor.value[{#SNMPINDEX}].last()} > 75
Tādējādi katram atklātajam sensoram (piemēram, sensor.value[1], sensor.value[2]) tiek izveidots trigeris, kas aktivizējas, ja jaunākā vērtība (temperatūra vai mitrums) pārsniedz 75.
6. Iekļaujiet atkarīgos vienumus katrai atklātajai entītijai. Grafika vienuma atslēgas piemērs:
sensor.value[{#SNMPINDEX}]
Katram {#SNMPINDEX} tiek izveidots viens grafiks, kurā laika gaitā tiek attēlota temperatūra un mitrums.
Šī konfigurācija katrā aptaujas ciklā veic tikai vienu SNMP caurskates pieprasījumu neatkarīgi no atklāto vienumu skaita. Visi atkarīgie vienumi, izmantojot priekšapstrādi, iegūst savas vērtības no galvenās SNMP caurskates rezultāta, būtiski samazinot SNMP datplūsmu un slodzi.
Dinamiskie indeksi ar walk[]
Dinamiskie indeksi (piemēram, saskarņu indeksi) var mainīties, kad tiek pārkonfigurēta aparatūra. Lai pielāgotos šādai darbībai, tiek izveidots galvenais SNMP walk atklāšanas kārtulas vienums ar atslēgu, piemēram:
walk[1.3.6.1.2.1.2.2.1.10]
Pēc SNMP walk uz JSON priekšapstrādes rezultāts var izskatīties šādi:
[
{
"{#SNMPINDEX}": "2",
"{#VALUE}": "123456"
},
{
"{#SNMPINDEX}": "3",
"{#VALUE}": "654321"
}
]
Atkarīgā vienuma prototips izmanto makrosu {#SNMPINDEX}, lai izveidotu atslēgu:
net.if.in[{#SNMPINDEX}]
Šī prototipa priekšapstrāde ietver "SNMP walk value" nosaukumu ar OID "1.3.6.1.2.1.2.2.1.10.{#SNMPINDEX}" laukā Parameter. Format: "Unchanged".
Izpildes laikā tiek izveidoti faktiskie vienumi, piemēram, net.if.in[2] un net.if.in[3].
Ja konkrētas saskarnes indekss mainās (piemēram, ja indekss 2 SNMP tabulā tiek aizstāts ar 5), tad nākamajā atklāšanas kārtulas izpildes reizē:
- Vecais atkarīgais vienums net.if.in[2] tiek atzīmēts kā "lost" vai noņemts, un šim vienumam vairs netiek ievākti jauni dati.
- Tiek izveidots jauns atkarīgais vienums net.if.in[5], sākot ar tukšu vēsturi.
- Vēsturiskie dati no net.if.in[2] netiek automātiski pārvietoti uz net.if.in[5].
Trigera prototipa piemērs:
{Template_Interface:net.if.in[{#SNMPINDEX}].last()} > 1000000000
Grafika prototipa piemērs ietver vienumus:
net.if.in[{#SNMPINDEX}]
net.if.out[{#SNMPINDEX}]
Šī konfigurācija nodrošina uzticamu tabulu ar dinamiskiem indeksiem uzraudzību, vienlaikus samazinot SNMP datplūsmu — katram aptaujas ciklam ir nepieciešams tikai viens SNMP walk, bet atkarīgo vienumu prototipi iegūst nepieciešamās vērtības.
Atklātās entītijas
Kad serveris darbojas, tas izveidos reālus atkarīgos vienumus, trigerus un grafikus, pamatojoties uz vērtībām, ko atgriež SNMP atklāšanas kārtula.