3 Обнаружение SNMP OID'ов

Обзор

В этом разделе мы выполним обнаружение SNMP на коммутаторе.

Ключ элемента данных

В отличие от обнаружения файловых систем и сетевых интерфейсов - этот элемент данных не требует наличия ключа "snmp.discovery", достаточно указать, что типом элемента данных является SNMP агент.

Обнаружение SNMP OID'ов поддерживается начиная с Zabbix сервера/прокси 2.0.

Для настройки правила обнаружения, выполните следующее:

  • Перейдите в: НастройкаШаблоны
  • Нажмите на Обнаружение в строке с соответствующим шаблоном

  • Нажмите на Создать правило обнаружения в верхнем правом углу экрана
  • Заполните диалог правила обнаружение необходимыми деталями как показано на скриншоте ниже

Все обязательные поля ввода отмечены красной звёздочкой.

OID'ы для обнаружения добавляются в поле SNMP OID в следующем формате: discovery[{#МАКРОС1}, oid1, {#МАКРОС2}, oid2, …,]

где {#МАКРОС1}, {#МАКРОС2} … допустимые имена низкоуровневых макросов и oid1, oid2... являются OID'ами способными сгенерировать осмысленные значения для этих макросов. Встроенный макрос {#SNMPINDEX} содержит индекс обнаруженного OID, который применяется к обнаруженным объектам. Обнаруженные объекты группируются по значению макроса {#SNMPINDEX}.

Для понимания того, что мы имеем в виду, давайте выполним несколько раз snmpwalk на нашем коммутаторе:

$ snmpwalk -v 2c -c public 192.168.1.1 IF-MIB::ifDescr
       IF-MIB::ifDescr.1 = STRING: WAN
       IF-MIB::ifDescr.2 = STRING: LAN1
       IF-MIB::ifDescr.3 = STRING: LAN2
       
       $ snmpwalk -v 2c -c public 192.168.1.1 IF-MIB::ifPhysAddress
       IF-MIB::ifPhysAddress.1 = STRING: 8:0:27:90:7a:75
       IF-MIB::ifPhysAddress.2 = STRING: 8:0:27:90:7a:76
       IF-MIB::ifPhysAddress.3 = STRING: 8:0:27:2b:af:9e

И зададим SNMP OID равным: discovery[{#IFDESCR}, ifDescr, {#IFPHYSADDRESS}, ifPhysAddress]

Теперь это правило будет обнаруживать объекты с макросом {#IFDESCR} равным WAN, LAN1 и LAN2, макросом {#IFPHYSADDRESS} равным 8:0:27:90:7a:75, 8:0:27:90:7a:76, и 8:0:27:2b:af:9e, макросом {#SNMPINDEX} равным индексам обнаруженных OID 1, 2 и 3:

{
           "data": [
               {
                   "{#SNMPINDEX}": "1",
                   "{#IFDESCR}": "WAN",
                   "{#IFPHYSADDRESS}": "8:0:27:90:7a:75"
               },
               {
                   "{#SNMPINDEX}": "2",
                   "{#IFDESCR}": "LAN1",
                   "{#IFPHYSADDRESS}": "8:0:27:90:7a:76"
               },
               {
                   "{#SNMPINDEX}": "3",
                   "{#IFDESCR}": "LAN2",
                   "{#IFPHYSADDRESS}": "8:0:27:2b:af:9e"
               }
           ]
       }

Если обнаруженный объект не имеет указанный OID, тогда по этому объекту соответстующий макрос пропускается. Например, если у нас есть следующие данные:

ifDescr.1 "Interface #1"
       ifDescr.2 "Interface #2"
       ifDescr.4 "Interface #4"
       
       ifAlias.1 "eth0"
       ifAlias.2 "eth1"
       ifAlias.3 "eth2"
       ifAlias.5 "eth4"

Тогда, в случае SNMP обнаружения discovery[{#IFDESCR}, ifDescr, {#IFALIAS}, ifAlias] вернется следующая структура:

{
           "data": [
               {
                   "{#SNMPINDEX}": 1,
                   "{#IFDESCR}": "Interface #1",
                   "{#IFALIAS}": "eth0"
               },
               {
                   "{#SNMPINDEX}": 2,
                   "{#IFDESCR}": "Interface #2",
                   "{#IFALIAS}": "eth1"
               },
               {
                   "{#SNMPINDEX}": 3,
                   "{#IFALIAS}": "eth2"
               },
               {
                   "{#SNMPINDEX}": 4,
                   "{#IFDESCR}": "Interface #4"
               },
               {
                   "{#SNMPINDEX}": 5,
                   "{#IFALIAS}": "eth4"
               }
           ]
       }  

Прототипы элементов данных

Следующий скриншот иллюстрирует каким образом мы можем использовать эти макросы в прототипах элементов данных:

Опять же, вы можете создать столько прототипов элементов данных, сколько необходимо:

Прототипы триггеров

Следующий скриншот иллюстрирует каким образом мы можем использовать эти макросы в прототипах триггеров:

Прототипы графиков

Следующий скриншот иллюстрирует каким образом мы можем использовать эти макросы в прототипах графиков:

Результат нашего правила обнаружения:

Обнаруженные объекты

Когда сервер выполнит правило обнаружения, будут созданы реальные элементы данных, триггеры и графики на основе значений, которые вернет правило обнаружения SNMP. В настройках узла сети эти объекты будут иметь префикс с оранжевой ссылкой на правило обнаружения, с которого пришли эти объекты.