Разработка и производство веб-приложений: мониторинг
Итак, теперь у вас есть развернутое приложение и план восстановления; кроме того, вы настроили резервное копирование конфигурационных файлов и данных, необходимых для восстановления после сбоя. Чтобы больше знать о состоянии серверов и своевременно узнавать об ошибках, настройте сервер мониторинга. Программное обеспечение для мониторинга, такое как Nagios, Icinga и Zabbix, позволяет создавать дашборды и предупреждения, которые покажут, какие компоненты приложения требуют внимания. Цель мониторинга заключается в том, чтобы помочь вам выявить проблемы в настройке и начать их исправлять до того, как с ними столкнутся пользователи.
Данное руководство поможет настроить Nagios 4 для мониторинга состояния компонентов приложения и установить на серверы агент NRPE.
Требования
Чтобы получить доступ к дашборду по домену, создайте запись А, указывающую на внешний IP-адрес сервера мониторинга. Доступ к дашборду можно получить и по внешнему IP-адресу. Рекомендуется настроить сервер мониторинга для поддержки HTTPS и ограничить доступ к нему с помощью VPN.
1: Установка Nagios на сервер мониторинга
Примечание: Сервер мониторинга в руководстве называется monitoring.
Подробные инструкции по установке Nagios вы найдете в руководстве Мониторинг сервера Ubuntu 14.04 при помощи Nagios 4 (выполните руководство до раздела «Мониторинг хоста при помощи NRPE»).
Также можно использовать форк проекта Nagios под названием Icinga.
Читайте также: Мониторинг сервера и сервисов при помощи Icinga в Ubuntu 14.04
2: Добавление серверов в Nagios
Выполните раздел «Мониторинг хоста при помощи NRPE» данного руководства на каждом сервере установки (db1, app1, app2 и lb1).
Укажите имя хоста или внутренний IP-адрес сервера monitoring в параметре allowed_hosts в конфигурационном файле NRPE.
Когда вы закончите добавлять хосты, у вас будет отдельный файл для каждого сервера, который нужно отслеживать: db1.cfg, app1.cfg, app2.cfg и lb1.cfg. Каждый файл должен содержать определение хоста, которое ссылается на соответствующее имя хоста и адрес (это может быть имя хоста сервера или IP-адрес).
3: Мониторинг хостов и сервисов
Составьте общий список компонентов, которые нужно отслеживать на каждом сервере. К примеру, это будут следующие сервисы:
- Ping
- SSH
- Текущая нагрузка
- Текущие пользователи
- Использование диска
Определение общих сервисов
В руководстве по установке инструмент Nagios читает файлы .cfg в каталоге /usr/local/nagios/etc/servers (или /etc/icinga/objects/ для Icinga). Создайте новый конфигурационный файл Nagios для определения общих сервисов под названием common.cfg.
sudo vi /usr/local/nagios/etc/servers/common.cfg
Добавьте в файл следующее определение сервисов, указав host_name каждого сервера.
define service {
use generic-service
host_name db1,app1,app2,lb1
service_description PING
check_command check_ping!100.0,20%!500.0,60%
}
define service {
use generic-service
host_name db1,app1,app2,lb1
service_description SSH
check_command check_ssh
notifications_enabled 0
}
define service {
use generic-service
host_name db1,app1,app2,lb1
service_description Current Load
check_command check_nrpe!check_load
}
define service {
use generic-service
host_name db1,app1,app2,lb1
service_description Current Users
check_command check_nrpe!check_users
}
define service{
use generic-service
host_name db1,app1,app2,lb1
service_description Disk Utilization
check_command check_nrpe!check_hda1
}
Сохраните и закройте файл. Теперь можно определить индивидуальные сервисы каждого отслеживаемого сервера.
Определение процесса MySQL
Перейдите на сервер db1 и создайте команду NRPE. Откройте конфигурационный файл NRPE, commands.cfg.
sudo vi /etc/nagios/nrpe.d/commands.cfg
Добавьте в файл такое определение:
command[check_mysqld]=/usr/lib/nagios/plugins/check_procs -c 1: -C mysqld
Сохраните и закройте файл.
Это позволяет NRPE проверять процесс mysqld и сообщать о критическом состоянии, если на сервере запущено менее 1 процесса с этим именем.
Перезагрузите NRPE:
sudo service nagios-nrpe-server reload
Вернитесь на сервер monitoring (на нем установлен Nagios) и определите новый сервис, который запускает команду check_mysqld с помощью NRPE.
Откройте файл, в котором определен хост БД (в данном случае это db1.cfg).
sudo vi /usr/local/nagios/etc/servers/db1.cfg
В конец файла добавьте определение сервиса (значение host_name должно совпадать с именем в определении хоста).
define service {
use generic-service
host_name db1
service_description Check MySQL Process
check_command check_nrpe!check_mysqld
}
Сохраните и закройте файл. Теперь Nagios будет использовать NRPE для запуска команды check_mysqld.
Чтобы обновить настройки, нужно перезапустить Nagios. Но сначала настройте процесс Apache.
Определение процессов Apache
На серверах app1 и app2 создайте команду NRPE. Откройте конфигурационный файл NRPE, commands.cfg.
sudo vi /etc/nagios/nrpe.d/commands.cfg
Добавьте в файл такое определение:
command[check_apache2]=/usr/lib/nagios/plugins/check_procs -c 1: -w 3: -C apache2
Сохраните и закройте файл.
Теперь NRPE будет проверять процесс apache2 и сообщать о критическом состоянии, если на сервере запущено менее 3 процессов с этим именем.
Перезагрузите NRPE:
sudo service nagios-nrpe-server reload
Примечание: Если у вас больше серверов приложений, повторите это действие на всех таких серверах.
Вернитесь на сервер monitoring и определите новый сервис, который запускает команду check_apache2 с помощью NRPE.
Откройте файл, в котором определен хост БД (в данном случае это app1.cfg и app2.cfg).
sudo vi /usr/local/nagios/etc/servers/app1.cfg
В конец файла добавьте определение сервиса (значение host_name должно совпадать с именем в определении хоста).
define service {
use generic-service
host_name app1
service_description Check Apache2 Process
check_command check_nrpe!check_apache2
}
Сохраните и закройте файл. Теперь Nagios будет использовать NRPE для запуска команды check_apache2.
Определение процесса HAProxy
На сервере lb1, который распределяет нагрузку между серверами приложений, создайте команду NRPE. Откройте конфигурационный файл NRPE, commands.cfg.
sudo vi /etc/nagios/nrpe.d/commands.cfg
Добавьте в файл такое определение:
command[check_haproxy]=/usr/lib/nagios/plugins/check_procs -c 1: -C haproxy
Сохраните и закройте файл.
Теперь NRPE будет проверять процесс haproxy и сообщать о критическом состоянии, если на сервере запущено менее 1 процесса с этим именем.
Перезагрузите NRPE:
sudo service nagios-nrpe-server reload
Примечание: Если у вас больше балансировщиков, повторите это действие на всех таких серверах.
Вернитесь на сервер monitoring и определите новый сервис, который запускает команду check_haproxy с помощью NRPE.
Откройте файл, в котором определен хост БД (в данном случае это lb1.cfg).
sudo vi /usr/local/nagios/etc/servers/lb1.cfg
В конец файла добавьте определение сервиса (значение host_name должно совпадать с именем в определении хоста).
define service {
use generic-service
host_name lb1
service_description Check HAProxy Process
check_command check_nrpe!check_haproxy
}
Сохраните и закройте файл. Теперь Nagios будет использовать NRPE для запуска команды check_haproxy.
Перезапуск Nagios
Чтобы обновить настройки, нужно перезапустить Nagios.
sudo service nagios reload
Если в синтаксисе конфигурации нет ошибок, Nagios начнет использовать новые настройки.
4: Проверка сервисов Nagios
Прежде чем двигаться дальше, необходимо убедиться, что Nagios отслеживает все добавленные хосты и сервисы. Получите доступ к серверу Nagios через его имя хоста или внешний IP-адрес.
http://monitoring.example.com/nagios/
Введите учетные данные, которые вы выбрали во время установки сервера Nagios.
В боковом меню найдите ссылку Services.
В идеале вы должны увидеть, что каждый хост и все сервисы находятся в состоянии «ОК». Если какой-либо из сервисов находится в другом состоянии (например, CRITICAL), проверьте сего работу; также можно проверить ошибки в конфигурации Nagios.
5: Дополнительные рекомендации
Рекомендуем разработать план восстановления для сервера мониторинга и создать резервные копии конфигурационных файлов Nagios (/usr/local/nagios/etc). Также можно настроить мониторинг для дополнительных сервисов и уведомления по электронной почте.
Заключение
Теперь вы можете отслеживать состояние серверов и сервисов. Система мониторинга поможет своевременно определить ошибку и избежать простоя приложения.
В следующем руководстве данной серии вы узнаете о логировании.
Tags: Icinga, Nagios, NRPE