monit是一個跨平臺的用來監控Unix/linux系統的工具。
主要針對於類Unix系統,好比Linux、BSD、OSX、Solaris等node
能夠監控的主要內容:
服務器進程狀態
HTTP/TCP狀態碼
服務器資源變化
文件系統變更linux
同時,能夠針對監控的對象,根據條件設置相應的操做。
例如設定郵件報警、重啓服務等等。nginx
Monit 易於安裝、輕量,但其功能強大。
是充分體現Unix思想的一個理想的監控+自動恢復的工具。
「do one thing and do it well」服務器
注意:Monit是一個開源工具(單機),M/Monit(集中管理)是基於其的收費企業版網絡
Linux的源現已經包括了Monit的包,直接使用包管理器安裝便可。數據結構
yum install monit 或 sudo apt-get install monit工具
源碼安裝:
https://bitbucket.org/tildesl...ui
./configure make make installspa
很是簡單,在此很少介紹3d
monit -t # 配置文件檢測 monit # 啓動monit daemon monit -c /var/monit/monitrc # 啓動monit daemon時指定配置文件 monit reload # 當更新了配置文件須要重載 monit status # 查看全部服務狀態 monit status nginx # 查看nginx服務狀態 monit stop all # 中止全部服務 monit stop nginx # 中止nginx服務 monit start all # 啓動全部服務 monit start nginx # 啓動nginx服務 monit -V # 查看版本
監控對象
對象的詳細信息以及告警策略
代碼中主要的各個模塊
全部監控對象以service進行組織,command 表示針對該service的操做, event表示在該對象上發生的事件(例如告警事件),info爲不一樣監控對象類型的檢驗(validate)結果.
Service(監控對象)有如下幾種類型,同時列舉出了每種對象所監控的內容:
Runtime是運行時相關的各項配置參數,環境變量,控制參數等,包含如下內容:
還有諸如"環境變量","郵箱列表"等其餘衆多運行時信息
Service info 是每個檢查對象的當前檢驗週期的狀態
根據service不一樣的種類,又有不一樣的結構;
以進程(process)監控舉例,包括如下:
其短小精幹的指標採集可以知足單機須要,以外,最重要的亮點在於其在監控的同時可以根據條件配置相應的操做(Aciton),
例如:
監控到某個服務在5個檢驗週期(cycle)掛掉,執行重啓操做.
下圖爲另外一個例子,在檢測到某日誌文件大於100M時,執行清理腳本.
同時,你們已經發現,爲啥其配置文件還帶if斷定的.這也正式其神奇之處,整個配置文件通過詞法分析和語法分析這種黑科技,因此實現了自定義的語法.
對應的文件是:
l.l 詞法分析 使用Flex進行處理
p.y 語法分析 使用Yacc進行處理
例如如下代碼中,包括了檢測進程(process)的配置項解析