如何防止 monit 守护进程停止?

如何防止 monit 守护进程停止?

我使用 monit 来确保一切运行正常,但 monit 守护进程也停止了。

我不知道这是怎么回事,以及如何防止 monit 守护进程停止?

答案1

在 Ubuntu 9.10 上,/etc/inittab不存在,因为 Ubuntu 使用暴发户代替/sbin/init。因此,为了实现与上面答案 #1 相同的目的,我们需要一个 upstart 脚本:

# This is an event.d (upstart) script to keep monit running
# To install disable the old way of doing things:
#
#   /etc/init.d/monit stop && update-rc.d -f monit remove
#
# then put this script here: /etc/init/monit.conf
#
# You can manually start and stop monit like this:
# 
# start monit
# stop monit
#
# Karim Ratib (http://thereisamoduleforthat.com)
# 
# Based on monit.upstart (https://code.google.com/p/monit/source/browse/trunk/contrib/monit.upstart?r=132)
# by Michael Hale (http://halethegeek.com)

start on runlevel [2345]
stop on runlevel [06]

exec /usr/sbin/monit -Ic /etc/monit/monitrc
respawn

答案2

对于必须运行并且如果发生故障必须重新启动的程序,我能想到的最佳选择是在 init 之外运行该进程。

您可以在/etc/inittab

名称:234:respawn:/usr/local/bin/daemon

然后使用以下命令重新启动 init:

初始化

现在,只要你的守护进程死亡,它就会自动“重生”

编辑:我不熟悉 Monit,但我碰巧检查了他们的常见问题解答页面,并且他们专门为 monit 详细说明了这一点。

答案3

摘自 monit 文档:http://mmonit.com/wiki/Monit/FAQ#init

问:如何从 init 运行 monit,以便在 monit 意外死亡的情况下可以重新启动它?

答:建议您从 init 运行 Monit 时使用 Monit 版本 5 或更高版本。

使用 monits 配置文件中的“set init”语句,或使用命令行中的 -I 选项。以下是 monit 的示例 /etc/inittab 条目:

 # Run monit in standard runlevels
 mo:2345:respawn:/usr/local/sbin/monit -Ic /etc/monitrc

修改 inits 配置文件后,您可以运行以下命令重新检查运行级别并启动 monit:

 telinit q

您应该考虑在您的场景中添加另一层监控,例如 Nagios/Icinga、Zabix 或 Sensu 来检查监控状态。

尽管 monit 死机后可以重生,但在某些情况下 monit 会停止工作而守护进程仍然存在,因此永远不会触发重生。

此时,可以配置另一层监控,向您发送电子邮件,警告您监控状态不可用,然后您解决问题。

相关内容