Строительство для производства: веб-приложения - мониторинг

Вступление

Теперь, когда у нас есть производственная настройка сервера приложений, план восстановления и резервное копирование, давайте рассмотрим добавление мониторинга, чтобы улучшить нашу осведомленность о состоянии наших серверов и служб. Программное обеспечение для мониторинга, такое как Nagios, Icinga и Zabbix, позволяет создавать панели мониторинга и оповещения, которые будут показывать, какие компоненты настройки вашего приложения требуют внимания. Цель этого состоит в том, чтобы помочь вам обнаружить проблемы с настройкой и начать их устранять до того, как ваши пользователи столкнутся с ними.

изображение: https: //assets.digitalocean.com/articles/architecture/production/monitoring.png [Диаграмма мониторинга]

В этом руководстве мы настроим Nagios 4 в качестве программного обеспечения для мониторинга и установим агент NRPE на серверах, входящих в наше приложение.

Для каждого сервера в нашей настройке мы настроим мониторинг, чтобы проверить, работает ли сервер и является ли его основной процесс (т.е. apache, mysql или haproxy) работает. Хотя это руководство по мониторингу не является исчерпывающим - вы, вероятно, захотите настроить дополнительные проверки, которые мы не будем здесь рассматривать, - это отличное место для начала.

Предпосылки

Если вы хотите получить доступ к своей панели регистрации через доменное имя, создайте * A Record * в своем домене, например «monitor.example.com», который указывает на публичный IP-адрес вашего сервера * мониторинга *. Кроме того, вы можете получить доступ к панели мониторинга мониторинга через общедоступный IP-адрес. Рекомендуется настроить веб-сервер мониторинга для использования HTTPS и ограничить доступ к нему, разместив его за VPN.

Установите Nagios на сервер мониторинга

Настройте Nagios на своем * сервере мониторинга *, следуя этому руководству: https://www.digitalocean.com/community/tutorials/how-to-install-nagios-4-and-monitor-your-servers-on-ubuntu- 14-04 [Как установить Nagios 4 и контролировать свои серверы в Ubuntu 14.04]. Если вы предпочитаете, вы также можете использовать https://www.digitalocean.com/community/tutorials/how-to-use-icinga-to-monitor-your-servers-and-services-on-ubuntu-14-04 [ Icinga], который является вилкой Nagios.

Остановитесь, когда достигнете раздела * Monitor Ubuntu Host с NRPE *.

Добавить серверы в Nagios

На каждом сервере в вашей настройке (db1, app1, app2 и lb1), пройдите через https://www.digitalocean.com/community/tutorials/how-to-install-nagios-4-and-monitor-your- servers-on-ubuntu-14-04 # monitor-an-ubuntu-host-with-nrpe [Мониторинг хоста Ubuntu с помощью NRPE] учебного руководства Nagios.

Обязательно добавьте частное имя хоста или IP-адрес вашего сервера * Monitoring * в настройку + allow_hosts + в файле конфигурации NRPE.

Когда вы закончите добавление каждого хоста, у вас должен быть отдельный файл для каждого сервера, который вы хотите отслеживать: + db1.cfg +, + app1.cfg +, + app2.cfg + и `+ lb1.cfg + `. Каждый файл должен содержать определение хоста, которое ссылается на соответствующее имя хоста и адрес (который может быть именем хоста или IP-адресом сервера).

Настройка мониторинга хоста и сервиса

Давайте составим список общих вещей, которые мы хотим отслеживать на каждом сервере. Для каждого сервера давайте проконтролируем следующие * сервисы *:

  • Ping

  • SSH

  • Текущая нагрузка

  • Текущие пользователи

  • Использование диска

Давайте настроим это сейчас.

Определить общие службы

В руководстве по настройке Nagios мы настроили Nagios для поиска файлов + .cfg + в + / usr / local / nagios / etc / servers + (или + / etc / icinga / objects / + для Icinga). Чтобы упорядочить ситуацию, мы создадим новый файл конфигурации Nagios для общих служб, которые мы хотим отслеживать, под названием «common.cfg».

Сначала откройте файл конфигурации хоста для редактирования.

sudo vi /usr/local/nagios/etc/servers/common.cfg

