check_snmp 警告和临界阈值为负值

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=range,它会正确解析但仍将值转换为正数。

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  

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

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 时,我该如何生成 WARNING,当本底噪声为 -85 dBm 或更低时,我该如何生成 OK?处理负值时,我是否必须编写自己的 SNMP 插件?

答案1

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

答案2

我使用了 -w~:0.5 -c 0.5。使用 ~:0.5 允许使用负值。我从网站获取了此信息: https://nagios-plugins.org/doc/guidelines.html#THRESHOLDFORMAT

相关内容