Como entender o SNMP MIB?

1

Pelo que entendi, os bancos de dados SNMP Management Information Base são usados pelas estações de gerenciamento de rede para converter dados de agentes SNMP em forma compreensível. Por exemplo, no caso de sysUpTimeInstance :

$ snmpwalk -v 2c -c public 10.10.10.1 sysUpTimeInstance
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (28267576) 3 days, 6:31:15.76
$ 

.. Eu acho que é graças ao MIB que 28267576 é convertido em 3 dias, 6 horas, 31 minutos, 15,76 segundos? Agora eu procurei pelo arquivo MIB correto para ver esta tradução:

$ grep -ir sysUpTimeInstance /usr/local/share/smi/mibs/
/usr/local/share/smi/mibs/ietf/DISMAN-EVENT-MIB:sysUpTimeInstance OBJECT IDENTIFIER ::= { sysUpTime 0 }
/usr/local/share/smi/mibs/ietf/DISMAN-EVENT-MIB:    DEFVAL { sysUpTimeInstance }
/usr/local/share/smi/mibs/ietf/DISMAN-EXPRESSION-MIB:sysUpTimeInstance OBJECT IDENTIFIER ::= { sysUpTime 0 }
/usr/local/share/smi/mibs/ietf/DISMAN-EXPRESSION-MIB:    DEFVAL      { sysUpTimeInstance }
$ 

.. e parece que está definido no arquivo /usr/local/share/smi/mibs/ietf/DISMAN-EVENT-MIB . Como devo entender isso sysUpTimeInstance OBJECT IDENTIFIER ::= { sysUpTime 0 } ?

    
por Martin 03.07.2015 / 17:01

1 resposta

2

Pode ser muito tedioso encadear de volta manualmente. Existem ferramentas como snmptranslate para fazer esse tipo de coisa para você. Tente snmptranslate -M /path/to/mibs -m ALL -Pu -Tso|grep -B1 sysUpTimeInstance . Para ver os detalhes completos de sysUpTime, use snmptranslate -Td -OS .iso.org.dod.internet.mgmt.mib-2.system.sysUpTime Isso mostrará que é medido em TimeTicks.

Mas, para responder à sua pergunta, os arquivos MIB são gravados em ASN.1, onde cada objeto pode construir sobre todos os objetos anteriores. Entre outras coisas, como descrições e tipos de objetos, etc., ele cria OIDs, também conhecidos como IDENifiers de objetos, que mapeiam OIDs para nomes como .iso.org.dod.internet.mgmt.mib-2.system.sysUpTime.sysUpTimeInstance

Para esta entrada, sysUpTimeInstance OBJECT IDENTIFIER ::= { sysUpTime 0 } significa aproximadamente "O OID para sysUpTimeInstance é igual ao OID de sysUpTime mais '.0' e o MIB é igual ao MIB de sysUpTime mais '.sysUpTimeInstance'

Para ver o que é o OID e o resto do MIB para o sysUpTime, você deve procurar mais cedo no arquivo. Tendo em mente que pode ter sido importado de outro arquivo. Neste caso, foi, portanto, se você olhar na seção IMPORTAÇÕES, verá que o sysUpTime foi importado do SNMPv2-MIB. Se você verificar esse arquivo, verá sysUpTime definido e, nessa definição, você encontrará ::= { system 3 } .

Até agora, temos .3.0 e system.sysUpTime.sysUpTimeInstance , que é apenas a última parte do OID e o nome completo da MIB. Poderíamos, então, rastrear system de volta para sua definição, etc, etc. Seguindo essa cadeia de volta pelos arquivos, você eventualmente obterá o OID completo e o MIB completo.

Claro, você poderia usar apenas snmptranslate , como mostrado no primeiro parágrafo, para fazer tudo isso para você. Ele irá mostrar-lhe o MIB e o OID. Para a maioria de nós, isso geralmente é o que precisamos.

Para mais informações, consulte:

(panfleto de produto, mas também contém um bom resumo MIB) link

link

    
por 06.07.2015 / 22:52

Tags