让 monit 等待更长时间,然后再认为某些东西已经死了

让 monit 等待更长时间,然后再认为某些东西已经死了

我正在尝试启动一个程序(Resque),但写入 pid 文件需要一些时间。因此,我认为 Monit 认为该程序尚未启动,并在写入第一个程序的 pid 文件之前启动了一个或两个程序。

我如何延迟 Monit 再次检查的时间,仅针对此过程?或者我应该以其他方式解决这个问题?

答案1

我如何延迟 Monit 再次检查的时间,只是为了这个过程?


您想要实现的目标可以通过“服务轮询时间“monit 的功能

Monit 文档说

服务会按照

set daemon n

语句。检查的执行顺序与 .monitrc 文件中写入的顺序相同,除非在服务之间设置了依赖关系,在这种情况下,服务层次结构可能会改变检查的顺序。

自定义服务轮询的方法之一是

  1. 根据轮询周期长度自定义间隔倍数

每 [数字] 个周期

例子:

check process resque with pidfile /your/app/root/tmp/pid/resque.pid
   every 2 cycles

或者我应该用另一种方法解决这个问题?


我也曾尝试使用 monit 监控 resque 作业,因为 monit 是一个非常轻量级的守护进程,但最终还是选择了 GOD。我知道,我知道与 monit 相比,GOD 更耗资源,但就 resque 而言,我们发现它是一个很好的选择。

答案2

您可以按照不同于默认间隔的间隔检查特定服务......

服务轮询时间在 Monit 文档中。

您的 Resque 程序的一个示例是检查不同数量的循环:

check process resque with pidfile /var/run/resque.pid
   every 5 cycles

或者来自示例部分:

Some servers are slow starters, like for example Java based Application Servers. 
So if we want to keep the poll-cycle low (i.e. < 60 seconds) but allow some services to take its time to start, 
the every statement is handy:

 check process dynamo with pidfile /etc/dynamo.pid every 2 cycles
       start program = "/etc/init.d/dynamo start"
       stop program  = "/etc/init.d/dynamo stop"
       if failed port 8840 then alert

或者您可以利用 cron 风格的检查。

check process resque with pidfile /var/run/resque.pid
   every 10 * * * *

或者如果您遇到启动缓慢的情况,您可以在服务启动命令中延长超时时间:

check process apache with pidfile /var/run/httpd.pid
       start program = "/etc/init.d/httpd start" with timeout 90 seconds

答案3

您还可以检查某件事是否连续 X 次失败:

 if failed 
    port 80 
    for 10 cycles 
 then alert

或者在 Y 次民意调查中 X 次:

 if failed 
    port 80
    for 3 times within 5 cycles 
 then alert

或两者:

 check filesystem rootfs with path /dev/hda1
  if space usage > 80% for 5 times within 15 cycles then alert
  if space usage > 90% for 5 cycles then exec '/try/to/free/the/space'

从这里

答案4

Monit 的当前版本(5.16)支持启动脚本的超时,语法如下:

 <START | STOP | RESTART> [PROGRAM] = "program"
    [[AS] UID <number | string>]
    [[AS] GID <number | string>]
    [[WITH] TIMEOUT <number> SECOND(S)]

文档状态:

在进行进程检查的情况下,Monit 将等待最多 30 秒以完成启动/停止操作,然后放弃并报告错误。您可以使用 TIMEOUT 选项覆盖此超时。

这就是“超时”值的作用。

相关内容