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 :
Lorsque le serveur est exécuté, il crée des éléments réels, des déclencheurs et des graphiques en fonction des valeurs renvoyées par la règle de découverte SNMP. Dans la configuration de l'hôte, ils sont précédés d'un lien orange vers une règle de découverte d'origine.