check_snmp warning & thresholds críticos com valores negativos

2

Estou consultando alguns valores de nível de sinal medidos em dBm, e o host SNMP no dispositivo de remoção relata os valores como valores negativos, ou seja, -90 dBm. No entanto, o check-snmp parece ser incapaz de lidar com números negativos como parte de seus valores limiares. Se eu especificar os valores como parte de uma coleção de OIDs, ele aceita a sintaxe, mas converte o valor snmp em positivo, gerando sempre um resultado WARNING / CRITICAL:

root@ops-00:/usr/local/nagios/libexec# ./check_snmp -H 192.168.1.100 -o DEVICE-MIB::AverageReceiveSNR.0,DEVICE-MIB::CurrentNoiseFloor.0 -w 10:,~:-85 -c 15:,~:-80 -vvvv
/usr/bin/snmpget -t 1 -r 5 -m ALL -v 1 [authpriv] 192.168.1.100:161 DEVICE-MIB::AverageReceiveSNR.0 DEVICE-MIB::CurrentNoiseFloor.0
DEVICE-MIB::AverageReceiveSNR.0 = INTEGER: 25
DEVICE-MIB::CurrentNoiseFloor.0 = INTEGER: -97
Processing line 1
  oidname: DEVICE-MIB::AverageReceiveSNR.0
  response:  = INTEGER: 25
Processing line 2
  oidname: DEVICE-MIB::CurrentNoiseFloor.0
  response:  = INTEGER: -97
SNMP CRITICAL - 25 *97* | DEVICE-MIB::AverageReceiveSNR.0=25 DEVICE-MIB::CurrentNoiseFloor.0=97

Se eu executá-lo com um único OID, será exibido um erro informando que o formato está incorreto:

root@ops-00:/usr/local/nagios/libexec# ./check_snmp -H 192.168.1.100 -o DEVICE-MIB::CurrentNoiseFloor.0 -w ~:-85 -c ~:-80 -vvvv
Range format incorrect

edit: se eu usar -w = range analisa adequadamente, mas ainda converte o valor para positivo.

root@ops-00:/usr/local/nagios/libexec# ./check_snmp -H 192.168.1.100 -o DEVICE-MIB::CurrentNoiseFloor.0 -w=~:-85 -c=~:-80 -vvvv
/usr/bin/snmpget -t 1 -r 5 -m ALL -v 1 [authpriv] 192.168.1.100:161 DEVICE-MIB::CurrentNoiseFloor.0
DEVICE-MIB::CurrentNoiseFloor.0 = INTEGER: -97
Processing line 1
  oidname: DEVICE-MIB::CurrentNoiseFloor.0
  response:  = INTEGER: -97
SNMP CRITICAL - *97* | DEVICE-MIB::CurrentNoiseFloor.0=97  

E se eu o executar sem limites definidos, ele funcionará corretamente e retornará o valor correto. Isso torna os gráficos corretos, mas nunca gera uma notificação quando fora do intervalo:

root@ops-00:/usr/local/nagios/libexec# ./check_snmp -H 192.168.1.100 -o DEVICE-MIB::CurrentNoiseFloor.0 -vvvv
/usr/bin/snmpget -t 1 -r 5 -m ALL -v 1 [authpriv] 192.168.1.100:161 DEVICE-MIB::CurrentNoiseFloor.0
DEVICE-MIB::CurrentNoiseFloor.0 = INTEGER: -97
Processing line 1
  oidname: DEVICE-MIB::CurrentNoiseFloor.0
  response:  = INTEGER: -97
SNMP OK - -97 | DEVICE-MIB::CurrentNoiseFloor.0=-97  

O que estou fazendo errado aqui? Como eu poderia, por exemplo, gerar um CRITICAL quando o nível de ruído for -80 dBm ou superior, um AVISO quando estiver entre -85 e -80 dBm e um OK quando -85 dBm ou menos? Tenho que escrever meus próprios plugins SNMP ao lidar com valores negativos?

    
por Oesor 18.05.2010 / 16:07

2 respostas

3

-w = -85: -c = -80: é a sintaxe que eu precisava, mas check_snmp ainda converte a saída para positiva quando um erro é acionado. Relatório de bug arquivado.

    
por 18.05.2010 / 18:12
1

Eu usei este -w ~: 0,5 -c 0,5. Usando ~: 0,5 permite valores negativos. Eu peguei no site: link

    
por 18.11.2015 / 21:02