Дополнительные настройки Nagios

В первой и второй статьях было рассмотрено конфигурирование 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

}

 

Теперь при падении веб-сервера он перезапустится автоматически.

Добавить комментарий

Защитный код
Обновить