【问题标题】:Keep Track of laravel websocket with monit centos使用 monit centos 跟踪 laravel websocket
【发布时间】:2020-03-01 13:56:17
【问题描述】:

我正在尝试使用 monit 而不是 supervisord 来监控 laravel-websocket,因为它提供了更多选项 所以在我的 /home/rabter/laravelwebsocket.sh :

#!/bin/bash
case $1 in
        start)
                echo $$ > /var/run/laravelwebsocket.pid;
                exec 2>&1 php /home/rabter/core/artisan websockets:serve  1>/tmp/laravelwebsocket.out
                ;;
        stop)  
                kill `cat /var/run/laravelwebsocket.pid` ;;
        *)  
                echo "usage: laravelwebsocket.sh {start|stop}" ;;
esac
exit 0

在 etc/monit.d 中我用代码创建了一个名为 cwp.laravelwebsocket 的文件

check process laravelwebsocket with pidfile /var/run/laravelwebsocket.pid
start program "/bin/bash -c  /home/rabter/laravelwebsocket.sh start"
stop program "/bin/bash -c  /home/rabter/laravelwebsocket.sh stop"
if failed port 6001 then restart
if 4 restarts within 8 cycles then timeout

不幸的是,我运行了 monit,一切都开始受到监控,但是 laravel websocket,它不会启动一次,并且在我看到的 monit table 中 Process - laravelwebsocket Execution failed | Does not exist 如何在启动和失败、错误或崩溃时监控并启动 laravel-websocket?

我已经调查过Monitor a Laravel Queue Worker with Monit 但没有运气!

【问题讨论】:

    标签: laravel bash monit laravel-websockets


    【解决方案1】:

    您的 bash 脚本将自己的 pid 插入到您的 pid 文件中。另外,如果使用monit,php进程应该被发送到后台,因为monit是一个监控工具,而不是一个监督者。

    #!/usr/bin/env bash
    
    case $1 in
        start)
            php /home/rabter/core/artisan websockets:serve & 2>&1 >/tmp/laravelwebsocket.out
            echo $! > /var/run/laravelwebsocket.pid;
            ;;
        stop)
            kill $(cat /var/run/laravelwebsocket.pid) ;;
        *)
            echo "usage: $(basename $0) {start|stop}" ;;
        esac
    exit 0
    

    然后使用chmod +x FILEPATH 使该文件可执行。

    现在应该可以工作了:

    check process laravelwebsocket with pidfile /var/run/laravelwebsocket.pid
        start program "/home/rabter/laravelwebsocket.sh start"
        stop program "/home/rabter/laravelwebsocket.sh stop"
    
        if failed port 6001 then restart
        if 4 restarts within 8 cycles then timeout
    

    您是否使用 monit 作为容器的初始化系统?如果是这样,请告诉我。然后应用更多细节。

    【讨论】:

    • 不幸的是,在状态下的监控中,我仍然看到Execution failed | Does not exist 在用我的脚本替换您的脚本之后,使用监控作为初始化系统是什么意思?
    • Does not exist指向两个可能的问题:(1)文件不存在,(2)文件不可执行。你能ls -l /home/rabter/laravelwebsocket.sh 确保文件存在吗?该行应以-rwx 开头。关于 init-system:您可以在容器内运行 monit 作为主要服务。如果您只是在 init 服务(如 initd、systemd 等)的基础上使用 monit,则这里没有问题... ;)
    • -rwxr-xr-x 1 root root 342 Mar 6 10:51 laravelwebsocket.sh 这是命令的响应,是的,我确实将它与 systemd 一起使用。
    猜你喜欢
    • 2013-02-24
    • 2020-03-28
    • 1970-01-01
    • 2010-10-28
    • 2012-07-26
    • 2017-02-19
    • 1970-01-01
    • 2019-05-12
    • 2015-04-09
    相关资源
    最近更新 更多