check_snmp具有负值的警告和临界阈值

我正在查询以dBm为单位测量的一些信号电平值,移除设备上的SNMP主机将这些值报告为负值,即-90 dBm。 但是,check-snmp似乎无法将负数作为其阈值的一部分来处理。 如果我将这些值指定为OID集合的一部分,它将接受语法,但会将snmp值转换为正值,因此始终会生成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 

如果我用一个OID运行它,它给了我一个格式不正确的错误:

 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 

编辑:如果我使用-w =范围它正确分析,但仍然转换为正值。

 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 

如果我没有定义阈值运行它,它会正常工作,并返回正确的值。 这使graphics正确,但是当超出范围时,它不会生成通知:

 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 

我在这里做错了什么? 例如,当本底噪声为-80 dBm或更高时,我将如何产生CRITICAL,当它是-85到-80 dBm时是警告,当-85 dBm或更低时是OK? 处理负值时,是否必须编写自己的SNMP插件?

-w = -85:-c = -80:是我需要的语法,但check_snmp在触发错误时仍然会将输出转换为正值。 错误报告提交。

我用这个-w〜:0.5 -c 0.5。 使用〜:0.5允许负值。 我从网站得到这个: https : //nagios-plugins.org/doc/guidelines.html#THRESHOLDFORMAT