Мне нужно настроить 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
Решение сильно зависит от того, когда вы действительно хотите отправлять уведомления:
В зависимости от сценария вы должны выбрать одно решение. И всегда помните: делайте самое простое, что только может сработать.
Немного поздно, но для всех, кто ищет решение, есть простой способ использовать модуль брокера livestatus.
Настройте livestatus для использования сокета unix (Shinken по умолчанию настроен только с портом tcp, вы можете добавить сокет, как в конфигурации на эта страница), и вы можете опросить это напрямую, используя, например, скрипт Python.