我使用 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 停止工作而守護程序仍然存在,因此永遠不會觸發重生。
此時,可以設定另一層監控,向您發送電子郵件,警告您監控狀態不可用,然後修復問題。