Дополнительные настройки Nagios
- Информация о материале
- Категория: Nagios-ru
- Опубликовано: 22.06.2014, 23:00
- Автор: Super User
- Просмотров: 3468
В первой и второй статьях было рассмотрено конфигурирование Nagios для проверки состояния сетевых сервисов и самих серверов. Однако для полноценного использования в корпоративном сегменте этого не достаточно.
В этой, третьей статье цикла, рассматриваются вопросы дополнительного функционала системы мониторинга — настройка уведомлений, внутренних команд, а так же настройка автоматической системы реагирования на возникшие проблемы.
Настройка выполнения внутренних команд
В конфигурации по умолчанию отсутствует возможность выполнения внутренних команд, например перепланировки времени очередной проверки сервиса или хоста. Это связано не только с параметрами по умолчанию в конфигурационном файле, но и с ошибкой сборки пакета.
Для того, что бы включить данную возможность, проделаем следующие действия.
В файле /etc/nagios3/nagios.cfg установим значение параметра check_external_commands в 1. Этим мы разрешим выполнение внутренних команд.
check_external_commands=1
Далее создаем файл:
# touch /var/lib/nagios3/rw/nagios.cmd
И далее по очереди вводим команды:
dpkg-statoverride --update --add nagios www-data 2710 /var/lib/nagios3/rw
dpkg-statoverride --update --add nagios nagios 751 /var/lib/nagios3
chown nagios:www-data /var/lib/nagios3/rw/nagios.cmd
С помощью вышеприведенных команд мы устанавливаем необходимые права доступа к файлам и каталогам, которые необходимы для выполнения внутренних команд.
Теперь перезапускаем сервис Nagios
# service nagios3 restart
С этого момента мы можем без проблем перепланировать время ближайшей проверки сервиса.
Настройка почтовых уведомлений
В файлах конфигурации Nagios есть настройка отсылки уведомлений в случае проблем с хостами или сервисами.
Для того, что бы это корректно настроить произведем следующие действия.
В файле /etc/nagios3/conf.d/contacts_nagios2.cfg определим контакт (по умолчанию root) и в поле email пропишем адрес получателя, например, Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript.
В описании контакта есть поля, в которых описано, когда посылать уведомления о состоянии хоста и сервиса.
host_notification_options — значение по умолчанию «d, r»
Возможные варианты значений:
-
d — уведомлять о статусе DOWN
-
u — уведомлять о статусе UNREACHABLE
-
r — уведомлять о поднятии хоста (первое появление статуса UP),
-
f — уведомлять о начале и окончании «мигающего» состояния
-
s — уведомлять о начале и окончании запланированного выключения
-
n — не отсылать никаких уведомлений
service_notification_options — значение по умолчанию «w,u,c,r»
Возможные варианты значений:
-
w — уведомлять о статусе WARNING service states,
-
u — уведомлять о статусе UNKNOWN service states,
-
c — уведомлять о статусе CRITICAL service states,
-
r — уведомлять о поднятии сервиса (первое появление статуса OK)
-
f — уведомлять о начале и окончании «мигающего» состояния
-
n — не отсылать никаких уведомлений
К сожалению, утилита sendmail, котораяя используется для отсылки уведомлений в настройках по умолчанию, позволяет использование только того почтового сервера, который установлен на той же машине, что и сам Nagios. Это не всегда удобно. По этому изменим конфигурацию и воспользуемся внешним сервером.
Для этого установим дополнительную утилиту sendemail.
# apt-get install sendemail
Так же будут необходимы дополнительные библиотеки для работы по шифрованным протоколам. Установим и их
# apt-get install libio-socket-ssl-perl libnet-ssleay-perl
Далее изменим сами команды отсылки уведомлений. Для этого в файле /etc/nagios3/commands.cfg найдем описание команд и изменим их
Для notify-host-by-email пропишем:
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/sendemail -f Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript. -t $CONTACTEMAIL$ -u "NAGIOS WARNING" -s mail.study.local:587 -o tls=yes -xu Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript. -xp user1 -m
Для notify-service-by-email пропишем:
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /usr/bin/sendemail -f Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript. -t $CONTACTEMAIL$ -u "NAGIOS WARNING" -s mail.study.local:587 -o tls=yes -xu Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в вашем браузере должен быть включен Javascript. -xp user1 -m
Теперь подробнее о параметрах командной строки утилиты sendemail:
-
-f — адрес отправителя
-
-t — адрес получателя
-
-u — тема письма
-
-s — адрес почтового сервера и его SMTP-порт (если порт не указать явно, то будет использоваться 25)
-
-xu — логин на почтовый сервер
-
-xp — пароль на почтовый сервер
Теперь после перезапуска Nagios мы сможем получать уведомления на указанный почтовый ящик.
Настройка дополнительных действий при проверках
Кроме непосредственно самих проверок, Nagios может в автоматическом режиме выполнять какие-либо действия. Например перезапустить определенный сервис в случае его недоступности.
Для этого служит такой объект Nagios, как handler. Он может привязываться либо к хосту, либо к сервису.
В каталоге /etc/nagios3/conf.d создадим файл event-handlers.cfg и пропишем в него:
define command {
command_name restart-http
command_line /usr/share/nagios3/plugins/eventhandlers/repair_http.sh $SERVICESTATE$ $SERVICESTATETYPE$ $SERVICEATTEMPT$
}
Далее создадим скрипт /usr/share/nagios3/plugins/eventhandlers/repair_http.sh и запишем в него:
#!/bin/sh
# What state is the HTTP service in?
case "$1" in
OK)
;;
WARNING)
;;
UNKNOWN)
;;
CRITICAL)
case "$2" in
SOFT)
case "$3" in
3)
/etc/init.d/apache2 restart
;;
esac
;;
HARD)
# echo -n "Restarting HTTP service..."
/etc/init.d/apache2 restart
;;
esac
;;
esac
exit 0
И делаем этот скрипт исполняемым:
# chmod +x /usr/share/nagios3/plugins/eventhandlers/repair_http.sh
Теперь нужно подключить данный хендлер к мониторингу нужного сервиса.
Для этого в файле описания сервисов services_nagios2.cfg в описание проверки HTTP добавляем строку
event_handler restart-http
То есть получаем следующую запись
# check that web services are running
define service {
hostgroup_name http-servers
service_description HTTP
check_command check_http
use generic-service
notification_interval 0 ; set > 0 if you want to be renotified
event_handler restart-http
}
Теперь при падении веб-сервера он перезапустится автоматически.