簡體   English   中英

使用supervisord比monit有什么好處

[英]what is the advantage of using supervisord over monit

我們有一個自定義設置,它有幾個守護進程(Web應用程序+后台任務)運行。 我正在尋找使用一種服務,它可以幫助我們監視這些守護進程,並在資源消耗超過一個級別時重新啟動它們。

我會欣賞任何關於何時一個人比另一個更好的見解。 據我所知,monit會在supervisord啟動子流程時旋轉一個新進程。 這種方法的優點和缺點是什么?

我也將使用暴發來監控monit或supervisord本身。 webapp部署將使用capistrano完成。

謝謝

我沒有使用monit但是有一些重要的缺陷與supervisord。

  1. 程序應該在前台運行

這意味着你不能只執行/etc/init.d/apache2 start。 大多數情況下,您只需編寫一個內容,例如“source / etc / apache2 / envvars && exec / usr / sbin / apache2 -DFOREGROUND”,但有時您需要自己的包裝器腳本。 包裝器腳本的問題在於您最終得到兩個進程,父進程和子進程。 看下一個缺陷......

  1. supervisord不管理子進程

如果你的程序啟動子進程,supervisord就不會檢測到這一點。 如果父進程死亡(或者如果它使用supervisorctl重新啟動)子進程繼續運行,但將由init進程“采用”並保持運行。 這可能會阻止將來對程序的調用運行或消耗額外的資源。 最近的配置選項stopasgroup和killasgroup應該解決這個問題,但對我來說不起作用。

  1. supervisord沒有依賴管理 - 見#122

我最近用qlproxy設置了squid。 qlproxyd需要先啟動,否則squid會失敗。 盡管這兩個程序都是用supervisord管理的,但是沒有辦法確保這一點。 我需要為squid編寫一個啟動腳本,使其等待qlproxyd進程。 添加啟動腳本導致了漏洞2中描述的孤立進程問題

  1. supervisord不允許您控制startretries之間的延遲

有時當進程無法啟動(或崩潰)時,這是因為它無法訪問其他資源,可能是由於網絡抖動。 可以將主管設置為多次重啟該過程。 在重新啟動之間,進程將進入“BACKOFF”狀態,但是沒有文檔或控制退避的持續時間。

在其國防主管確實80%的時間滿足我們的需求。 配置合理,文檔非常好。

如果你想要額外監控資源,你應該接受monit。 除了檢查進程是否正在運行(可用性)之外,monit還可以執行一些資源使用(性能,容量使用),負載級別甚至基本安全檢查(bianry文件的md5sum,配置文件等)的檢查。 它有一個基於規則的配置,很容易理解。 還有很多可以使用的配置: http//mmonit.com/wiki/Monit/ConfigurationExamples

Monit需要進程來創建PID文件,這可能是一個缺陷,因為如果一個進程沒有創建pid文件,你必須創建一些包裝器。 請參閱http://mmonit.com/wiki/Monit/FAQ#pidfile

另一方面,Supervisord更多地受制於一個過程,它自己產生它。 它不能將任何基於資源的檢查作為監控。 它有一個很好的CLI servicectl和Web GUI。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM