Monit 是否可以配置为永不取消监控/使服务超时?

Monit 是否可以配置为永不取消监控/使服务超时?

如果服务失败几次,Monit 似乎会放弃重新启动服务,并取消监控。我在文档中找不到有关何时或为何的具体信息。

我的 Monit 配置设置如下:

set daemon 10
set logfile /var/log/monit.log
set statefile /var/lib/monit/monit.state
set alert [email protected] not { nonexist, action, instance }
include /etc/monit/conf.d/*

这是我正在使用的 Monit 规则集的一个示例:

check process myservice
  with pidfile /var/run/myservice/myservice.pid
  start program = "/home/myservice/current/start-myservice.sh"
    as uid myservice and gid myservice
  stop program = "/home/myservice/current/stop-myservice.sh"
    as uid myservice and gid myservice
  mode active

在我的环境中,我希望它无限期地尝试轮询间隔。有没有办法配置 monit 来绝不停止监控服务,即使它没有成功启动?

答案1

我会简单地使用一个按所需间隔运行的 cron 作业monit start servicename。当然,您可以使用组进行更精细的控制。

答案2

我遇到了完全相同的问题,尽管重新启动了 monit,但它会在超时后拒绝监控。最后发现必须删除 monit 状态文件 ( /var/.monit.state) 并重新启动 monit 才能使其再次监控所有程序。

答案3

经过一番挖掘,我们发现 Monit 将系统监控数据存储在一个“状态”文件中。这个“状态”文件会跟踪哪些服务正在被监控/未被监控。

因此,虽然这有点“蛮力”,但确实有效。如果某个服务由于超时等原因变为“不受监控”,则只需从系统中删除 Monit 状态文件,如下所示:

sudo rm /var/lib/monit/state

然后像这样重新启动 Monit,一切都会好起来:

sudo service monit restart

答案4

根据您的 Monit 代码片段,您似乎必须修改或添加循环语句到您的流程节中。请参阅相关文档在这里这里

似乎您可能希望将服务测试设置为在每个周期执行,并且不设置超时语句。另请查看您的 monit 主页http://主机名:2812. Check the page for the relevant service and look at“存在”字段。您的默认设置应如下所示:

If doesn't exist 1 times within 1 cycle(s) then restart else if succeeded 1 times within 1 cycle(s) then alert

相关内容