Что такое 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
- 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
- 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
Свежие комментарии