4. Обнаружение SNMP OID'ов
Обзор
В этом разделе мы будем выполнять SNMP обнаружение на свитче.
Ключ элемента данных
В отличие от обнаружения файловых систем и сетевых интерфейсов, элемент данных не обязан иметь ключ «snmp.discovery» — достаточно того, что он будет иметь тип «SNMP агент».
Для настройки правила обнаружения выполните следующее:
- Перейдите к: Настройка → Шаблоны (Configuration → Templates)
- Нажмите на Обнаружение (Discovery) в строке с соответствующим шаблоном

- Нажмите на Создать правило обнаружения (Create discovery rule) в правом верхнем углу экрана
- Заполните диалог правила обнаружения нужными атрибутами, как на снимке экрана ниже

Все обязательные поля ввода отмечены красной звёздочкой.
Идентификаторы объектов (OID'ы) для обнаружения определяются в поле «SNMP OID» в следующем формате: discovery[{#МАКРОС1}, oid1, {#МАКРОС2}, oid2, …,]
где {#МАКРОС}, {#МАКРОС2} … — это корректные имена LLD макросов, а 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:
[
{
"{#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] вернёт следующую структуру:
[
{
"{#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 обнаружения. В настройках узла сети они будут снабжены префиксом золотистого цвета, который является ссылкой на породившее их правило обнаружения.


