Por que os agentes SNMP precisam de arquivos MIB?

5

Depois de ler o SNMP e algumas das perguntas ajudam aqui, eu entendo a função do agente como um serviço SNMP para o dispositivo (como o SQL, é uma API para armazenamento).

Quando você executa uma consulta SQL, o mecanismo SQL faz todo o trabalho e retorna o resultado - você não precisa estar ciente de como o armazenamento e onde o armazenamento é feito.

Mas MIBs não são armazenamento real, então qual é o papel do meu agente?
se o agente registrar apenas o MIB, como eu sigo neste tutorial , ele não é usado como manipulador de todo e isso significa que há um armazenamento pyhiscal que você pode definir e chegar lá sem ignorar o manipulador. no tutorial tudo que você faz isso:

netsnmp_register_int_instance("my example int variable",
                                  my_registration_oid,
                                  OID_LENGTH(my_registration_oid),
                                  &example1, NULL);

não há necessidade de manipulador para processar chamadas.

Digamos que eu queira monitorar a fila de solicitações pendentes do meu aplicativo, então eu quero um agente que todos os pedidos SNMP para application_pending_request serão acionados para ele e retornará a profundidade da fila. Por que preciso ter uma MIB real quando tudo que preciso para pesquisar minha fila de aplicativos para obter o resultado?

    
por Avihai Marchiano 28.08.2012 / 16:39

1 resposta

7

Você tem um mal-entendido fundamental sobre como o SNMP funciona. Comparação rápida e suja: SNMP MIBs são nomes de host semelhantes . MIBs mapeiam OIDs para um nome amigável - por exemplo, .1.3.6.1.2.1.1.1.0 = > SNMPv2-MIB::sysDescr.0 = > Host Description (saída de uname).

Para recuperar informações de um servidor SNMP (agente), as informações devem ser publicadas em um OID específico.
Para que um daemon do SNMP publique as informações necessárias (normalmente) duas coisas:

  1. Uma maneira de obter essa informação (script, programa, etc.)
  2. Um lugar para colocar essa informação (um OID)
    (Alguns daemons SNMP também podem requerer um arquivo MIB que mapeie o OID)

Para que você recupere as informações, você deve saber o OID - isso pode ser um OID numérico ou um nome "amigável" de um arquivo MIB no SNMP Cliente .

Os "navegadores" SNMP normalmente requerem um arquivo MIB porque, sem um, todos eles podem apresentar a você uma lista de números sem sentido.

Portanto, a resposta para sua pergunta é "Você não precisa de arquivos MIB, eles são úteis para humanos que precisam interagir com o SNMP".

Respondendo ao seu exemplo (relatando um tamanho de fila), parece que você gostou do tutorial que está usando net-snmp (UCD-SNMP).
net-snmp inclui recursos internos para esse tipo de coisa - leia a man page e o arquivo de configuração de exemplo (preste atenção especial à diretiva exec para executar scripts externos: normalmente você executaria um script que imprime o tamanho da fila e consultaria esse OID em seu software de monitoramento / Cliente SNMP )

    
por 28.08.2012 / 17:05

Tags