我目前正在考虑从Supervisor转到Monit以监控Laravel队列工作人员。主要原因是能够监控CPU,内存和设置电子邮件警报(与Supervisor afai,我必须安装另一个软件包),因为我希望尽快监控其他事情,例如Redis,以及Web服务器的整体稳定性和性能。 / p>
由于我在过程监控方面的知识有限,Monit更加强大,适合这项工作。
我可以找到关于Laravel和队列/作业监控的所有文档都指的是使用Supervisor,当尝试手动设置时,我遇到了为队列监听器设置pid文件的困难(我不是系统管理员)
Laravel是否有理由仅认可主管而根本不提Monit? (https://laravel.com/docs/5.3/queues#queue-workers-and-deployment)
如果没有 - 有人可以帮助了解每个Laravel队列工作人员如何设置Monit配置吗?
假设我在/var/www/html/laravel
下有一个项目,我希望监控过程为/var/www/html/laravel/artisan queue:work --daemon
我尝试了this question但没有取得多大成功。
任何帮助都将不胜感激。
答案 0 :(得分:4)
如果您仍需要答案:
当然可以设置Monit来控制你的队列,但需要注意一点(如their FAQ中所述);你需要将命令包装在shell脚本中。
在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"
然后在YOUR_CHOSEN_PATH中创建脚本beanstalk-queue.sh:
#!/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,检查其他发行版。