Назад | Перейти на главную страницу

Динамическая установка нового интервала тестирования для проверок Nagios

Интервалы уведомлений о проверках Nagios должны быть> = интервала проверки, потому что это предотвращает отправку Nagios уведомлений о ложных тревогах, если служба вернется в состояние UP между проверками. Я понимаю причину этого.

У нас есть ряд проверок, которые выполняются каждые 30 минут. Это означает, что если проверка не удалась, только одно уведомление отправляется каждый раз, когда служба проверяется после того, как количество повторных попыток исчерпано.

Что мне нужно, так это иметь возможность приставать к пейджеру дежурного администратора каждые две минуты после того, как проверка прошла СЛОЖНО / КРИТИЧНО. Я не могу этого сделать, потому что следующее уведомление выйдет только при следующей проверке, т.е. еще через 30 минут.

В нашей старой системе мониторинга была возможность установить новый более низкий интервал проверки, как только проверка перешла в ЖЕСТКОЕ / КРИТИЧЕСКОЕ. Это означало, что мы могли продолжать перепроверять каждые две минуты (и отправлять оповещения), пока оповещение не будет подтверждено человеком или не изменит его статус на UP, после чего интервал проверки вернется к 30 минутам.

Есть ли способ облегчить это на Nagios?

У меня были некоторые мысли о написании обработчика событий, который перенесет проверку на две минуты в будущем после того, как проверка прошла ЖЕСТКОЕ / КРИТИЧЕСКОЕ (путем прямой отправки команды Nagios).

Мне интересно, приходилось ли кому-нибудь еще делать подобное?

Я использую Nagios Core 3.2.3.

Вы можете сделать это, используя 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