2011-09-15 78 views
10

我有一個通過通常的init.d /服務腳本運行的守護進程。Monit - 停止服務並停留?

我有監視器,確保這些守護程序在發生崩潰時重新啓動。

我有一個請求,'服務foo停止'應該停止deamon,並且因爲它被明確地停止,而不是崩潰,monit不應該重新啓動它。我如何才能用monit來實現這一點?

我可以讓服務腳本的stop()例程調用'monit unmonitor',但這似乎是循環和錯誤的。

謝謝, 戴夫

回答

23

我認爲你應該使用monit stop foo而不是service foo stop。這樣Monit意識到該服務沒有崩潰 - 並且不會重新啓動它。

+1

這應該被接受爲答案。 – brupm

1

該模型是: Monit作爲init.d服務運行,因此受init.d控制(停止/啓動/重新啓動)。 (其他人,如果我錯了,請給我)。 需要監視的應用程序由monit處理。

因此,這種應用只能通過監控來控制,即停止/啓動/重啓。 monit的

2

有一個MODE PARAM爲:

monit的支持每個服務3種監測模式:主動的,被動和手冊。

語法:

模式 在主動模式(默認),將monit的積極主動監控服務,並在出現問題時發出警報和/或重新啓動該服務。

在被動模式下,Monit將被動地監控服務並引發警報,但不會嘗試通過執行啓動,停止或重新啓動來解決問題。

在手動模式下,monit的將進入只有一個服務是通過monit的

開始

從這裏活躍的模式:https://mmonit.com/monit/documentation/monit.html#SERVICE-MONITORING-MODE

如果您管理通過runit或暴發戶的服務,只是想用這種方式您只需爲所有此類服務設置警報和儀表板即可使用modepassive

例如:

check process heka with pidfile /etc/sv/myservice/supervise/pid 
    start program = "/usr/bin/sv start myservice" 
    stop program = "/usr/bin/sv stop myservice" 
    mode passive 

如果需要啓用/禁用網絡,但並不是永久 - 請參考別人的答案,他們都很好。