Monitoring
Monit 沒有重新啟動程序
我必須
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
)。