Разработка и производство веб-приложений: мониторинг

Итак, теперь у вас есть развернутое приложение и план восстановления; кроме того, вы настроили резервное копирование конфигурационных файлов и данных, необходимых для восстановления после сбоя. Чтобы больше знать о состоянии серверов и своевременно узнавать об ошибках, настройте сервер мониторинга. Программное обеспечение для мониторинга, такое как 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: , ,