Мониторинг работника очереди Laravel с помощью Monit
В настоящее время я рассматриваю возможность перехода от Supervisor к Monit для мониторинга работника очереди Laravel. Основная причина - это возможность контролировать процессор, память и устанавливать оповещения по электронной почте (например, с Supervisor, я должен установить другой пакет), так как я хочу в ближайшее время отслеживать другие вещи, такие как Redis и, возможно, общую стабильность и производительность веб-сервера.
Насколько мне известно, Monit более надежен и подходит для работы.
Вся документация, которую я смог найти о мониторинге Laravel и Queue/Job, относится к использованию Supervisor, и, пытаясь настроить его вручную, я застрял с настройкой pid-файла для прослушивателя очереди (я не являюсь системным администратором).
Есть ли причина для Laravel одобрить только Supervisor и вообще не упоминать Monit? ( https://laravel.com/docs/5.3/queues)
Если нет - может кто-нибудь помочь с настройкой конфигурации Monit для работника очереди Laravel?
Предполагая, что у меня есть проект под /var/www/html/laravel
и я хотел бы, чтобы процесс контролировался /var/www/html/laravel/artisan queue:work --daemon
Я пытался ответить на этот вопрос, но без особого успеха.
Любая помощь будет оценена.
1 ответ
Если вам все еще нужен ответ:
Конечно, можно настроить Monit для управления своей очередью с небольшим предостережением (как упомянуто в их FAQ); вам нужно обернуть вашу команду в сценарий оболочки.
В конфигурационном файле Monit (в Ubuntu 14.04 /etc/monit/monitrc) вы можете добавить:
# beanstalk
check process beanstalkd with pidfile /var/run/beanstalkd.pid
start program = "/etc/init.d/beanstalkd start"
stop program = "/etc/init.d/beanstalkd stop"
if failed host 127.0.0.1 port 11300 then restart
if 15 restarts within 15 cycles then timeout
# beanstalk-queue
check process beanstalk-queue with pidfile /var/run/beanstalk-queue.pid
start = "YOUR_CHOSEN_PATH/beanstalk-queue.sh start"
stop = "YOUR_CHOSEN_PATH/beanstalk-queue.sh stop"
Затем создайте скрипт beanstalk-queue.sh в YOUR_CHOSEN_PATH:
#!/bin/bash
case $1 in
start)
echo $$ > /var/run/beanstalk-queue.pid;
exec 2>&1 php /PATH_TO_YOUR_LARAVEL_INSTALLATION/artisan queue:work --daemon 1>/tmp/beanstalk-queue.out
;;
stop)
kill `cat /var/run/beanstalk-queue.pid` ;;
*)
echo "usage: beanstalk-queue.sh {start|stop}" ;;
esac
exit 0
дай ему исполняемые права и все!
PS Каталоги, которые я использовал, предназначены для Ubuntu 14.04, проверьте другие дистрибутивы.