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 izpilda vienu SNMP tabulas izgājienu un atgriež visus tabulas ierakstus vienā pieprasījumā formātā, kas atbilst snmpwalk utilītas 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 kārtulu:
- Laukā Name ievadiet aprakstošu atklāšanas kārtulas nosaukumu (piemēram, "Atklāt sensorus").
- 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 soli, nolaižamajā sarakstā Name izvēloties "SNMP walk to JSON" ar 3 parametriem:
- 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 kārtula atgriež JSON masīvu ar makrosu kopām.
Piemēram:
[
{
"{#SNMPINDEX}": "1",
"{#SENSORNAME}": "Temperature Sensor",
"{#SENSORTYPE}": "temp",
"{#SENSORVALUE}": "100"
},
{
"{#SNMPINDEX}": "2",
"{#SENSORNAME}": "Humidity Sensor",
"{#SENSORTYPE}": "humidity",
"{#SENSORVALUE}": "200"
}
]
Katrs objekts attēlo vienu atklātu sensoru un nodrošina tādus makrosus kā {#SNMPINDEX}, {#SENSORNAME}, {#SENSORTYPE} un {#SENSORVALUE}.
Tie ir grupēti pēc SNMP indeksa, kas ir skaitliskais sufikss katra OID beigās (piemēram, .1, .2) — šis indekss unikāli identificē katru rindu SNMP tabulā un tiek automātiski iegūts kā {#SNMPINDEX}.
4. Zem atklāšanas kārtulas izveidojiet vienu vai vairākus vienumu prototipus (ar atklāšanas kārtulu kā galveno vienumu).
Piemēram, sensora vērtības atkarīgais 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 soli ar nosaukumu "SNMP walk value", laukā Parameter norādot OID ".1.3.6.1.4.1.9999.1.1.1.1.3.{#SNMPINDEX}". Format: "Unchanged".
Tiks atklāti šādi vienumi:
| Nosaukums | Atslēga | OID, no kura tiek iegūta vērtība | Vienuma vērtība |
|---|---|---|---|
| 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 kārtula tiek izpildīta, tiek izveidoti tādi vienumi kā sensor.value[1], sensor.value[2].
Katrs atkarīgais vienums iegūst savu vērtību no galvenā vienuma SNMP walk rezultāta, izmantojot priekšapstrādi, neveicot atsevišķus SNMP pieprasījumus.
5. Atsaucieties uz atkarīgo vienumu prototipiem trigeru prototipos, izmantojot tos pašus makrosus no atklāšanas kārtulas. Piemērs:
{Template_Sensor:sensor.value[{#SNMPINDEX}].last()} > 75
Tas izveido trigeri katram atklātajam sensoram (piemēram, sensor.value[1], sensor.value[2]) un nostrādā, 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ā izpilda tikai vienu SNMP walk pieprasījumu neatkarīgi no atklāto vienumu skaita. Visi atkarīgie vienumi iegūst savas vērtības no galvenā SNMP walk rezultāta, izmantojot priekšapstrādi, tādējādi 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.