linux進程守護調研

進程守護工具調研

調研目的

  1. 支持進程守護
  2. 針對健康檢查接口守護(防進程假死)

 

調研工具

  • system

             優勢:  html

                   1.功能強大python

                   2.使用方便linux

             缺點:spring

                   1.體系龐大,很是複雜shell

                   2.與操做系統的其餘部分強耦合網絡

  • runit

            優勢:運維

                   1.進程守護工具

                   2.純淨的進程狀態spa

                   3.可靠的日誌記錄工具操作系統

                   4.系統快速啓停

                   5.可移植、封裝友好、輕量

            缺點:

                   1.配置相對繁瑣

                   2.國內使用的人少比較冷門,網上相關介紹很少

  • monit(perl)

            優勢:

                    1.易於安裝、輕量級(500KB)、高可用、依賴少、安裝方便,配置簡單易讀

                    2.基本功能完善,支持系統,文件,進程(帶pid),文件系統,目錄,設備,遠程主機,網絡,用戶自定義shell擴展9種類型的監控,郵件報警

                    3.可監控前臺進程和非前臺進程

                    4.被監控的進程能夠設置依賴,控制啓動順序

                    5.Web UI

            缺點:

                    1.經過pidfile或進程名匹配進行監控,不然無效

                    2.對進程監控的狀態告知有延時(輪訓)

  • Supervisor(python)

            優勢:

                    1.使用簡單方便,統一配置管理,功能豐富,社區活躍,使用者多

                    2.對被監控進程的狀態獲取迅速且精確——經過子進程管理(實時)

                    3.Web UI

            缺點:

                    1.服務必須從supervisor啓動且非守護方式(被監控進程必須運行在前臺)

                    2.沒法控制服務啓動前後順序

                    3.沒法管理被監控進程建立的子進程

 

部分特性對比:

特性

systemd

runit

monit

supervisord

大小

重量級

輕量級

輕量級

輕量級

部署配置複雜性

複雜(系統級)

複雜

簡單

簡單

社區活躍度

活躍

不活躍

活躍

很是活躍

可視化管理Web UI

不支持

不支持

支持

支持

日誌記錄

欠缺

完善

完善

完善

 

由上特性對比排除使用systemd、runit,下面對monit和supervisord詳細對比

特性

Monit

Supervisord

編寫語言

C

Python

缺點

  1. 沒法監控沒有pid文件的進程,如shell腳本
  2. 對進程狀態感知有延時(輪訓方式)
  3. M/Monit收費
  1. 對運行在後臺的進程沒法監控
  2. 沒法管理被監控進程建立的子進程

優勢

  1. 可監控前臺和非前臺進程
  2. 可設置依賴,控制服務啓動順序
  3. 功能豐富,支持系統、進程、文件、網絡(TCP、UDP、HTTP、SMTP)等9種類型監控
  1. 對進程狀態感知實時
  2. 設置優先級控制進程啓動順序
  3. 豐富的功能配置文件支持(unix_hhtp_server、group、program、eventlistener等)

 

調研結果

以上工具均支持進程守護,便可根據配置監控進程意外宕掉時自動重啓守護,各方面對比並結合如今應用場景,最終選用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

         https://blog.csdn.net/u010039418/article/details/83784195

         https://www.cnblogs.com/alesic/p/9315867.html

相關文章
相關標籤/搜索