用Monit监视Laravel队列工作者

时间:2016-10-11 06:49:40

标签: laravel queue supervisord supervisor monit

我目前正在考虑从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但没有取得多大成功。

任何帮助都将不胜感激。

1 个答案:

答案 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,检查其他发行版。