Qual OID para verificar a saída do script extend-sh no Net-SNMP snmpd?

0

Eu estendi ( extend-sh ) a funcionalidade do Net-SNMP snmpd com um script de shell que ecoa "vazio" caso a condição verificada com o script seja verdadeira. No entanto, parece haver vários OIDs que contêm essa string: nsExtendOutput1Line."backup" , nsExtendOutputFull."backup" e nsExtendOutLine."backup".1 . Qual deles é o OID correto para monitorar? Qual é a melhor prática aqui? Apenas para informação, "backup" é simplesmente o nome do token. Além disso, um comportamento semelhante pode ser visto no Net-NMP wiki em recuperação valor .

    
por Martin 11.12.2015 / 00:54

1 resposta

5

Qual OID usar depende do que o seu script gera, e em que parte você está interessado, e talvez o que é mais fácil de processar dentro do sistema de monitoramento verificando esses OIDs.

O OID no SNMP é apenas uma nomenclatura (padronizada) de algo que o snmpd conhece.

Com os OIDs tendo strings dentro deles, as strings são convertidas com mais frequência em números, contando os caracteres e, em seguida, adicionando o código ASCII de cada caractere a ele. Por exemplo, "hello" (5 caracteres) se tornaria 5.104.101.108.108.111.

Você pode verificar isso com snmptranslate:

% snmptranslate .1.3.6.1.4.1.8072.1.3.2.3.1.1.5.104.101.108.108.111
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."hello"

Mas voltemos à questão. Os vários OIDs que você pode verificar por meio da configuração extend ajuda a buscar várias propriedades a partir da execução do script de extensão.

Para ver todos os recursos, considere este script sh executável que gera duas linhas e retorna um valor arbitrário, configurado como extend hello /usr/local/sbin/myscript

#!/bin/sh
echo today
date
exit 33

A saída via snmpwalk pode ser:

% snmpwalk -v2c -c mysecretcommunity localhost .1.3.6.1.4.1.8072.1.3.2.3.1
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."hello" = STRING: today
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."hello" = STRING: today
Sat Dec 19 15:59:59 UTC 2015
NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."hello" = INTEGER: 2
NET-SNMP-EXTEND-MIB::nsExtendResult."hello" = INTEGER: 33

Então, os OIDs que você pode examinar são:

NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."hello"

A linha primeiro da saída do script. Se o script em que você está interessado tiver apenas uma única linha de saída, ou se todos os dados importantes estiverem na primeira linha, use isso.

NET-SNMP-EXTEND-MIB::nsExtendOutputFull."hello"

Se seus scripts imprimem mais de uma linha e você precisa gravar todos eles, isso pode ser melhor.

NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."hello"

O número de linhas na saída do script. Se tudo que você está interessado em quantas linhas estão na saída, use isso. Se o seu script imprimir uma linha para cada arquivo processado e você estiver interessado apenas em quantos arquivos forem processados, isso pode ser o que você precisa.

NET-SNMP-EXTEND-MIB::nsExtendResult."hello"

Se você estiver interessado em ver se o script falhou ou foi bem-sucedido, e ele retorna um código de saída apropriado, esse OID retornará isso.

NET-SNMP-EXTEND-MIB::nsExtendOutLine."hello".1 = STRING: today
NET-SNMP-EXTEND-MIB::nsExtendOutLine."hello".2 = STRING: Sat Dec 19 16:02:44 GMT 2015

Se você souber qual linha específica contém informações interessantes para você, você pode buscar o número de linha específico com os OIDs acima.

Estes e muito mais devem estar disponíveis e documentados (embora de maneira bastante técnica) nos arquivos MIB para este OID no seu sistema em um local como /usr/share/snmpd/mibs/NET-SNMP-EXTEND-MIB.txt

Então, tudo depende do que você precisa processar e / ou monitorar a partir do script que você executa.

Por favor, note que o SNMP é baseado em UDP, e muitos agentes expirarão, e / ou reenviar o pedido se uma resposta não for vista dentro do tempo limite configurado, o script pode ser executado várias vezes, e / ou pode ser executado sem o resultado visível da estação de monitoramento. É melhor usar isso apenas para scripts de execução muito curta (isto é, concluir em alguns segundos em todas as circunstâncias).

Outra abordagem pode ser iniciar um processo em segundo plano que então deve ser protegido contra execuções simultâneas através de métodos de bloqueio apropriados. Se o segundo levantar mais questões, receio que possam ser respondidas melhor em um tópico diferente, dependendo da operação a ser realizada.

    
por 19.12.2015 / 17:00

Tags