Nesta seção, iremos realizar uma descoberta SNMP em um switch.
Diferentemente da descoberta de sistema de arquivos e de interface de rede, o item não precisa necessariamente ter uma chave "snmp.discovery" - o tipo de item SNMP agent é suficiente.
Para configurar a regra de descoberta, faça o seguinte:
Todos os campos obrigatórios estão marcados com um asterisco vermelho.
Os OIDs a serem descobertos são definidos no campo SNMP OID no seguinte formato: discovery[{#MACRO1}, oid1, {#MACRO2}, oid2, …,]
onde {#MACRO1}, {#MACRO2} … são nomes de macros lld válidos e oid1, oid2... são OIDs capazes de gerar valores significativos para essas macros. Uma macro interna {#SNMPINDEX} contendo o índice do OID descoberto é aplicada às entidades descobertas. As entidades descobertas são agrupadas pelo valor da macro {#SNMPINDEX}.
Para entender o que queremos dizer, vamos executar alguns snmpwalks em nosso 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
E definir o SNMP OID para: discovery[{#IFDESCR}, ifDescr, {#IFPHYSADDRESS}, ifPhysAddress]
Agora esta regra irá descobrir entidades com as macros {#IFDESCR} definidas como WAN, LAN1 e LAN2, macros {#IFPHYSADDRESS} definidas como 8:0:27:90:7a:75, 8:0:27:90:7a:76 e 8:0:27:2b:af:9e, macros {#SNMPINDEX} definidas como os índices dos OIDs descobertos 1, 2 e 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"
}
]
Se uma entidade não tiver o OID especificado, a macro correspondente será omitida para essa entidade. Por exemplo, se tivermos os seguintes dados:
ifDescr.1 "Interface #1"
ifDescr.2 "Interface #2"
ifDescr.4 "Interface #4"
ifAlias.1 "eth0"
ifAlias.2 "eth1"
ifAlias.3 "eth2"
ifAlias.5 "eth4"
Então, neste caso, a descoberta SNMP discovery[{#IFDESCR}, ifDescr, {#IFALIAS}, ifAlias]
retornará a seguinte estrutura:
[
{
"{#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"
}
]
A captura de tela a seguir ilustra como podemos usar essas macros em protótipos de item:
Você pode criar quantos protótipos de item forem necessários:
A captura de tela a seguir ilustra como podemos usar essas macros em protótipos de trigger:
A captura de tela a seguir ilustra como podemos usar essas macros em protótipos de gráficos:
Um resumo da nossa regra de descoberta:
Quando o server é executado, ele criará itens, triggers e gráficos reais com base nos valores que a regra de descoberta SNMP retorna. Na configuração do host, eles são prefixados com um link laranja para a regra de descoberta de onde vieram.