我有一个通过通常的 init.d/service 脚本运行的守护进程。
我正在运行监视器,以确保这些守护程序在崩溃时重新启动。
我有一个请求,'service foo stop' 应该停止守护进程,并且因为它被显式停止,而不是崩溃,monit 不应该重新启动它。我怎样才能用 monit 做到这一点?
我可以让服务脚本的 stop() 例程调用“monit unmonitor”,但这似乎是循环和错误的。
谢谢,戴夫
我有一个通过通常的 init.d/service 脚本运行的守护进程。
我正在运行监视器,以确保这些守护程序在崩溃时重新启动。
我有一个请求,'service foo stop' 应该停止守护进程,并且因为它被显式停止,而不是崩溃,monit 不应该重新启动它。我怎样才能用 monit 做到这一点?
我可以让服务脚本的 stop() 例程调用“monit unmonitor”,但这似乎是循环和错误的。
谢谢,戴夫
我认为你应该使用monit stop foo
而不是service foo stop
. 这样,Monit 就知道服务没有崩溃——也不会重新启动它。
有一个MODE
参数:
Monit 支持每种服务的三种监控模式:主动、被动和手动。
句法:
模式 在活动模式(默认)下,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
如果您需要在线启用/禁用该功能但不是永久 - 请参考其他人的答案,他们很好。
该模型是:Monit 由 init.d 作为服务运行,因此由 init.d 控制(停止/启动/重新启动)。(其他,如果我错了,请告诉我)。需要监控的应用程序由monit处理。
因此,此类应用程序应仅通过监控进行控制,即停止/启动/重新启动。监控
SET ONREBOOT LASTSTATE
根据:https ://mmonit.com/monit/documentation/monit.html#SYSTEM-REBOOT-AND-SERVICE-STARTUP