我在看邮件列表经理对monit的同情。正在运行的渐近实例由用于列表管理的不同任务的多个进程(例如,归档电子邮件的单独进程)组成,但所有进程都是使用单个init脚本启动/停止的。
最优情况下,monit应该在任何服务发生故障时提醒我,然后重新启动渐近,但只重新启动一次。第一个解决方案如下:
check process sympa
with pidfile /var/run/sympa/sympa.pid
start program = "/etc/init.d/sympa start"
stop program = "/etc/init.d/sympa stop"
check process sympa_bounced
with pidfile /var/run/sympa/bounced.pid
start program = "/etc/init.d/sympa start"
stop program = "/etc/init.d/sympa stop"
check process sympa_bulk
with pidfile /var/run/sympa/bulk.pid
start program = "/etc/init.d/sympa start"
stop program = "/etc/init.d/sympa stop"但是,如果我手动停止渐近,init脚本将被多次执行,对于我定义的每个服务(因为每个服务都失败了),执行一次。
我的第二种方法是定义依赖项,并仅在任何子服务失败时发出警告:
check process sympa
with pidfile /var/run/sympa/sympa.pid
start program = "/etc/init.d/sympa start"
stop program = "/etc/init.d/sympa stop"
depends on sympa_bounced, sympa_bulk
check process sympa_bounced
with pidfile /var/run/sympa/bounced.pid
if does not exist then alert
check process sympa_bulk
with pidfile /var/run/sympa/bulk.pid
if does not exist then alert但是,由于子服务没有重新启动,主服务也不会重新启动。因此,我想我可以通过将start/stop设置为/bin/true来“伪造”重新启动:
check process sympa
with pidfile /var/run/sympa/sympa.pid
start program = "/etc/init.d/sympa start"
stop program = "/etc/init.d/sympa stop"
depends on sympa_bounced, sympa_bulk
check process sympa_bounced
with pidfile /var/run/sympa/bounced.pid
start program = "/bin/true"
stop program = "/bin/true"
check process sympa_bulk
with pidfile /var/run/sympa/bulk.pid
start program = "/bin/true"
stop program = "/bin/true"这也不起作用,因为如果sympa_bulk失败,那么在重新启动渐近服务之前,PID文件将不会创建,并且在sympa_bulk再次运行之前也不会发生。
是否有一种方法可以监视这样的服务,获取所有子服务的警报消息,但是只重新启动服务一次,即使所有的子服务一次都失败了?
发布于 2015-01-26 14:19:05
您应该能够使用depends绕过它。
所以就像
check process sympa_bulk
with pidfile /var/run/sympa/bulk.pid
depends on sympa
start program = "/bin/true"
stop program = "/bin/true"https://serverfault.com/questions/662422
复制相似问题