Я запускаю сценарий check_raid на нескольких машинах и только сегодня заметил, что одна из моих машин находилась в нерабочем состоянии, но меня не предупреждали. Сценарий возвращает "КРИТИЧЕСКИЙ", но 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
}
Вот определение команды:
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 "OK"
и подтвердите, что получили ожидаемые результаты. Если неправильный результат возврата сохраняется, я бы поэкспериментировал с --invert-search
:
--invert-search
Invert search result (CRITICAL if found)