如何防止 monit 守護程式停止?

如何防止 monit 守護程式停止?

我使用 monit 來確保一切正常運行,但 monit 守護程式也被停止。

我不知道這是怎麼回事,以及如何防止 monit 守護程式停止?

答案1

在 Ubuntu 9.10 上,/etc/inittab不存在,因為Ubuntu使用暴發戶代替/sbin/初始化。因此,為了實現與上面答案#1相同的效果,我們需要一個新貴腳本:

# 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:重生:/usr/local/bin/daemon

然後使用以下命令重新啟動 init:

初始化q

現在,只要你的守護進程死亡,它就會自動“重生”

編輯:我不熟悉 Monit,但我碰巧查看了他們的常見問題頁面,他們專門為 monit 詳細說明了這一點。

答案3

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

Q:如何從 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 停止工作而守護程序仍然存在,因此永遠不會觸發重生。

此時,可以設定另一層監控,向您發送電子郵件,警告您監控狀態不可用,然後修復問題。

相關內容