Monit 未重新启动进程

Monit 未重新启动进程

我必须monit监控一个进程,但它没有意识到它已经停止运行。我的监控配置如下:

 check process xxx with pidfile /var/run/xxx.pid
 group yyy
 start program = "/etc/init.d/xxx start"
 stop program = "/etc/init.d/xxx stop"
 if failed host 127.0.0.1 port 9999  then restart
 if 5 restarts within 5 cycles then timeout

问题是,即使我的进程崩溃了,PID 文件仍然存在。所以...PID 存在,但 localhost 中的端口 9999 应该会失败。所以...monit 不应该重新启动此进程吗?一定要删除 pid 文件吗?不能做那种事吗OR

提前致谢,

答案1

如果我错了请纠正我:

  • 如果程序崩溃,PID 文件保留,但端口 9999 被关闭
  • 如果程序正常停止,PID 文件将被删除,端口 9999 将被关闭

常见行为与端口 9999 有关。你可以使用类似下面的方法监视它:

check host 127.0.0.1 with address 127.0.0.1
  start program = "/etc/init.d/xxx restart"
  stop program = "/etc/init.d/xxx stop"
  if failed port 9999 then restart

OR以上内容应该足以涵盖所有情况,但您可以将其作为附加声明添加到现有声明中(这将是您正在讨论的类型)。

看看关于检查主机的文档

附言: 我认为,关于文档(有关 Apache 的示例),即使 PID 文件仍然存在,如果端口 9999 无法访问,您的配置也应该能够重新启动您的进程。我猜是端口 9999 未关闭,或者端口 9999 未在 127.0.0.1 上监听(请使用 检查所有这些netstat)。

因此,在您的配置中,尝试用以下命令替换端口监视行:

if failed port 9999 then restart(删除host 127.0.0.1)。

相关内容