2012-05-18 31 views
5

我應該如何編寫daemontools監督腳本?如何使用daemontools監督Web服務器?

我已經開始使用D. J. Bernsteins'的daemontools保持運行一些程序和工作正常。但是現在我需要監視這些進程中的一些附加條件,並且我沒有找到有關如何執行此操作的詳細信息。

我的情況是,我有一個web應用程序運行的一些程序(菲羅Smalltalk的虛擬機),他們響應HTTP,每個人在自己的端口(這是對的LOADBALANCE)。我想以某種方式ping那些以驗證他們不僅運行,而且響應http請求。如果他們沒有以特定的方式迴應超過30秒的請求,那麼他們應該被視爲崩潰並簡單地重新啓動。

這甚至可能與daemontools的?如果是這樣,我該如何編寫這個腳本,我應該把它放在哪裏?或在哪裏的文件?

回答

6

最簡單的解決方案是創建另一個daemontool任務與休眠30秒,然後該服務的存在測試(使用wget或捲曲例如)的腳本。如果服務沒有及時響應,您可以重新啓動服務(svc -t yourapp)和/或發送通知。新服務的運行腳本可能看起來像這樣簡單:

#!/bin/sh 
sleep 30 
if ! wget --quiet --timeout=5 --delete-after "http://yourapp.com/" ; then 
    svc -t /etc/service/yourapp 
fi 

,我也做了與像Munin工具很好的經驗。同樣,您需要提供一個腳本來提供有關圖像狀態的信息。如果您使用REST服務設置圖像,您甚至可以提供真正有趣的指標,例如活動會話,非活動會話,gc參數,內存消耗,數據庫統計數據......隨後,該工具會繪製漂亮的圖形,並允許您指定邊界當事情表現糟糕時得到通知。

+0

感謝名單。但是主管本身沒有辦法做到這一點? – pauel

+0

是的,請參閱我答案的第一段。 –

+0

是的,我明白了。這只是我認爲運行守護進程的主管可以以任何方式做到這一點。反正你的解決方案可以幫助我很多。非常感謝 – pauel

3

要檢測的服務響應,你可以使用捲曲(一個非常適合HTTP和命令行/ shell腳本)

curl --connect-timeout 10 http://8.8.8.8 
curl: (28) connect() timed out! 

,你可以寫更復雜的東西,比如檢查響應是200(OK)等