2011-09-15 47 views
10

我有一个通过通常的init.d /服务脚本运行的守护进程。Monit - 停止服务并停留?

我有监视器,确保这些守护程序在发生崩溃时重新启动。

我有一个请求,'服务foo停止'应该停止deamon,并且因为它被明确地停止,而不是崩溃,monit不应该重新启动它。我如何才能用monit来实现这一点?

我可以让服务脚本的stop()例程调用'monit unmonitor',但这似乎是循环和错误的。

谢谢, 戴夫

回答

23

我认为你应该使用monit stop foo而不是service foo stop。这样Monit意识到该服务没有崩溃 - 并且不会重新启动它。

+1

这应该被接受为答案。 – brupm

1

该模型是: Monit作为init.d服务运行,因此受init.d控制(停止/启动/重新启动)。 (其他人,如果我错了,请给我)。 需要监视的应用程序由monit处理。

因此,这种应用只能通过监控来控制,即停止/启动/重启。 monit的

2

有一个MODE PARAM为:

monit的支持每个服务3种监测模式:主动的,被动和手册。

语法:

模式 在主动模式(默认),将monit的积极主动监控服务,并在出现问题时发出警报和/或重新启动该服务。

在被动模式下,Monit将被动地监控服务并引发警报,但不会尝试通过执行启动,停止或重新启动来解决问题。

在手动模式下,monit的将进入只有一个服务是通过monit的

开始

从这里活跃的模式:https://mmonit.com/monit/documentation/monit.html#SERVICE-MONITORING-MODE

如果您管理通过runit或暴发户的服务,只是想用这种方式您只需为所有此类服务设置警报和仪表板即可使用modepassive

例如:

check process heka with pidfile /etc/sv/myservice/supervise/pid 
    start program = "/usr/bin/sv start myservice" 
    stop program = "/usr/bin/sv stop myservice" 
    mode passive 

如果需要启用/禁用网络,但并不是永久 - 请参考别人的答案,他们都很好。