Sheensay → Серверная → Monit — как обеспечить бесперебойную работу NGINX, MySQL, PHP-FPM

Monit — как обеспечить бесперебойную работу NGINX, MySQL, PHP-FPM

24.09.2021

  • Что такое Monit
  • Как установить Monit
  • Настройка Monit в Debian 9
  • Настройка Monit в Debian 8
  • Настройка мониторинга NGINX
  • Настройка мониторинга MySQL, MariaDB
  • Как настроить мониторинг PHP FPM в monit
  • Настройка почтовых уведомлений
  • Где посмотреть лог monit

Что такое Monit

Monit — это система мониторинга за службами в Linux (Debian, Ubuntu, CentOS). Есть дистрибутивы под BSD (FreeBSD, OpenBSD), а также OS X и Solaris.
Возможности:

  • Слежение за работоспособностью и доступностью MySQL, NGINX и другими подобными службами;
  • При сбое в работе одного из подопечных (их недоступности) monit может, в зависимости от настроек, уведомить о проблеме по email и попытаться восстановить их работоспособность.
  • Определение, что какая-служба (например, Apache) потребляет слишком много ресурсов (скажем, при DoS-атаке), и остановить или перезапустить эту службу, уведомив при этом администратора по email.
  • Контроль за характеристиками процесса: сколько оперативной памяти или циклов процессора используется
  • Вы можете использовать Monit для мониторинга процессов демона или аналогичных программ, запущенных на localhost. Monit особенно полезен для мониторинга процессов демона, например, запущенных при загрузке системы из / etc / init / Например sendmail, sshd, apache и mysql.
  • Вы также можете использовать Монит для мониторинга файлов, каталогов и файловых систем на локальном хосте. Монит может контролировать эти элементы для изменений, таких как изменения временных меток, изменения контрольной суммы или изменения размера. Это также полезно по соображениям безопасности — вы можете контролировать контрольную сумму md5 или sha1, которые не должны меняться, получать предупреждение или выполнять действие, если они должны измениться.
  • Контролируйте сетевые подключения к различным серверам, либо на локальном хосте, либо на удаленных хостах. Поддерживаются порты TCP, UDP и Unix. Сетевые тесты могут выполняться на уровне протокола; Монит имеет встроенные тесты для основных интернет-протоколов, таких как HTTP, SMTP и т.д. Даже если протокол не поддерживается, вы все равно можете протестировать сервер, так как вы можете настроить Monit для отправки любых данных и проверки ответа с сервера.
  • Monit можно использовать для тестирования программ или сценариев в определенное время, например, cron, но, кроме того, вы можете проверить значение выхода программы и выполнить действие или отправить предупреждение, если значение выхода указывает на ошибку. Это означает, что вы можете использовать Monit для выполнения любого типа проверки, для которого вы можете написать сценарий.
  • Наконец, Monit можно использовать для мониторинга общих системных ресурсов на локальном хосте, таких как общее использование процессора, оперативной памяти и Load Average.

На мой взгляд, самое важное для вебмастера, что может Monit — это обеспечение бесперебойной работы вебсервера (NGINX, MySQL, PHP-FPM). Эту систему и настроим далее.

Для работы с консолью SSH используется Far Manager или putty

Как установить Monit

Инструкция ниже по установке на Debian, Ubuntu. Для других систем разница будет только в префиксах и месторасположении дистрибутивов Monit.

Открываем консоль SSH и пишем:

apt-get install monit

После установки включим его в автозагрузку:

systemctl enable monit

На этом установка завершена, monit работает.

Ниже ещё несколько команд для управления службой. Вместо service monit можно использовать более низкоуровневный (подходящий для cron) /etc/init.d/monit:

service monit status
Определить статус (работает или не работает Monit в текущий момент)
service monit start
Запустить Monit

service monit stop
Остановить monit
service monit restart
Перезапустить monit

Настройка Monit в Debian 9

После установки Monit создаётся каталог /etc/monit
monit в debian 9

conf.d
Тут располагаются рабочие файлы конфигурации Monit
conf-available
Это директория содержит шаблоны файлов конфигурации Monit
conf-enabled
Тут также могут располагаться рабочие файлы конфигурации Monit
templates
Шаблоны для работы Monit (оставляем как есть)
monitrc
Основной файл конфигурации Monit

Нас интересуют NGINX, MySQL, PHP-FPM

Включаем монитор NGINX:

cp /etc/monit/conf-available/nginx /etc/monit/conf-enabled/nginx

Также включаем монитор MySQL:

cp /etc/monit/conf-available/mysql /etc/monit/conf-enabled/mysql

Как включить монитор php-fpm — смотрите далее

После перезагружаем Monit

service monit restart

Настройка Monit в Debian 8

После установки Monit создаётся каталог /etc/monit
Каталог /etc/monit

conf.d
Тут располагаются рабочие файлы конфигурации Monit
monitrc.d
Это директория содержит шаблоны файлов конфигурации Monit
templates
Шаблоны для работы Monit (оставляем как есть)
monitrc
Основной файл конфигурации Monit

Включаем монитор NGINX:

cp /etc/monit/monitrc.d/nginx /etc/monit/conf.d/nginx

Также включаем монитор MySQL:

cp /etc/monit/monitrc.d/mysql /etc/monit/conf.d/mysql

Как включить монитор php-fpm — смотрите далее

После перезагружаем Monit

service monit restart

Настройка мониторинга NGINX

Содержимое конфигурационного файла для мониторинга работы NGINX:

 check process nginx with pidfile /var/run/nginx.pid
   group www
   group nginx
   start program = "/etc/init.d/nginx start"
   stop program = "/etc/init.d/nginx stop"
