Olá pessoal,
Vira e mexe eu vejo a questão, recorrente, sobre como obter OID’s, MIB’s e dados vi snmp.
O lance é o seguinte, sem entender pelo menos o mínimo é muito complicado realmente, extrair dados via snmp.
Então vou colocar aqui uma dica de como extrair o mínimo para você configurar os seus itens no zabbix com o snmp.
1.
snmpwalk – retrieve a subtree of management values using SNMP GETNEXT requests
2.
snmpget – communicates with a network entity using SNMP GET requests
Com estes dois programinhas que fazem parte do pacote net-snmp* (RHEL based) e snmp* (Debian based), fica muito tranquilo configurar os itens.
O que você tem que saber é simplesmente o IP do seu equipamente e a comunidade com previlégios de leitura que ele usa para ler os dados snmp.
Com estas informações montei duas linhas super simples para você obter os dados necessários.
O conjunto das informações obtidas de um equipamento via snmp é chamado de MIB, e cada informação desta é chamada de OID, então o que precisamos são dos OID’s.
Em equipamentos proprietários as MIB’s são fornecidos por seus fabricantes.
Como obter os OID’s ?
O snmpwalk pode nos ajudar:
Então vou dar um exemplo de como obter estas informações de um equpamento CISCO.
snmpwalk -On -v
No meu caso ficou assim:
snmpwalk -On -v 1 -c public 10.1.1.1 (ip de exemplo)
E obtive o seguinte resultaso (Como é muito extenso peguei somente uma parte)
[root@monitor ~]# snmpwalk -On -v 1 -c public 10.1.1.1
.1.3.6.1.2.1.1.1.0 = STRING: Cisco IOS Software, C2960 Software (C2960-LANBASE-M), Version 12.2(35)SE5, RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2007 by Cisco Systems, Inc.
Compiled Thu 19-Jul-07 20:06 by nachen
.1.3.6.1.2.1.1.2.0 = OID: .1.3.6.1.4.1.9.1.696
.1.3.6.1.2.1.1.3.0 = Timeticks: (513090803) 59 days, 9:15:08.03
.1.3.6.1.2.1.1.4.0 = STRING:
.1.3.6.1.2.1.1.5.0 = STRING: SWT-05
.1.3.6.1.2.1.1.6.0 = STRING:
.1.3.6.1.2.1.1.7.0 = INTEGER: 2
.1.3.6.1.2.1.1.8.0 = Timeticks: (0) 0:00:00.00
.1.3.6.1.2.1.2.1.0 = INTEGER: 28
.1.3.6.1.2.1.2.2.1.1.1 = INTEGER: 1
.1.3.6.1.2.1.2.2.1.1.4 = INTEGER: 4
[...]
De posse destas informações vamos criar um arquivo com todas estas informações, pode demorar algum tempo dependendo do equipamento.
[root@monitor ~]# snmpwalk -On -v 1 -c public 10.1.1.1 | tee CISCO-snmpwalk-bruto
Este comando vai exibir na tela o resultado e criar o arquivo CISCO-snmpwalk com as infomrações.
Mas é meio obscuro saber o que significa cada número daquele, apesar de haver uma descrição na frente, muitas vezes é muito chato de “decifra-los”, e outras vezes até sabemos qual OID exatamente queremos, mas não sabemos exatamente qual sequencia numérica daquelas é a que queremos, até por que em cada equipamento ai ser diferente.
Para tornarmos isso um pouco menos traumático, tesmo o snmpget para nos ajudar!!!
Ele transforma estes números em algo mais “entendivel” (essa palavra eu inventei), mas o fato é que fica mais fácil de saber o que é cada item daquele.
.1.3.6.1.2.1.1.1.0 = STRING: Cisco IOS Software, C2960 Software (C2960-LANBASE-M), Version 12.2(35)SE5, RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2007 by Cisco Systems, Inc.
Compiled Thu 19-Jul-07 20:06 by nachen
O que nos interessa é tudo que está antes do “=”, então para usarmos o snmp get fariamos assim:
snmpget -On -v 1 -c public 10.1.1.1 .1.3.6.1.2.1.1.1.0
E o resultado seria este:
.1.3.6.1.2.1.1.1.0 = STRING: Cisco IOS Software, C2960 Software (C2960-LANBASE-M), Version 12.2(35)SE5, RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2007 by Cisco Systems, Inc.
Compiled Thu 19-Jul-07 20:06 by nachen
Ótimo, mas se analisarmos o arquivo que criamos, veremos que existem centenas, talvez milhares, destes OID’s, então para facilitar as coisas vamos separar somente o que nos interessa e colocar em outro aquivo.
Esta linha faz isso pra gente, o que fiz foi usar o “cut” para pegar tudo antes do ” ” (espaço).
snmpwalk -On -v 1 -c public 10.1.1.1 | cut -d ” ” -f1 | tee CISCO-snmpwalk
Beleza, se analizarmos o aquivo CISCO-snmp, que foi criado, veremos agora somente números, digo, OID’s.
[root@monitor ~]# less CISCO-snmpwalk
.1.3.6.1.2.1.1.1.0
.1.3.6.1.2.1.1.2.0
.1.3.6.1.2.1.1.3.0
.1.3.6.1.2.1.1.4.0
.1.3.6.1.2.1.1.5.0
.1.3.6.1.2.1.1.6.0
.1.3.6.1.2.1.1.7.0
[...]
Ótimo, agora para fazermos as coisas ficarem um pouco mais “entendiveis” (outra palavra inventada), vamos usar uma linha no bash para nos ajudar a automatizar, as coisas.
Eu não vou explicar a linha completa, mas ela le cada linha do arquivo e cria outro arquivo com as informações que precisamos.
A linha é esta:
[root@monitor ~]# for i in $(cat CISCO-snmpwalk); do snmpget -v 1 -c public 10.1.1.1 $i | tee CISCO-snmpget; done
Agora temos os dados que precisamos:
[root@monitor ~]# less CISCO-snmpget
SNMPv2-MIB::sysDescr.0 = STRING: Cisco IOS Software, C2960 Software (C2960-LANBASE-M), Version 12.2(35)SE5, RELEASE SOFTWARE (fc1)
Copyright (c) 1986-2007 by Cisco Systems, Inc.
Compiled Thu 19-Jul-07 20:06 by nachen
SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.9.1.696
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (513123093) 59 days, 9:20:30.93
SNMPv2-MIB::sysContact.0 = STRING:
SNMPv2-MIB::sysName.0 = STRING: SWT-05
SNMPv2-MIB::sysLocation.0 = STRING:
SNMPv2-MIB::sysServices.0 = INTEGER: 2
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (0) 0:00:00.00
IF-MIB::ifNumber.0 = INTEGER: 28
IF-MIB::ifIndex.1 = INTEGER: 1
IF-MIB::ifIndex.4 = INTEGER: 4
Bacaninha….. prontinho….. agora é só analizar o arquiv e saber qual é exatamente que você quer obter via snmp e usar os OID’s para obte-la.
Ps.: No ZABBIX isto é uma mão na roda…
Espero que tenha ajudado.
Ps2.: Veja também sobre snmptranslate…. Só uma palinha sobre ele com o mesmo OID:
[root@monitor ~]# snmptranslate .1.3.6.1.2.1.1.1.0
SNMPv2-MIB::sysDescr.0
[root@monitor ~]#