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