#  if failed port 80 protocol http request "/" then restart
   if 5 restarts with 5 cycles then timeout
   depend nginx_bin
   depend nginx_rc

 check file nginx_bin with path /usr/sbin/nginx
   group nginx
   include /etc/monit/templates/rootbin

 check file nginx_rc with path /etc/init.d/nginx
   group nginx
   include /etc/monit/templates/rootbin

Настройка мониторинга MySQL, MariaDB

Содержимое конфигурационного файла для мониторинга MySQL, MariaDB (подходит для обоих типов баз данных):

 check process mysqld with pidfile /var/run/mysqld/mysqld.pid
   group database
   group mysql
   start program = "/usr/sbin/service mysql start"
   stop  program = "/usr/sbin/service mysql stop"
   if failed host localhost port 3306 protocol mysql with timeout 15 seconds for 3 times within 4 cycles then restart
   if failed unixsocket /var/run/mysqld/mysqld.sock protocol mysql for 3 times within 4 cycles then restart
   if 5 restarts with 5 cycles then timeout
   depend mysql_bin
   depend mysql_rc

 check file mysql_bin with path /usr/sbin/mysqld
   group mysql
   include /etc/monit/templates/rootbin

 check file mysql_rc with path /etc/init.d/mysql
   group mysql
   include /etc/monit/templates/rootbin

Как настроить мониторинг PHP FPM в monit

Для начала, соберём нужные данные для файла конфигурации.
Пишем в консоль SSH (для PHP 7.0):

grep "listen =" /etc/php/7.0/fpm/pool.d/www.conf

Если PHP настроен на работе как unix socket, в ответ получим:
listen = /run/php/php8.0-fpm.sock

Если как TCP сокет, то:
listen = 127.0.0.1:9001

Теперь нужно найти файл PID:

find /run -iname php*.pid

В ответ получим:
/run/php/php8.0-fpm.pid

Шаблон для php-fpm по умолчанию в комплекте не идёт, поэтому его создаём самостоятельно

Создаём файл конфигурации.
Для Debian 11, 10, 9:

nano /etc/monit/conf-enabled/php-fpm

Для Debian 8:

nano /etc/monit/conf.d/php-fpm

Вариант для PHP 8.0. В зависимости от того, сокет у вас или TCP, раскомментируйте и закомментируйте нужные строки:

check process php8-fpm with pidfile /run/php/php8.0-fpm.pid
    start program = "/usr/sbin/service php8.0-fpm start" with timeout 60 seconds
    stop program  = "/usr/sbin/service php8.0-fpm stop"
    if failed unixsocket /run/php/php8.0-fpm.sock then restart
    #if failed port 9000 type TCP then restart # Если проблема на 9000 порту, перезагружаем
    if 3 restarts within 5 cycles then alert # Если произошло 3 перезагрузки в 5 циклах - уведомляем об этом по email

Вариант для PHP 5.6:

check process php5-fpm with pidfile /var/run/php5-fpm.pid
  start program = "/etc/init.d/php5-fpm start" # Команда для старта php-fpm
  stop program  = "/etc/init.d/php5-fpm stop" # Команда для остановки php-fpm
  #if failed unixsocket /var/run/php-fpm/php-fpm.sock then restart
  if failed port 9000 type TCP then restart # Если проблема на 9000 порту, перезагружаем
  if 3 restarts within 5 cycles then alert # Если произошло 3 перезагрузки в 5 циклах - уведомляем об этом по email

Сохраняем, проверяем правильность конфигурации:

monit -t

В случае успеха, увидим следующее:
Control file syntax OK

После всех этих манипуляций перезагружаем monit

service monit restart

Настройка почтовых уведомлений

Вы можете раскомментировать нужную строку в файле monitrc или создать новый файл в /etc/monit/conf.d/

Почтовые уведомления настраиваются следующей строкой конфигурационного файла:

set alert [email protected]

где [email protected] — email, куда отправляются письма с уведомлениями.

Довольно удобно принимать email в Telegram с помощью бота @etlgr_bot

После не забудьте перезагрузить Monit.

Где посмотреть лог monit

Лог monit располагается в /var/log/monit.log.
Его также можно просмотреть командой:

tail -f /var/log/monit.log



Так себеНеплохоНормальноХорошоОтлично (2 оценок, в среднем: 5,00 из 5)
Загрузка...


  • LEMP
  • Установка и настройка Memcached
  • NGINX
  • Ошибка php Maximum execution time of 30 seconds exceeded
  • Apache

Серверная

Monit - как обеспечить бесперебойную работу NGINX, MySQL, PHP-FPM

Свежие записи

  • Squid — свой собственный HTTP Proxy сервер
  • Как исправить ошибку «Обновить WordPress — В настоящий момент выполняется другое обновление»
  • Query Monitor
  • LEMP
  • Telegram

Свежие записи

  • Squid — свой собственный HTTP Proxy сервер
  • Как исправить ошибку «Обновить WordPress — В настоящий момент выполняется другое обновление»
  • Query Monitor
  • LEMP
  • Telegram

Свежие комментарии

  • Sheens к записи Что такое SSL и TLS, как установить и настроить
  • Геомант к записи Что такое SSL и TLS, как установить и настроить
  • Sheens к записи Last-Modified в WordPress
  • Артур к записи Last-Modified в WordPress
  • Sheens к записи EWWW Image Optimizer — плагин для сжатия png, jpeg, gif анимации без потери качества
  • Telegram
  • Вконтакте
  • Facebook
  • Twitter
  • Google+
  • Одноклассники
  • Мой Мир Mail.ru
  • RSS

Copyright © 2025 · Sheensay on Genesis Framework · WordPress · Log in