Додаткові налаштування Nagios
- Деталі
- Категорія: Nagios-ukr
- Опубліковано: Понеділок, 07 січня 2019, 18:11
- Автор: Super User
- Перегляди: 3893
У першій і другій статтях було розглянуто конфігурування 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
}
Тепер при падінні веб-сервера він перезавантажиться автоматично.