Предупреждение check_snmp и критические пороги с отрицательными значениями
Я запрашиваю некоторые значения уровня сигнала, измеренные в дБм, и хост SNMP на удалающем устройстве сообщает значения как отрицательные значения, то есть -90 дБм. Тем не менее, 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 дБм или выше, ПРЕДУПРЕЖДЕНИЕ, когда оно составляет от -85 до -80 дБм, и ОК, когда -85 дБм или ниже? Нужно ли мне писать свои собственные плагины SNMP при работе с отрицательными значениями?
2 ответа
-w=-85: -c=-80: синтаксис, который мне нужен, но check_snmp по-прежнему преобразует выходные данные в положительные при возникновении ошибки. Отчет об ошибке подан.
Я использовал это -w~:0,5 -c 0,5. Использование ~:0.5 допускает отрицательные значения. Я получил это с веб-сайта: https://nagios-plugins.org/doc/guidelines.html