Dans cette section, nous allons effectuer une découverte SNMP sur un switch.
Contrairement à la découverte du système de fichiers et de l'interface réseau, l'élément n'a pas nécessairement besoin d'une clé “snmp.discovery” - le type d'élément agent SNMP est suffisant.
La découverte des OID SNMP est supportée depuis le serveur/proxy Zabbix 2.0.
Pour configurer la règle de découverte, procédez comme suit :
Tous les champs de saisie obligatoires sont marqués d'un astérisque rouge.
Les OID à découvrir sont définis dans le champ SNMP OID au format suivant : discovery[{#MACRO1}, oid1, {#MACRO2}, oid2, …,]
où {#MACRO1}, {#MACRO2} … sont des noms de macro lld valides et oid1, oid2… sont des OID capables de générer des valeurs significatives pour ces macros. Une macro intégrée {#SNMPINDEX} contenant l'index de l'OID découvert est appliquée aux entités découvertes. Les entités découvertes sont regroupées par la valeur de macro {#SNMPINDEX}.
Pour comprendre ce que nous voulons dire, exécutons quelques commandes snmpwalks sur notre switch :
$ 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
Et définissez l'OID SNMP sur : discovery[{#IFDESCR}, ifDescr, {#IFPHYSADDRESS}, ifPhysAddress]
Cette règle détecte désormais les entités avec les macros {#IFDESCR} définies sur WAN, LAN1 et LAN2, les macros {#IFPHYSADDRESS} sont définies sur 8:0:27:90:7a:75, 8:0:27:90:7a:76, et 8:0:27:2b:af:9e, les macros {#SNMPINDEX} sont définies sur les index OID découverts 1, 2 and 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" } ] }Si une entité ne possède pas l'OID spécifié, la macro correspondante sera omise pour cette entité. Par exemple si nous avons les données suivantes :
ifDescr.1 "Interface #1" ifDescr.2 "Interface #2" ifDescr.4 "Interface #4" ifAlias.1 "eth0" ifAlias.2 "eth1" ifAlias.3 "eth2" ifAlias.5 "eth4"
Dans ce cas, la découverte SNMP de discovery[{#IFDESCR}, ifDescr, {#IFALIAS}, ifAlias] renverra la structure suivante :
{ "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" } ] }
La capture d'écran suivante illustre l'utilisation de ces macros dans des prototypes d'élément :
Encore une fois, créez autant de prototypes d’élément que nécessaire :
La capture d'écran suivante montre comment utiliser ces macros dans des prototypes de déclencheurs :
La capture d'écran suivante montre comment utiliser ces macros dans des prototypes de graphiques :
Un résumé de notre règle de découverte :