我有一个通过通常的init.d / service脚本运行的守护进程。
我有monit运行,确保这些守护进程在崩溃时重新启动。
我有一个请求'service foo stop'应该停止deamon,并且因为它被明确停止,而不是崩溃,monit不应该重启它。我如何用monit实现这个目标?
我可以让服务脚本的stop()例程调用'monit unmonitor',但这似乎是循环和错误的。
谢谢, 戴夫
答案 0 :(得分:23)
我认为您应该使用monit stop foo
代替service foo stop
。这样Monit就知道服务没有崩溃 - 并且不会重新启动它。
答案 1 :(得分:4)
有一个MODE
参数:
Monit支持每项服务三种监控模式:主动,被动和手动。
语法:
MODE 在活动模式(默认)下,Monit将主动监控服务,并在出现问题时发出警报和/或重新启动服务。
在被动模式下,Monit将被动监控服务并发出警报,但不会尝试通过执行启动,停止或重启来解决问题。
在手动模式下,只有通过Monit
启动服务时,Monit才会进入活动模式
从这里开始:https://mmonit.com/monit/documentation/monit.html#SERVICE-MONITORING-MODE
这样,如果您通过runit或upstart管理服务,并且只想将monit用于警报和仪表板,您只需将所有此类服务mode
设置为passive
。
例如:
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
如果你需要在线启用/禁用,但不是永久启用 - 请参考其他人的答案,他们没问题。
答案 2 :(得分:1)
模型是: Monit由init.d作为服务运行,因此由init.d控制(停止/启动/重启)。 (其他人,如果我错了请取悦我)。 需要监控的应用程序由monit处理。
因此,应仅控制这些应用程序,即通过monit停止/启动/重启。 monit