Monit 工具實戰和源碼介紹

簡介

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(集中管理)是基於其的收費企業版
image.png網絡

安裝

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 # 查看版本

配置文件樣例

  • 監控系統

image.png

  • 監控進程

image.png

  • 遠程服務端口撥測

image.png

頁面

監控對象
image.png
對象的詳細信息以及告警策略
image.png

代碼結構

代碼中主要的各個模塊
image.png

主要數據結構

image.png

全部監控對象以service進行組織,command 表示針對該service的操做, event表示在該對象上發生的事件(例如告警事件),info爲不一樣監控對象類型的檢驗(validate)結果.

Service(監控對象)有如下幾種類型,同時列舉出了每種對象所監控的內容:

  • 文件系統:容量,uid/gid, 權限,inode, 讀寫速率
  • 目錄:  權限,uid/gid
  • 進程: 時間,cpu, mem, 子進程,磁盤讀寫等
  • 主機:  端口撥測
  • 系統:  系統的基本指標
  • Fifo:待補充 
  • 程序:  腳本返回狀態
  • 網絡:  link up/down, link capacity changes, bindwidth等

image.png

Runtime是運行時相關的各項配置參數,環境變量,控制參數等,包含如下內容:

  • 狀態文件:id,pid,狀態文件(state),control(配置文件),日誌
  • 運行狀態:運行中,中止,守護進程等等
  • 檢查週期:檢查週期,初次啓動時的延遲時間
  • 系統基本:基礎系統信息
  • HTTP API:HTTP設置

還有諸如"環境變量","郵箱列表"等其餘衆多運行時信息

Service info 是每個檢查對象的當前檢驗週期的狀態

根據service不一樣的種類,又有不一樣的結構;
以進程(process)監控舉例,包括如下:

  • 進程的各項id
  • 內存
  • cpu
  • uptime 
  • I/O
  • 等等

image.png

亮點

其短小精幹的指標採集可以知足單機須要,以外,最重要的亮點在於其在監控的同時可以根據條件配置相應的操做(Aciton),
例如:
監控到某個服務在5個檢驗週期(cycle)掛掉,執行重啓操做.

下圖爲另外一個例子,在檢測到某日誌文件大於100M時,執行清理腳本.

image.png

同時,你們已經發現,爲啥其配置文件還帶if斷定的.這也正式其神奇之處,整個配置文件通過詞法分析和語法分析這種黑科技,因此實現了自定義的語法.

對應的文件是:
l.l 詞法分析   使用Flex進行處理
p.y  語法分析 使用Yacc進行處理

例如如下代碼中,包括了檢測進程(process)的配置項解析

image.png

  • 待補充
相關文章
相關標籤/搜索