ru:manual:discovery:low_level_discovery:snmp_oids

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Previous revision
ru:manual:discovery:low_level_discovery:snmp_oids [2019/12/03 09:51]
ru:manual:discovery:low_level_discovery:snmp_oids [2020/09/17 10:13] (current)
martins-v fixing item prototype screenshot with incorrect oid field (ZBX-18329)
Line 1: Line 1:
 +==== 3 Обнаружение SNMP OID'​ов ====
  
 +=== Обзор ===
 +
 +В этом разделе мы выполним [[:​ru/​manual/​discovery/​low_level_discovery|обнаружение]] SNMP на коммутаторе.
 +
 +=== Ключ элемента данных ===
 +
 +В отличие от обнаружения файловых систем и сетевых интерфейсов - этот элемент данных не требует наличия ключа "​snmp.discovery",​ достаточно указать,​ что типом элемента данных является SNMP агент.
 +
 +Обнаружение SNMP OID'​ов поддерживается начиная с Zabbix сервера/​прокси 2.0.
 +
 +Для настройки правила обнаружения,​ выполните следующее:​
 +
 +  * Перейдите в: //​Настройка//​ -> //​Шаблоны// ​
 +  * Нажмите на //​Обнаружение//​ в строке с соответствующим шаблоном
 +
 +{{manual:​discovery:​low_level_discovery:​templates_snmp0.png?​600|}}
 +
 +  * Нажмите на //​Создать правило обнаружения//​ в верхнем правом углу экрана
 +  * Заполните диалог правила обнаружение необходимыми деталями как показано на скриншоте ниже
 +
 +{{manual:​discovery:​low_level_discovery:​lld_rule_snmp0a.png|}}
 +
 +Все обязательные поля ввода отмечены красной звёздочкой.
 +
 +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**:
 +
 +<code java>
 +[
 + {
 + "​{#​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"​
 + }
 +]
 +</​code>​
 +
 +Если обнаруженный объект не имеет указанный 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]''​ вернется следующая структура:​
 +
 +<code java>
 +[
 + {
 + "​{#​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"​
 + }
 +]
 +</​code>​
 +
 +=== Прототипы элементов данных ===
 +
 +Следующий скриншот иллюстрирует каким образом мы можем использовать эти макросы в прототипах элементов данных:​
 +
 +{{manual:​discovery:​low_level_discovery:​item_prototype_snmp.png|}}
 +
 +Опять же, вы можете создать столько прототипов элементов данных,​ сколько необходимо:​
 +
 +{{manual:​discovery:​low_level_discovery:​item_prototypes_snmp.png|}}
 +
 +=== Прототипы триггеров ===
 +
 +Следующий скриншот иллюстрирует каким образом мы можем использовать эти макросы в прототипах триггеров:​
 +
 +{{manual:​discovery:​low_level_discovery:​trigger_prototype_snmp.png|}}
 +
 +{{manual:​discovery:​low_level_discovery:​trigger_prototypes_snmp.png|}}
 +
 +=== Прототипы графиков ===
 +
 +Следующий скриншот иллюстрирует каким образом мы можем использовать эти макросы в прототипах графиков:​
 +
 +{{manual:​discovery:​low_level_discovery:​graph_prototype_snmp.png|}}
 +
 +{{manual:​discovery:​low_level_discovery:​graph_prototypes_snmp.png|}}
 +
 +Результат нашего правила обнаружения:​
 +
 +{{manual:​discovery:​low_level_discovery:​lld_rules_snmp.png|}}
 +
 +=== Обнаруженные объекты ===
 +
 +Когда сервер выполнит правило обнаружения,​ будут созданы реальные элементы данных,​ триггеры и графики на основе значений,​ которые вернет правило обнаружения SNMP. В настройках узла сети эти объекты будут иметь префикс с оранжевой ссылкой на правило обнаружения,​ с которого пришли эти объекты.
 +
 +{{manual:​discovery:​low_level_discovery:​discovered_items_snmp.png|}}
 +
 +{{manual:​discovery:​low_level_discovery:​discovered_triggers_snmp.png|}}
 +
 +{{manual:​discovery:​low_level_discovery:​discovered_graphs_snmp.png|}}