【監控體系】最全面系統的Zabbix講解 | 含原始碼&監控型別整理
主講人:王鴻傑,雲智慧/企業效能部/架構師
講師簡介:雲智慧架構師,PHP/PECL 開發組成員,PECL/SeasClick、PECL/SeasLog Maintainer。6 年研發經驗,2018 年加入透視寶團隊,致力於 APM 產品的架構與研發,專注於服務的效能分析與優化。2021 年加入效能工程團隊,為高效而生,立足於使用最少的資源來解決最大的問題,研究各種不同的 bot 技術,讓整個團隊更高效運轉。
公司簡介:雲智慧集團成立於2009年,是國內領先的全棧智慧業務運維解決方案服務商。經過多年自主研發,公司形成了從IT運維、電力運維到IoT運維的產業佈局,覆蓋ITOM、ITOA、ITSM、DevOps以及IoT幾大領域,為金融、政府、運營商、能源、交通、製造等上百家行業的客戶,提供了數字化運維體系建設及全生命週期運維管理解決方案。雲智慧秉承Make Digital Online的使命,致力於通過先進的產品技術,為企業數字化轉型和提升IT運營效率持續賦能。
從本篇內容你能得到:
1. Zabbix是什麼、能做到什麼
2. Zabbix元件詳解、架構和處理工作流程
3. Zabbix各監控項型別的採集實現(SNMP、ICMP、Ping、簡單檢查等)
4. Zabbix 模板組成結構與實現
5. Zabbix Agent原始碼結構與實現分析
6. Zabbix 自動發現邏輯的原始碼結構與實現詳解
全棧監控是什麼?
監控一切需要監控的東西,只要能夠想到,能夠用命令實現的都能用來監控。
基礎層:主要偏硬體,監控主機和底層資源。比如cpu、 記憶體、網路吞吐、硬碟I/O、硬碟使用等
中間層:包括nginx、Redis、MQ、MySQL、 Tomcat等
應用層: HTTP訪問的吞吐量、響應時間、 返回碼、呼叫鏈路分析、效能瓶頸, 還包括使用者端的監控等
日誌:syslog、nginx log、mysql log等
為什麼使用Zabbix?
目前開源的解決方案中,Zabbix和Prometheus是使用較多的兩個方案,這兩個方案的區別和優勢是什麼?
對於偏傳統的行業,雲環境較少的場景下,是比較適合於Zabbix的使用,當然Prometheus是未來發展的方向。
Zabbix是什麼?
Zabbix原始碼主要組成:
frontends:php,主要負責前端的業務操作
Zabbix agent:採集資料
Zabbx server:同步配置,處理資料,分析告警等。
Zabbix處理流程:
主要由四部分組成:
Portal-DB-Server-Agent
詳細的工作流程如下:
詳細流程可檢視下圖:
Zabbix是怎麼做的?
Zabbix Process
-
當新增(自動發現)一個 host,並且為 host 新增對應的模板的時候,Portal 會解析出來對應的 item, preprocess,trigger 然後放在對應的 Db 表裡面。
-
Server 的 dbconfig_thread 會從 Db 拿到對應的資料放在共享記憶體中,然後poller_thread 程序讀取到對應的 items,開啟與 Agent 建立連線,遍歷 items 從 Agent(snmp,簡單檢查 等) 獲取到對應的指標資料
-
然後將 指標資料給 preprocessing_manager_thread 程序,preprocessing_manager_thread 程序會安排對應的preprocessing_worker 程序對資料進行 preprocess
-
最後由 dbsyncer_thread 程序將資料放入 Db 中,Portal 介面從 Db 拿到對應的資料資訊繪製和顯示
-
dbsyncer_thread 同步資料到DB,遍歷資料 並計算 expression 表示式計算指標,最後觸發 escalator_thread 和 alerter_thread 做出相應的動作。
-
對於可監控指標,Agent 自帶多種可監控指標 cmd,Agent 只能監控內建的監控指標,可以通過外掛拓展 可監控指標。
Zabbix Server
-
dbconfig_thread: 配置同步到共享記憶體,保證所有程序都可讀
-
poller_thread: 主動監控,解析 items 呼叫 Agent
-
*trapper_thread: 收集 Agent 上報上來的資料
-
pinger_thread: 定期 ping 所有監控主機,簡單檢查 ICMP
-
*alerter_thread: 告警訊息處理程序從 IPC 讀出需要發動的訊息,發出告警
-
housekeeper_thread: 管家程序,過期資料清理
-
discoverer_thread: 主機、服務的自動發現
-
escalator_thread: 根據觸發器的值判斷是否告警,具體執行什麼動作
-
dbsyncer_thread:同步資料到 db,並計算觸發器值也同步到db
-
selfmon_thread: 自監控
-
preprocessing_worker_thread: 資料預處理程序,資料從 poller 和 trapper 程序過來
Zabbix Agent
-
collector_thread 週期採集基礎資訊,主要是記憶體和 CPU,儲存於共享記憶體中
-
listener_thread 用於接收 server 或者 proxy 分配的的採集任務,被動采采集
-
active_checks_thread 主動採集上報
指標型別
按程序(處理方式)劃分指標型別
Poller 程序(被動)
-
1. snmp|SNMP代理檢查
-
simple_checks|簡單檢查(應用層狀態檢查)
-
calculated|計算監控項
-
internal|Zabbix內部檢查
-
ssh_checks|SSH檢查
-
telnet_checks|Telnet檢查
-
external|外部檢查
-
aggregate|彙總檢查
-
odbc_checks|ODBC監控
httppoller 程序(被動)
-
http|HTTP 檢查
ipmi_poller_thread 程序(被動)
-
ipmi|IPMI檢查
icmp pinger 程序(被動)
-
simple_checks|簡單檢查(icmp 檢查)
trapper 程序(主動)
-
trapper|捕捉器監控項
-
log_items|日誌檔案監控
-
snmptrap|SNMP traps
preprocess 程序(Follow me)
-
dependent_items|相關專案(從屬監控項)
按客戶端依賴劃分指標型別
無依賴
-
snmp|SNMP代理檢查
-
ipmi|IPMI檢查
-
simple_checks|簡單檢查
-
external|外部檢查
-
odbc_checks|ODBC監控
依賴其他監控項
-
calculated|計算監控項
-
aggregate|彙總檢查
依賴第三方
-
zabbix_agent|Zabbix代理檢查 (Agent)
-
snmptrap|SNMP traps (snmptrap)
-
log_items|日誌檔案監控 (Agent)
-
ssh_checks|SSH檢查 (ssh 祕鑰或密碼)
-
telnet_checks|Telnet檢查 (Telnet Server和 Telnet 密碼)
-
trapper|捕捉器監控項 (Zabbix Sender)
-
http|HTTP 檢查 (http 介面)
IDEA
被動監控對 Zabbix Server 來說會有大的壓力
從監控型別來看,Zabbix 更多的是被動監控,主動監控只有 Agent Active、SnmpTrap,Sender,但是由於 Zabbix Agent 的強大,很多場景下主動監控的指標覆蓋度完全能跟被動監控硬懟。
所以要根據具體監控場景,主動和被動互相搭配,耗時的指標更加傾向於主動監控。
Zabbix監控項型別梳理
附件:
請您新增:xiaoyuerwise,備註“附件”獲取,或從本文底部掃碼獲取。
Zabbix的自動發現
自動發現是伴隨著指標監控來的,當發現能有采集到預設的指標時,這臺主機就會被標記為可用,然後觸發預設的Action,通知或者自動新增監控模板等。
自動發現分類
-
簡單檢查類
-
Agent 型別
-
snmp 型別
-
ICMP (ping) 型別
自動發現流程
-
配置 IP 段
-
配置自動發現指標
-
配置發現動作 Action
-
發現主機後新增 event
-
escalator_thread 程序處理對應的 event
Zabbix的模板結構
模板結構
從屬指標
計算指標
Agent原始碼
附件:
請您新增:xiaoyuerwise,備註“附件”獲取,或從本文底部掃碼獲取。
寫在最後
近年來,在AIOps領域極速發展的背景下,IT工具、平臺能力、解決方案、AI場景及可用資料集的迫切需求在各行業迸發。基於此,雲智慧在2021年8月釋出了AIOps社群,旨在樹起一面開源旗幟,為各行業客戶、使用者、研究者和開發者們構建活躍的使用者及開發者社群,共同貢獻及解決行業難題、促進該領域技術發展。
成立近半年,社群先後開源了資料視覺化編排平臺-FlyFish、運維管理平臺OMP、雲服務管理平臺-摩爾平臺、Hours演算法等產品。其中FlyFish斬獲中國開源雲聯盟2021優秀開源專案獎。OMP運維管理平臺入選2021 年度 OSC 中國開源專案「最受歡迎專案」榜單。並在業內首次開源了智慧運維開源資料集-GAIA資料集,填補了AIOps開源集資料領域的空白。
2021年11月,雲智慧正式成為中國開源雲聯盟成員單位,2022年1月,雲智慧入選SegmentFault 思否「2021 中國技術品牌影響力企業榜單」,這一切都代表著開發者和社群對我們的認可,這也更加堅定了雲智慧開源戰略的決心。
如果您對雲智慧AIOps感興趣,可以通過下方連結瞭解我們,也可以新增小助手微信,申請加入開發者交流群,可與大咖進行1V1交流!
雲智慧AIOps社群:http://www.cloudwise.ai/
Github地址: http://github.com/CloudWise-OpenSource/FlyFish
Gitee地址: http://gitee.com/CloudWise/fly-fish
- 你應該瞭解的 NLP發展新趨勢(實現方法總結)
- 揭祕 AIOps海量資料下,時序預測背後的原理
- FlyFish|前端資料視覺化開發避坑指南(一)
- FlyFish2.0版本後端原始碼學習筆記
- AIOps場景下,指標預測演算法基礎知識全面總結
- 根因分析思路與方法看這一篇就夠了!
- 智慧運維應用之道,告別企業數字化轉型危機
- 多場景下時序序列分類演算法基礎知識全面總結
- 多場景下時序序列分類演算法基礎知識全面總結
- 告警風暴來襲,智慧運維應如何化解?
- 智慧運維 VS 傳統運維|AIOps服務管理解決方案全面梳理
- 智慧運維(AIOps)實踐|日誌語義異常檢測全面解讀
- 數字化時代,企業運維面臨現狀及挑戰分析解讀
- 大咖實戰|Kubernetes自動伸縮實現指南分享
- 10分鐘學會如何在智慧運維中進行日誌分析
- 深度學習—人工智慧的第三次熱潮
- 結合機器學習的多指標異常檢測方法總結分析
- Android C/C 層hook和java層hook原理以及比較
- 分佈遷移下的深度學習時間序列異常檢測方法探究
- 快速瞭解日誌概貌,詳細解讀13種日誌模式解析演算法