Nagios

帶有負值的 check_snmp 警告和嚴重門檻值

  • November 18, 2015

我正在查詢以 dBm 為單位測量的一些信號電平值,並且刪除設備上的 SNMP 主機將這些值報告為負值,即 -90 dBm。但是,check-snmp 似乎無法將負數作為其門檻值的一部分來處理。如果我將這些值指定為 OID 集合的一部分,它會接受語法,但會將 snmp 值轉換為正數,因此始終會生成警告/嚴重結果:

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 外掛?

-w=-85: -c=-80: 是我需要的語法,但 check_snmp 在觸發錯誤時仍會將輸出轉換為正數。已送出錯誤報告。

我用了這個 -w~:0.5 -c 0.5。使用 ~:0.5 允許負值。我從網站得到這個: https ://nagios-plugins.org/doc/guidelines.html#THRESHOLDFORMAT

引用自:https://serverfault.com/questions/142999