Я запускаю сценарий check_raid на нескольких машинах, и сегодня я заметил, что одна из моих машин была в нерабочем состоянии, но я не получал предупреждения. Сценарий возвращает "CRITICAL", но Icinga считает, что это нормально.
Вот что я вижу на своей машине Icinga (я заменил диск):
SNMP OK - "CRITICAL: tw_cli:[c3(9650SE-4LPML): u0(RAID-10): REBUILDING 65%, Cache:Ri, Drives(4): p2=DEGRADED p0,p1,p3=OK]"
Конфигурация этой машины очень проста:
define service{
use generic-service
host_name test
service_description RAID Status
check_command check_raid
}
Вот' s определение команды:
define command{
command_name check_raid
command_line /usr/lib/nagios/plugins/check_snmp -H $HOSTADDRESS$ -o ucdavis.80.3.1.1.13.47.117.115.114.47.98.105.110.47.112.101.114.108 -C public -r "OK"
И на проверяемой машине у меня есть следующее в snmpd.conf:
extend .1.3.6.1.4.1.2021.80 /usr/bin/perl /usr/local/bin/check_raid.pl
Я использую последнюю версию скрипта, у кого-нибудь есть идеи о том, что я делаю неправильно? Всегда ли -r «ОК» возвращает ОК?
Сценарий nagios соответствует 3 из 4 условий возврата, поэтому он возвращает OK.
-r, --ereg=REGEX
Return OK state (for that OID) if extended regular expression REGEX matches
Ваш сценарий возвращает следующее (отредактировано мной для краткости):
"CRITICAL: [...] p2=DEGRADED p0,p1,p3=OK]"
check_snmp
видит, что p0, p1, p3 в порядке, и возвращает OK
, игнорируя p2
Я бы попробовал без -r «ОК»
и подтвердите, что получили ожидаемые результаты. Если неправильный результат возврата не исчезнет, я бы поэкспериментировал с - invert-search
:
--invert-search
Invert search result (CRITICAL if found)