Monit 抛出失败的协议测试 [HTTP] 而不是启动进程

Monit 抛出失败的协议测试 [HTTP] 而不是启动进程

我有一个自定义进程(一个 elixir 应用程序)正在运行。我想为其设置 monit。我正在 /etc/monit.d 中设置 monit 检查,如下所示:

set daemon 30

check host meraj-pc with address 192.168.3.124
    start program = "/meraj/app/ex_app/check_port.sh start"
    stop program = "/meraj/app/ex_app/check_port.sh stop"

    if failed port 4000 type tcp protocol http then start

check_port.sh 文件是:

case $1 in
     start)
            sh /meraj/app/ex_app/startup.sh & echo $! > /var/run/ex_app.pid ;
            ;;
     stop)
       pkill -F /var/run/ex_app.pid ;;
     *)
       echo "usage: checkport {start|stop}" ;;
    esac
    exit 0 

而 startup.sh 文件包含 elixir 应用程序的实际启动命令,例如混合清洁&&混合编译&& iex -S混合phx.server

现在,当启动 monit 时,它继续给我这个错误(当时我的 4000 端口上的服务没有运行):

8 月 10 日 10:40:48 meraj monit[28316]:'meraj-pc' 协议测试失败 [HTTP] at [192.168.3.124]:4000 [TCP/IP] -- 连接被拒绝 8 月 10 日 10:40:48 meraj monit[28316]:'meraj-pc' start:'/meraj/app/ex_app/check_port.sh start'

如果应用程序在 4000 上运行,它会在监控日志中显示此消息:

8 月 10 日 10:43:19 meraj monit[28316]:'meraj-pc' 连接成功至 [192.168.3.124]:4000 [TCP/IP]

我不知道为什么它无法按预期在失败状态下执行启动过程。有人可以查看一下并告诉我是否遗漏了什么吗?

相关内容