This is an old revision of the document!
В этом разделе мы выполним обнаружение 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" } ] }
Следующий скриншот иллюстрирует каким образом мы можем использовать эти макросы в прототипах элементов данных:
Опять же, создание вы можете создать столько прототипов элементов данных, сколько необходимо:
Следующий скриншот иллюстрирует каким образом мы можем использовать эти макросы в прототипах триггеров:
Следующий скриншот иллюстрирует каким образом мы можем использовать эти макросы в прототипах графиков:
Результат нашего правила обнаружения: