優勢: html
1.功能強大python
2.使用方便linux
缺點:spring
1.體系龐大,很是複雜shell
2.與操做系統的其餘部分強耦合網絡
優勢:運維
1.進程守護工具
2.純淨的進程狀態spa
3.可靠的日誌記錄工具操作系統
4.系統快速啓停
5.可移植、封裝友好、輕量
缺點:
1.配置相對繁瑣
2.國內使用的人少比較冷門,網上相關介紹很少
優勢:
1.易於安裝、輕量級(500KB)、高可用、依賴少、安裝方便,配置簡單易讀
2.基本功能完善,支持系統,文件,進程(帶pid),文件系統,目錄,設備,遠程主機,網絡,用戶自定義shell擴展9種類型的監控,郵件報警
3.可監控前臺進程和非前臺進程
4.被監控的進程能夠設置依賴,控制啓動順序
5.Web UI
缺點:
1.經過pidfile或進程名匹配進行監控,不然無效
2.對進程監控的狀態告知有延時(輪訓)
優勢:
1.使用簡單方便,統一配置管理,功能豐富,社區活躍,使用者多
2.對被監控進程的狀態獲取迅速且精確——經過子進程管理(實時)
3.Web UI
缺點:
1.服務必須從supervisor啓動且非守護方式(被監控進程必須運行在前臺)
2.沒法控制服務啓動前後順序
3.沒法管理被監控進程建立的子進程
部分特性對比:
特性 |
systemd |
runit |
monit |
supervisord |
大小 |
重量級 |
輕量級 |
輕量級 |
輕量級 |
部署配置複雜性 |
複雜(系統級) |
複雜 |
簡單 |
簡單 |
社區活躍度 |
活躍 |
不活躍 |
活躍 |
很是活躍 |
可視化管理Web UI |
不支持 |
不支持 |
支持 |
支持 |
日誌記錄 |
欠缺 |
完善 |
完善 |
完善 |
由上特性對比排除使用systemd、runit,下面對monit和supervisord詳細對比
特性 |
Monit |
Supervisord |
編寫語言 |
C |
Python |
缺點 |
|
|
優勢 |
|
|
以上工具均支持進程守護,便可根據配置監控進程意外宕掉時自動重啓守護,各方面對比並結合如今應用場景,最終選用supervisord。
至於spring自帶健康檢查接口防止進程假死的守護有兩種方案,方案一是運維本身寫腳本目前項鳴正是使用的此方案;方案二是使用supervisord自帶特性實現,目前調研結果是eventlistener或許能實現(待驗證)。
參考:
Monit官方文檔:https://mmonit.com/monit/documentation/monit.html#
Supervisor官方文檔:http://www.supervisord.org/configuration.html
http://www.ruanyifeng.com/blog/2016/02/linux-daemon.html