В этом разделе мы будем выполнять SNMP обнаружение на свитче.
В отличие от обнаружения файловых систем и сетевых интерфейсов, элемент данных не обязан иметь ключ «snmp.discovery» - достаточно того, что он будет иметь тип «SNMP агент».
Для настройки правила обнаружения выполните следующее:
Все обязательные поля ввода отмечены красной звёздочкой.
Идентификаторы объектов (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 обнаружения. В настройках узла сети они будут снабжены префиксом золотистого цвета, который является ссылкой на породившее их правило обнаружения.