Добавьте следующие определения сервисов с именем хоста каждого из ваших серверов (определено ранее в определениях хостов):

Конфигурация Nagios - Общие службы

define service {
       use                             generic-service
       host_name                       ,,,
       service_description             PING
       check_command                   check_ping!100.0,20%!500.0,60%
}

define service {
       use                             generic-service
       host_name                       ,,,
       service_description             SSH
       check_command                   check_ssh
       notifications_enabled           0
}

define service {
       use                             generic-service
       host_name                       ,,,
       service_description             Current Load
       check_command                   check_nrpe!check_load
}

define service {
       use                             generic-service
       host_name                       ,,,
       service_description             Current Users
       check_command                   check_nrpe!check_users
}

define service{
       use                             generic-service
       host_name                       ,,,
       service_description             Disk Utilization
       check_command                   check_nrpe!check_hda1
}

Сохранить и выйти.

Теперь мы готовы определить службы, специфичные для каждого сервера. Начнем с нашего сервера базы данных.

Определить процесс MySQL

Создать команду NRPE (на клиенте)

На вашем сервере баз данных * db1 * мы настроим новую команду NRPE. Откройте новый файл конфигурации NRPE, «commands.cfg»:

sudo vi /etc/nagios/nrpe.d/commands.cfg

Добавьте следующее определение команды:

Конфигурация NRPE (commands.cfg) - check_mysqld

command[check_mysqld]=/usr/lib/nagios/plugins/check_procs -c 1: -C

Сохранить и выйти. Это позволяет NRPE проверять процесс с именем «mysqld» и сообщать о критическом состоянии, если запущено менее 1 процесса с таким именем.

Перезагрузите конфигурацию NRPE:

sudo service nagios-nrpe-server reload
Создать определение сервиса (на сервере)

На вашем сервере Nagios, * мониторинг *, нам нужно определить новый сервис, который использует NRPE для запуска команды + check_mysqld +.

Откройте файл, который определяет, что определяет хост вашей базы данных. В нашем примере это называется «db1.cfg»:

sudo vi /usr/local/nagios/etc/servers/.cfg

В конце файла добавьте это определение сервиса (убедитесь, что значение + host_name + соответствует имени определения хоста):

db1.cfg - check_mysql

define service {
       use                             generic-service
       host_name
       service_description             Check MySQL Process
       check_command                   check_nrpe!check_mysqld
}

Сохранить и выйти. Это настраивает Nagios для использования NRPE для запуска команды check_mysqld на сервере базы данных.

Чтобы изменения вступили в силу, мы должны перезагрузить Nagios. Однако мы сначала перейдем к мониторингу процесса Apache.

Определить процесс Apache

Создать команду NRPE (на клиенте)

На ваших серверах приложений * app1 * и * app2 * мы настроим новую команду NRPE. Откройте новый файл конфигурации NRPE, «commands.cfg»:

sudo vi /etc/nagios/nrpe.d/commands.cfg

Добавьте следующее определение команды:

Конфигурация NRPE (commands.cfg) - check_apache2

command[check_apache2]=/usr/lib/nagios/plugins/check_procs -c 1: -w 3: -C apache2

Сохранить и выйти. Это позволяет NRPE проверять процесс с именем «apache2» и сообщать о критическом состоянии, если не запущены соответствующие процессы, или сообщать о состоянии предупреждения, если существует менее трех соответствующих процессов.

Перезагрузите конфигурацию NRPE:

sudo service nagios-nrpe-server reload

Не забудьте повторить это на любых дополнительных серверах приложений.

Создать определение сервиса (на сервере)

На вашем сервере Nagios, * мониторинг *, нам нужно определить новый сервис, который использует NRPE для запуска команды + check_apache2 +.

Откройте файл, который определяет, что определяет хост вашего приложения. В нашем примере они называются «app1.cfg» и «app2.cfg»:

sudo vi /usr/local/nagios/etc/servers/.cfg

В конце файла добавьте это определение сервиса (убедитесь, что значение + host_name + соответствует имени определения хоста):

app1.cfg и app2.cfg - check_apache2

