Динамическая установка нового интервала тестирования для проверок Nagios
Интервалы уведомлений о проверке Nagios должны быть>= до интервала проверки, потому что это предотвращает отправку Nagios ложных тревожных уведомлений, если сервис возвращается к состоянию UP между проверками. Я понимаю причину этого.
У нас есть ряд проверок, которые запускаются каждые 30 минут. Это означает, что в случае неудачной проверки отправляется только одно уведомление каждый раз, когда служба проверяется после использования повторных попыток.
То, что мне нужно, - это возможность приставать к пейджеру дежурного администратора каждые две минуты после того, как проверка прошла ЖЕСТКО / КРИТИЧЕСКИ. Я не могу этого сделать, потому что следующее уведомление будет отправлено только при следующей проверке, т. Е. Через 30 минут.
Особенность нашей старой системы мониторинга состояла в том, чтобы установить новый более низкий интервал проверки, как только проверка прошла ЖЕСТКО / КРИТИЧЕСКИ. Это означало, что мы можем продолжать перепроверять каждые две минуты (и отправлять оповещения) до тех пор, пока человек не подтвердит оповещение или не изменит его статус на UP, после чего интервал проверки вернется к 30 минутам.
Есть ли способ облегчить это на Nagios?
У меня были некоторые мысли по поводу написания обработчика событий, который перенесет проверку на две минуты в будущем после того, как проверка прошла HARD DOWN/CRITICAL (путем прямой отправки команды в Nagios).
Мне интересно, если кто-то еще должен был сделать подобное?
Я использую Nagios Core 3.2.3.
1 ответ
Вы можете сделать это с помощью CHANGE_NORMAL_SVC_CHECK_INTERVAL и CHANGE_NORMAL_HOST_CHECK_INTERVAL.
Добавьте обработчик событий для вашего сервиса:
define service {
host_name ...
service_description ...
check_command ...
contact_groups ...
event_handler change_check_interval
}
change_check_interval
был определен в commands.cfg
:
define command {
command_name change_check_interval
command_line $USER1$/eventhandlers/change_check_interval.sh $SERVICESTATE$ $SERVICESTATETYPE$ $SERVICEATTEMPT$ $HOSTADDRESS$
}
Содержание change_check_interval.sh
:
#!/bin/bash
now=`date +%s`
commandfile='/usr/local/nagios/var/rw/nagios.cmd'
case "$1" in
OK)
;;
WARNING)
;;
UNKNOWN)
;;
CRITICAL)
/bin/printf "[%lu] CHANGE_NORMAL_SVC_CHECK_INTERVAL;host1;service1;2\n" $now > $commandfile
;;
esac
exit 0
Убедитесь, что внешние команды включены в nagios.cfg
:
check_external_commands=1