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

Как отправить уведомление «Все в порядке» от Nagios?

Мне нужно настроить Nagios для отправки уведомления о том, что все идет хорошо, если нет проблем.

Существует ли такая настройка или есть плагин для этого?

Я использую следующую настройку для отправки электронной почты один раз в день. Это позволило мне узнать, что с моим сервером Nagios, почтовой системой и конфигурацией Nagios все в порядке.

  # nagios/objects/localhost.cfg
  ....
  # Send a message once per day to make sure nagios is working ok
  define service{
        use                     local-service
        host_name               localhost
        service_description     Nagios is OK
        check_command           check_all_is_well
        check_period            morning     ; this is a custom period
        normal_check_interval   60          
            ; setting this to an hour and making the check_period 
            ; interval 59 minutes long each day ensures it only 
            ; happens once per day in a specific window
        }

и в вашем файле конфигурации timeperiods:

# nagios/objects/timeperiods.cfg
....
define timeperiod{
        timeperiod_name morning
        alias           First thing in the am
        monday          06:00-6:59
        tuesday         06:00-6:59
        wednesday       06:00-6:59
        thursday        06:00-6:59
        friday          06:00-6:59
        saturday        06:00-6:59
        sunday          06:00-6:59
        }

А команда check_all_is_ok - это простая оболочка для sendmail:

# check_all_is_ok
#!/bin/bash

echo "All is well from Nagio on `hostname`" \
       | /etc/nagios/sendmail -s "Nagios on PIP is OK" <your email address>

echo "OK: nagios is ok on `hostname`";
exit 0

Он не проверяет, не было ли проблем за предыдущие 24 часа, но вы можете добавить некоторый grep-ping журналов, как предлагает guanta, если вам это нужно. Вы также можете выполнить требование один раз в день, установив для normal_check_interval значение 1440 (24 часа), но я хочу, чтобы проверка выполнялась в определенном окне каждый день.

Если вы настроили ротацию ежедневного журнала (log_rotation_method=d), вы можете написать скрипт для подсчета количества предупреждений в nagios.log, что-то вроде этого:

[ `grep -c ALERT var/nagios.log` -eq 0 ] && echo "Everything is OK!" | mail -s "Nagios daily report" your@email

Поместите его в задание cron, которое будет запускаться в конце дня, перед сном.

Если вы этого не сделаете, обратитесь к этот тема для фильтрации по дате.

Для пользы других: я сам задал этот вопрос, и мне пришло в голову самое простое решение: проверять процесс nagios каждые 8 ​​часов, чтобы убедиться, что nagios запущен.

#crontab -e

Добавьте следующее

* */8 * * * /usr/local/nagios/libexec/check_nagios -t 20 -e 5 -F /usr/local/nagios/var/status.dat -C /usr/local/nagios/bin/nagios > /var/local/nagios_stats && sendemail -f "NAGIOS STATUS SenderAddress@gmail.com" -u Nagios Process Status -s smtp.gmail.com:587 -xu SenderAddress@gmail.com -xp SenderPassword -o tls=yes -t RecipientAddress@gmail.com -m < /var/local/nagios_stats

Не забывай

Создание файла в /var/local/nagios_stats (или где-нибудь еще, но измените его в crontab)

SenderAddress, RecipientAddress, MailPassword

Решение сильно зависит от того, когда вы действительно хотите отправлять уведомления:

  • При каждом успешном запуске активной проверки: Тогда может иметь смысл фактически запускать шаг уведомления как часть вашей активной проверки. Простым способом было бы заключить вашу проверку в сценарий, который сначала выполняет проверку, анализирует результат и отправляет уведомление. Вы можете сделать это, используя встроенный Perl.
  • Когда раньше все было не в порядке, но сейчас: это стандартное поведение.
  • О пассивных проверках: на самом деле это интересная проблема, решения которой у меня в голове нет ...

В зависимости от сценария вы должны выбрать одно решение. И всегда помните: делайте самое простое, что только может сработать.

Немного поздно, но для всех, кто ищет решение, есть простой способ использовать модуль брокера livestatus.

Настройте livestatus для использования сокета unix (Shinken по умолчанию настроен только с портом tcp, вы можете добавить сокет, как в конфигурации на эта страница), и вы можете опросить это напрямую, используя, например, скрипт Python.