15

我有一个通过通常的 init.d/service 脚本运行的守护进程。

我正在运行监视器,以确保这些守护程序在崩溃时重新启动。

我有一个请求,'service foo stop' 应该停止守护进程,并且因为它被显式停止,而不是崩溃,monit 不应该重新启动它。我怎样才能用 monit 做到这一点?

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

谢谢,戴夫

4

4 回答 4

28

我认为你应该使用monit stop foo而不是service foo stop. 这样,Monit 就知道服务没有崩溃——也不会重新启动它。

于 2011-11-21T01:11:50.090 回答
7

有一个MODE参数:

Monit 支持每种服务的三种监控模式:主动、被动和手动。

句法:

模式 在活动模式(默认)下,Monit 将主动监控服务,并在出现问题时发出警报和/或重新启动服务。

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

在手动模式下,只有通过 Monit 启动服务时,Monit 才会进入活动模式

从这里:https ://mmonit.com/monit/documentation/monit.html#SERVICE-MONITORING-MODE

这样,如果您通过 runit 或 upstart 管理服务,并且只想将 monit 用于警报和仪表板,您只需将所有此类服务设置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

如果您需要在线启用/禁用该功能但不是永久 - 请参考其他人的答案,他们很好。

于 2016-02-08T11:35:47.907 回答
2

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

因此,此类应用程序应仅通过监控进行控制,即停止/启动/重新启动。监控

于 2013-10-17T02:20:27.177 回答
0
SET ONREBOOT LASTSTATE

根据:https ://mmonit.com/monit/documentation/monit.html#SYSTEM-REBOOT-AND-SERVICE-STARTUP

于 2021-12-01T14:40:48.853 回答