我目前正在考虑从 Supervisor 迁移到 Monit,以监视 Laravel 队列工作线程。主要原因是能够监视 CPU、内存和设置电子邮件警报(据主管说,我必须安装另一个软件包),因为我希望尽快监视其他内容,例如 Redis,也许还有 Web 服务器的整体稳定性和性能。
就我在流程监控方面的有限知识而言,Monit 更强大并且更适合这项工作。
我能找到的有关 Laravel 和队列/作业监控的所有文档都涉及使用 Supervisor,并且在尝试手动设置它时,我陷入了为队列监听器设置 pid 文件的困境(我不是系统管理员) .
Laravel 有理由只支持 Supervisor 而根本不提及 Monit 吗? (https://laravel.com/docs/5.3/queues#queue-workers-and-deployment)
如果没有 - 有人可以帮助了解如何为每个 Laravel 队列工作程序设置 Monit 配置吗?
假设我在 /var/www/html/laravel
下有一个项目,并且我希望监视的进程为 /var/www/html/laravel/artisanqueue:work - -守护进程
我尝试关注 this question但没有取得多大成功。
最佳答案
如果您仍然需要答案:
当然可以设置 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,请检查其他发行版。
关于laravel - 使用 Monit 监控 Laravel 队列工作线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39971787/