При настройке для проверки http Monit настраивают задавая параметры в отдельных скриптах в каталоге /etc/monit/conf.d/.
Проверка http Monit, контроль работы приложения на PHP
Каталог /etc/monit/conf.d/ подключается в /etc/monit/monitrc
Создадим скрипт, который будет контролировать основные составляющие стэка. Их три: Nginx, PHP-FPM и MySQL.
mcedit /etc/monit/conf.d/web-server
check process nginx with pidfile /var/run/nginx.pid group www-data start program = "/etc/init.d/nginx start" stop program = "/etc/init.d/nginx stop" if failed host example.com port 80 protocol http then restart if 5 restarts within 5 cycles then timeout check process mysql with pidfile /var/run/mysqld/mysqld.pid start program = "/etc/init.d/mysql start" stop program = "/etc/init.d/mysql stop" if failed unixsocket /var/run/mysqld/mysqld.sock then restart if 5 restarts within 5 cycles then timeout check process php5-fpm with pidfile /var/run/php5-fpm.pid start program = "/etc/init.d/php5-fpm start" stop program = "/etc/init.d/php5-fpm stop" if failed host example.com port 80 protocol http then restart if 5 restarts within 5 cycles then timeout check file nginx-error with path /var/log/nginx/error.log if match "^timed out" then alert
Файл разделен на блоки, каждый блок соответствует одному из компонентов. Задаются определенные проверки и определяются действия, которые предпринимает Monit если условия проверки оказались выполнены.
Проверка HTTP реализована за счет двух строк в блоке для Nginx.
Блок в целом определяет команды, которыми запускается веб-сервер, пользователя из под которого он работает. А также идентификатор /var/run/nginx.pid.
Если он перестал существовать — сервер не работает. Пакет при этом сформирует сообщение, которое уходит администратору.
HTTP проверяется за счет запроса к хосту и анализа ответа.
В примере это example.com, при настройке имя нужно поменять на свое.
if failed host example.com port 80 protocol http then restart if 5 restarts within 5 cycles then timeout
Если Monit не смог получить ответ — он перезапускает службу. В случае разовых неполадок (большого количества накопившихся запросов) этого окажется достаточно.
При повторении ситуации во время следующей проверки Nginx снова перезапускается. Если 5 раз подряд сделать этого не удалось — попытки исправить ситуацию автоматически прекращаются.
Такая же логика задана и для PHP-FPM. Дополнительно проверяются логи Nginx. В /var/log/nginx/error.log ищутся вхождения вида «^timed out». Обнаруженные вхождения — даже если они единичны — требуют внимания, поэтому формируется alert.
Администратору при этом направляются уведомления на email.
Когда скрипт создан — файл требуется сохранить и перезапустить службу.
service monit restart
Читайте про базовую настройку Monit. При ней, в частности, указываются контактные данные администратора сервера, который будет получать уведомления.