Monit может быть использован для мониторинга ваших услуг на вашем VPS или выделенном сервере. Вы можете использовать Monit, чтобы убедиться, что php7-fpm всегда работает, а не остановлен или завис – это очень редко, но это лучше, чем потом сожалеть.
Monit проверит процесс php7-fpm, прослушав его сокет. Если сокет не может быть обнаружен, Monit перезапустит сервис php7-fpm. Таким образом, вы обеспечиваете свой веб – сайт, где возможно, работает WordPress, и всегда работают основные процессы.
Если вам нужно установить Monit на Ubuntu или Debian то следуйте этому руководству.
Использование Monit для мониторинга + автоматическую перезагрузку сервиса php7-fpm
Monit необходима информация, чтобы проверить, на наличие работающего php7-fpm.
Мы будем использовать сокет php7-fpm и его файл PID.
Нахождение php7-fpm или TCP сокета
php7-fpm может прослушивать либо сокеты Unix или TCP сокеты. Для того, чтобы выяснить, используем эту команду
grep "listen =" /etc/php/7.0/fpm/pool.d/www.conf
Если вы видите этот вывод, то php7-fpm использует UNIX сокеты
listen = /run/php/php7.0-fpm.sock
Если вы видите этот вывод, то php7-fpm использует TCP сокеты, интерфейс обратной петли 127.0.0.1 на порту 9000
listen = 127.0.0.1:9000
Нахождение файла Pid php7-fpm
Monit нужен файл PID:
sudo find /run -iname php*.pid
Вы должны увидеть результаты, примерно такие
/run/php/php7.0-fpm.pid
Теперь мы имеем информацию, необходимую для настройки Monit для мониторинга php7-fpm.
Настройка Monit для мониторинга php7-fpm
Создайте конфигурацию Monit php7-fpm, вы можете использовать папку conf-enabled вместо,conf.d, откройте файл /etc/monit/monitrc для проверки.
sudo nano /etc/monit/conf.d/php7-fpm
Это конфигурация Monit php7-fpm для UNIX сокетов.
Он проверяет файл php7-fpm.pid и, если он не существует Monit попытается перезапустить его.
Monit также собирается проверить, что php7-fpm Unix сокет существует: /var/run/php7.0-fpm.sock
check process php7-fpm with pidfile /run/php/7.0/php7-fpm.pid start program = "/usr/sbin/service php7.0-fpm start" with timeout 60 seconds stop program = "/usr/sbin/service php7.0-fpm stop" if failed unixsocket /var/run/php7.0-fpm.sock then restart
Если вы используете TCP сокеты, то это будет конфигурация Monit.
Monit ищет демон, который прослушивает 127.0.0.1 по порту 9000, если он не найден Monit перезагрузит php7-fpm после 3 циклов центрального процессора.
Измените 127.0.0.1 чтобы соответствовать вашему интерфейсу и 9000 на другой порт.
check process php7-fpm with pidfile /run/php/7.0/php7-fpm.pid start program = "/usr/sbin/service php7.0-fpm start" with timeout 60 seconds stop program = "/usr/sbin/service php7.0-fpm stop" if failed host 127.0.0.1 port 9000 protocol tcp for 3 cycles then restart
Проверьте конфигурацию MONIT на правильный синтаксис
sudo monit -t
Вы должны увидеть это сообщение, указывающее, что с синтаксисом в MONIT все ОК.
Control file syntax OK
Затем перезагрузите Monit для активации конфигурации
sudo service monit reload
Вы можете проверить в MONIT статус php7-fpm по порту 2812 или в зависимости от того порта, который вы указали в Monit.
Теперь ваш php7-fpm служба будет автоматически перезагружена, если она когда-либо выйдет из строя.