Monitoring

Monit 沒有重新啟動程序

  • January 22, 2014

我必須monit監控一個程序,但它沒有意識到它已經關閉。我的監控配置是這樣的:

check process xxx with pidfile /var/run/xxx.pid
group yyy
start program = "/etc/init.d/xxx start"
stop program = "/etc/init.d/xxx stop"
if failed host 127.0.0.1 port 9999  then restart
if 5 restarts within 5 cycles then timeout

問題是即使我的程序崩潰了,PID 文件仍然存在。所以…PID 存在,但 localhost 中的埠 9999 應該失敗。那麼……是否預計 monit 不會重新啟動此過程?應該確定刪除pid文件嗎?不能做那種OR

提前致謝,

如果我錯了,請糾正我:

  • 如果程序崩潰,PID 文件將保留但埠 9999 已關閉
  • 如果程序完全停止,則刪除 PID 文件並關閉埠 9999

常見的行為是關於埠 9999。你可以使用類似這樣的東西來監控它:

check host 127.0.0.1 with address 127.0.0.1
 start program = "/etc/init.d/xxx restart"
 stop program = "/etc/init.d/xxx stop"
 if failed port 9999 then restart

以上應該足以涵蓋所有情況,但您可以將其作為附加聲明添加到現有聲明中(這將是OR您正在談論的那種)。

查看有關檢查主機的文件

PS: 我認為,關於文件(關於 Apache 的範例),如果埠 9999 無法訪問,即使 PID 文件仍然存在,您擁有的配置應該能夠重新啟動您的程序。我的猜測是埠 9999 沒有關閉,或者埠 9999 沒有在 127.0.0.1 上監聽(請檢查所有這些使用netstat)。

所以,在你的配置中,嘗試用這個替換埠監視器行:

if failed port 9999 then restart(刪除host 127.0.0.1)。

引用自:https://serverfault.com/questions/569084