define service {
       use                             generic-service
       host_name
       service_description             Check Apache2 Process
       check_command                   check_nrpe!check_apache2
}

Сохранить и выйти. Это настраивает Nagios для использования NRPE для запуска команды check_apache2 на серверах приложений. Не забудьте повторить это для каждого из ваших серверов приложений.

Чтобы изменения вступили в силу, мы должны перезагрузить Nagios. Тем не менее, мы перейдем к мониторингу процесса HAProxy до этого.

Определить процесс HAProxy

Создать команду NRPE (на клиенте)

На вашем сервере балансировки нагрузки * lb1 * мы настроим новую команду NRPE. Откройте новый файл конфигурации NRPE, «commands.cfg»:

sudo vi /etc/nagios/nrpe.d/commands.cfg

Добавьте следующее определение команды:

Конфигурация NRPE (commands.cfg) - check_haproxy

command[check_haproxy]=/usr/lib/nagios/plugins/check_procs -c 1: -C haproxy

Сохранить и выйти. Это позволяет NRPE проверять процесс с именем «haproxy» и сообщать о критическом состоянии, если запущено менее 1 процесса с таким именем.

Перезагрузите конфигурацию NRPE:

sudo service nagios-nrpe-server reload

Не забудьте повторить это на любых дополнительных серверах приложений.

Создать определение сервиса (на сервере)

На вашем сервере Nagios, * мониторинг *, нам нужно определить новый сервис, который использует NRPE для запуска команды + check_haproxy +.

Откройте файл, который определяет, что определяет хост вашей базы данных. В нашем примере это называется «lb1.cfg»:

sudo vi /usr/local/nagios/etc/servers/.cfg

В конце файла добавьте это определение сервиса (убедитесь, что значение + host_name + соответствует имени определения хоста):

lb1.cfg - check_haproxy

define service {
       use                             generic-service
       host_name
       service_description             Check HAProxy Process
       check_command                   check_nrpe!check_haproxy
}

Это настраивает Nagios для использования NRPE для запуска команды check_haproxy на вашем сервере балансировки нагрузки.

Чтобы изменения вступили в силу, мы должны перезагрузить Nagios.

Перезагрузить конфигурацию Nagios

Чтобы перезагрузить Nagios и применить все наши изменения, введите следующую команду:

sudo service nagios reload

Если в конфигурации нет синтаксических ошибок, вы должны быть установлены.

Проверьте Услуги Nagios

Прежде чем двигаться дальше, вы захотите убедиться, что Nagios отслеживает все хосты и сервисы, которые вы определили. Получите доступ к вашему серверу Nagios через его общедоступное имя хоста или IP-адрес, например, + HTTP: // Мониторинг / Nagios / +.. Введите логин, который вы указали при установке сервера Nagios.

В боковом меню нажмите на ссылку * Услуги *. Вы должны перейти на страницу, которая выглядит следующим образом:

изображение: https: //assets.digitalocean.com/articles/architecture/production/lamp/services.png [Nagios Services]

В идеале вы увидите каждый хост, и все сервисы будут в состоянии «ОК». На снимке экрана мы видим, что есть проблема с сервером * app2 *, потому что он был выключен во время самых последних проверок состояния. Если какая-либо из ваших служб не в порядке, исправьте их или, если службы в порядке, проверьте конфигурацию Nagios на наличие ошибок.

Другие соображения

Скорее всего, вы захотите создать план восстановления для вашего сервера мониторинга и создать резервную копию ваших файлов конфигурации Nagios (+ / usr / local / nagios / etc +). После настройки резервного копирования вы, вероятно, захотите настроить мониторинг, дополнительные услуги и уведомления по электронной почте.

Заключение

Теперь вы сможете видеть состояние своих серверов и сервисов, просто взглянув на панель мониторинга. В случае сбоя ваша система мониторинга поможет вам определить, какие серверы и службы не работают должным образом, что должно помочь сократить время простоя вашего приложения.

Перейдите к следующему учебному пособию, чтобы начать настройку централизованного ведения журнала для настройки вашего производственного сервера: https://www.digitalocean.com/community/tutorials/building-for-production-web-applications-centralized-logging[Building for Production: Веб-приложения - централизованное ведение журнала.

Related