4 Откривање SNMP OIDs

Преглед

У овом одељку ћемо извршити откривање ниског нивоа на SNMP уређају.

Овај метод откривања SNMP OIDs је подржан од Zabbix сервера/проксија 6.4.

Пример конфигурације

1. Направите ставку SNMP агента са кључем као што је:

walk[.1.3.6.1.4.1.9999.1.1.1.1]

Ова ставка врши једно SNMP обилажење табеле и враћа све уносе табеле у једном захтеву, у формату који одговара излазу услужног програма snmpwalk са опцијама форматирања -Oe -Ot -On.

Вратиће следећу вишередну текстуалну вредност:

.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. Креирајте правило откривања:

  • У поље Назив унесите описни назив правила откривања (нпр., "Откривање сензора").
  • У пољу Тип селектујте "Зависна ставка".
  • У поље Кључ унесите описни кључ (нпр., "net.if.discovery").
  • У поље Главна ставка изаберите "SNMP ставка шетње".

3. На картици Предобрада додајте корак предобраде са "SNMP шетњом до JSON-а" у падајућем менију Назив са 3 параметра:

  • Назив поља: "{#SENSORNAME}"; OID префикс: ".1.3.6.1.4.1.9999.1.1.1.1.1": Формат: "Непромењено".
  • Назив поља: "{#SENSORTYPE}"; OID префикс: ".1.3.6.1.4.1.9999.1.1.1.1.2": Формат: "Непромењено".
  • Назив поља: "{#SENSORVALUE}"; OID префикс: ".1.3.6.1.4.1.9999.1.1.1.1.3": Формат: "Непромењено".

Након предобраде, правило откривања враћа JSON низ скупова макроа.

На пример:

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

Сваки објекат представља један откривени сензор и пружа макрое као што су {#SNMPINDEX}, {#SENSORNAME}, {#SENSORTYPE} и {#SENSORVALUE}.

Груписани су по SNMP индексу, што је нумерички суфикс на крају сваког OID-а (нпр., .1, .2) — овај индекс јединствено идентификује сваки ред у SNMP табели и аутоматски се издваја као {#SNMPINDEX}.

4. У оквиру правила откривања, креирајте један или више прототипова ставки (са правилом откривања као главном ставком).

На пример, ставка зависна од вредности сензора:

  • У поље Назив унесите "Sensor {#SNMPINDEX}: {#SENSORNAME}".
  • У пољу Тип изаберите "Dependent item".
  • У поље Кључ унесите "sensor.value[{#SNMPINDEX}]".
  • У пољу Главна ставка селектујте "SNMP walk item".

У картици Предобрада, додајте корак предобраде са називом "SNMP walk value" са ".1.3.6.1.4.1.9999.1.1.1.1.3.{#SNMPINDEX}" OID у пољу Параметар. Формат: "Непромењено".

Следеће ставке ће бити откривене:

Name Key OID from which value is extracted Item value
Сензор 1: Сензор температуре sensor.value[1] .1.3.6.1.4.1.9999.1.1.1.1.3.1 100
Сензор 2: Сензор влажности sensor.value[2] .1.3.6.1.4.1.9999.1.1.1.1.3.2 200

Када се правило откривања покрене, креирају се ставке као што су sensor.value[1], sensor.value[2].

Свака зависна ставка извлачи своју вредност из резултата SNMP шетње главне ставке користећи предобраду, без извршавања одвојених SNMP захтева.

5. Референцирајте прототипове зависних ставки у прототиповима окидача користећи исте макрое из правила откривања. Пример:

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

Ово производи окидач за сваки откривени сензор (на пример, sensor.value[1], sensor.value[2]) и активира се ако последња вредност (температура или влажност) пређе 75.

6. Укључите зависне ставке за сваки откривени ентитет. Пример кључа ставке графикона:

sensor.value[{#SNMPINDEX}]

Један графикон се креира по {#SNMPINDEX}, приказујући температуру и влажност током времена.

Ова конфигурација извршава само један SNMP захтев за обилазак по циклусу анкетирања, без обзира на број откривених ставки. Све зависне ставке извлаче своје вредности из главног резултата SNMP обиласка користећи предобраду, значајно смањујући SNMP саобраћај и оптерећење.

Динамички индекси са walk[]

Динамички индекси (на пример, индекси интерфејса) могу се променити када се хардвер реконфигурише. Да би се прилагодило овом понашању, креира се главно правило за откривање SNMP шетње са кључем као што је:

walk[1.3.6.1.2.1.2.2.1.10]

Након предобраде SNMP шетње до JSON-а, резултат може изгледати као:

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

Прототип зависне ставке користи макро {#SNMPINDEX} за конструисање кључа:

net.if.in[{#SNMPINDEX}]

Предобрада за овај прототип укључује име "SNMP вредност шетње" са "1.3.6.1.2.1.2.2.1.10.{#SNMPINDEX}" OID у пољу Параметар. Формат: "Непромењено".

Током извршавања, креирају се стварне ставке као што су net.if.in[2] и net.if.in[3]. Ако се дати индекс интерфејса промени (на пример, ако се индекс 2 замени са 5 у SNMP табели), онда се при следећем покретању правила откривања:

  • Стара зависна ставка net.if.in[2] је означена као "изгубљена" или уклоњена, и за ту ставку се не прикупљају нови подаци.
  • Креира се нова зависна ставка net.if.in[5], почевши од празне историје.
  • Историјски подаци из net.if.in[2] се не премештају аутоматски у net.if.in[5].

Пример прототипа окидача:

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

Пример прототипа графа укључује ставке:

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

Ова конфигурација обезбеђује поуздано праћење табела са динамичким индексима, а истовремено минимизира SNMP саобраћај — потребан је само један SNMP обилазак по циклусу анкетирања, при чему зависни прототипови ставки извлаче потребне вредности.

Откривени ентитети

Када сервер ради, креираће стварне зависне ставке, окидаче и графиконе на основу вредности које враћа SNMP правило за откривање.