Por que os agentes SNMP precisam de arquivos MIB?

Por que os agentes SNMP precisam de arquivos MIB?

Depois de ler sobre SNMP e algumas das perguntas que ajudam aqui, acho que entendo a função do agente como um serviço SNMP para 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 e onde o armazenamento é feito.

Mas os MIBs não são armazenamento real, então qual é a função do meu agente?
se o agente apenas registrar o MIB como sigo nestetutorial, portanto, ele não é usado como manipulador e significa que há um armazenamento pyhiscal que você pode definir e acessar 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 quero um agente que todas as solicitações SNMP para application_pending_request sejam disparadas para ele e retorne a profundidade da fila. Por que preciso ter um MIB real quando tudo o que preciso é pesquisar a fila do meu aplicativo para obter resultados?

Responder1

Você tem um mal-entendido fundamental sobre como o SNMP funciona. Comparação rápida e suja:MIBs SNMP 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 uname).

Para recuperar informações de um servidor SNMP (agente), essas informaçõesdeveser publicado em um OID específico.
Para que um daemon SNMP publique informações, ele precisa (normalmente) de duas coisas:

  1. Uma maneira de obter essas informações (script, programa, etc.)
  2. Um local para colocar essas informações (um OID)
    (alguns daemons SNMP também podem exigir um arquivo MIB mapeando o OID)

Para recuperar as informações, você deve conhecer o OID - ele pode ser um OID numérico ou um nome "amigável" de um arquivo MIB no seuSNMP Cliente.

Os "navegadores" SNMP normalmente exigem um arquivo MIB porque, sem ele, tudo o que eles podem apresentar a você é uma lista de números sem sentido.

Portanto, a resposta à sua pergunta é "Você nãoPRECISARMIB, eles são úteis apenas para humanos que precisam interagir com SNMP".


Tomando seu exemplo (relatando o comprimento da fila), parece que você está usando o tutorial que você gostou net-snmp(UCD-SNMP).
net-snmpinclui recursos integrados para esse tipo de coisa - leia a página de manual e o arquivo de configuração de exemplo (preste atenção especial à execdiretiva para executar scripts externos: normalmente você executaria um script que imprime o comprimento da fila e consultaria esse OID em seu software de monitoramento/cliente SNMP)

informação relacionada