基于Zabbix的開源監(jiān)控探索與實踐
本文轉載自微信公眾號「匠心獨運維妙維效」,作者馬文杰。轉載本文請聯(lián)系匠心獨運維妙維效公眾號。
引言
隨著G行業(yè)務的高速發(fā)展,業(yè)務系統(tǒng)的規(guī)模日益增長,監(jiān)控管理的成本也隨之升高,現(xiàn)有的監(jiān)控手段已無法很好的滿足監(jiān)控管理的需求。因此G行啟動了ZABBIX開源監(jiān)控項目,通過該項目的建設工作,在節(jié)約監(jiān)控管理成本的同時,也完善了國產軟件和開源軟件的監(jiān)控手段,提升了G行的自動化監(jiān)控能力和自主可控能力。
一、ZABBIX開源監(jiān)控建設背景
不少行業(yè)和單位都使用商業(yè)監(jiān)控軟件實現(xiàn)本單位的信息系統(tǒng)的日常運行監(jiān)控,但商業(yè)監(jiān)控軟件在管理上存在較多痛點。
圖1 監(jiān)控管理的痛點
為了解決傳統(tǒng)監(jiān)控管理在日常運維中存在的痛點和問題,G行通過對數(shù)款開源監(jiān)控軟件的監(jiān)控能力、靈活性、兼容性以及易用性等多方面進行對比選型,最終選擇ZABBIX作為行內今后主要的監(jiān)控工具。ZABBIX是一款功能強大的開源監(jiān)控軟件,它操作簡單,適用于多種平臺,能夠支持虛擬化、云環(huán)境等多種場景的監(jiān)控,且提供開放的、通用的API接口,在各個行業(yè)都有廣泛的使用。
- 支持多平臺的企業(yè)級分布式開源監(jiān)控;
- 可實現(xiàn)復雜多條件告警;
- 提供多種API接口,支持二次開發(fā);
- 自動發(fā)現(xiàn)和低級別發(fā)現(xiàn)功能
- 有豐富的社區(qū)資源支持
圖2 ZABBIX支持多種監(jiān)控場景
二、G行ZABBIX開源監(jiān)控項目
經過前期的調研選型,確定選用ZABBIX作為行內主要監(jiān)控工具,并以開源軟件監(jiān)控、開發(fā)測試環(huán)境監(jiān)控為起點,逐步推進到總、分行生產環(huán)境所有主機、所有監(jiān)控指標全部覆蓋,平穩(wěn)替換行內傳統(tǒng)商業(yè)監(jiān)控軟件,并且在其基礎上逐步實現(xiàn)平臺化、自動化的監(jiān)控統(tǒng)一管理。下面分別從監(jiān)控部署架構、監(jiān)控采集方法、監(jiān)控告警策略和監(jiān)控自動化四個方面,介紹G行在ZABBIX開源監(jiān)控的實踐歷程。
2.1 監(jiān)控部署架構
根據(jù)總、分行以及生產、測試劃分使用多套ZABBIX軟件,并采用Server-Proxy-Agent的分布式監(jiān)控架構,有效地降低Server端的采集壓力;同時,根據(jù)不同環(huán)境的特性采用不同的監(jiān)控方案:
圖3 總分行生產、測試環(huán)境監(jiān)控架構
開發(fā)測試環(huán)境
監(jiān)控策略的開發(fā)測試與驗證環(huán)境,同時結合開發(fā)測試環(huán)境的特性(被監(jiān)控主機的生命周期較短),采用自動發(fā)現(xiàn)+自動注冊的監(jiān)控方式進行自動監(jiān)控。
總行生產
按監(jiān)控對象類型進行分組,每組Proxy承擔不同的監(jiān)控職責,實現(xiàn)監(jiān)控壓力的平衡,并準確定位不同組件的作用范圍。
分行生產
- ZABBIX Server部署在總行,集中化統(tǒng)一管理。
- 按地域劃分,每家分行部署獨立Proxy,Proxy各模塊容器化部署,靈活調度、易于遷移和擴展。
- Proxy與Server之間數(shù)據(jù)采用壓縮模式、加密傳輸,保障網絡無壓力和數(shù)據(jù)安全。
2.2 全面支持開源/信創(chuàng)
依賴ZABBIX開源屬性,全面支持行內開源軟件及信創(chuàng)產品的監(jiān)控納管,推進監(jiān)控自主可控,具體包括:
- 操作系統(tǒng):中標麒麟LINUX,銀河麒麟ARM等;
- 數(shù)據(jù)庫:DAMENG,MySQL,KINGBASE等;
- 中間件:寶蘭德,NGINX,ROCKETMQ等;
- 大數(shù)據(jù):KAFKA,SPARK,ES等。
2.3 監(jiān)控采集方法
ZABBIX支持多種采集方式,根據(jù)監(jiān)控項的不同自由定制:
- 使用Agent或SSH、WMI監(jiān)控服務器軟件運行情況。
- 使用DBforBix插件、JDBC協(xié)議或Agent監(jiān)控數(shù)據(jù)庫。
- 使用JMX(java管理擴展)、T3協(xié)議監(jiān)控java類服務。
- 使用ping及web檢測監(jiān)控WEB應用。
- 使用log日志主動監(jiān)控及時發(fā)現(xiàn)應用的異常。
- 使用system.run調度現(xiàn)有監(jiān)控腳本與工具,保證現(xiàn)有監(jiān)控工具的順利切換。
- 使用相關項與預處理功能對監(jiān)控結果解析解析拆分使用,實現(xiàn)一次采集多次使用,提高監(jiān)控效率,降低被監(jiān)控端性能壓力。
圖4 異構對象全面監(jiān)控
2.4 監(jiān)控告警策略
ZABBIX支持通過郵件、短信、微信、接口等方式發(fā)送到指定人,行通過調用ZABBIX API,讀取告警數(shù)據(jù),對告警數(shù)據(jù)進行規(guī)則解析、豐富處理和維護期處理,告警數(shù)據(jù)推統(tǒng)一監(jiān)控管理平臺后進行集中展示和告警。
2.5 監(jiān)控自動化
G行數(shù)據(jù)中心的管理已實現(xiàn)標準化,標準化是實現(xiàn)監(jiān)控自動化的前提。
- ZABBIX Agent通過母帶、SMDB下發(fā)或腳本一鍵式自動部署。
- Agent開機自啟動、狀態(tài)檢測,支持遠程重啟及停用。
- LLD自動發(fā)現(xiàn),可自動發(fā)現(xiàn)系統(tǒng)分區(qū)、網卡,還可自定義發(fā)現(xiàn)主機上的數(shù)據(jù)庫或中間件多實例。
- 自動注冊,自動監(jiān)控新設備、創(chuàng)建主機、關聯(lián)模板、開啟監(jiān)控。
- 通過API實現(xiàn)批量添加監(jiān)控主機,關聯(lián)監(jiān)控模版。
- 統(tǒng)一的監(jiān)控模版與組合告警觸發(fā)器相結合,滿足多種監(jiān)控場景。
- 簡單故障自愈功能,可對報警進行分類、分級,結合腳本對一些低級本的告警固化處理方法,滿足條件即可自動進行相應操作(如指定文件清理、服務拉起等),達到快速恢復故障,保障系統(tǒng)可用率。
三、ZABBIX開源監(jiān)控階段性成果
經過四期持續(xù)的建設,G行基本完成對商業(yè)軟件的監(jiān)控覆蓋,在開源軟件監(jiān)控能力、監(jiān)控自服務能力等各方面都取得長足的進展,豐富并完善監(jiān)控手段,并在總、分行生產系統(tǒng)監(jiān)控管理中發(fā)揮重要作用。ZABBIX已完成開發(fā)測試環(huán)境、總行、39家分行監(jiān)控全覆蓋,使用ZABBIX系統(tǒng)對生產環(huán)境HPUX系統(tǒng)進行細粒度監(jiān)控,實現(xiàn)對商業(yè)監(jiān)控軟件的能力替代,同時完成39家分行的全面覆蓋,正在進行商業(yè)監(jiān)控軟件的全面替換。
圖5 ZABBIX階段性建設成果
四、總結與展望
數(shù)字化銀行離不開強有力的科技支撐。我們將不斷緊跟新技術發(fā)展步伐,從基礎設施、技術架構、新技術應用等多領域夯實科技基礎支撐能力,為眾多新技術、新架構的引入,提供全方位的監(jiān)控服務。
監(jiān)控思維的轉變
數(shù)字化思維需要運維人員建立數(shù)據(jù)意識,以業(yè)務價值為導向,以數(shù)據(jù)服務為目標,實現(xiàn)監(jiān)控數(shù)字化轉型。
監(jiān)控智能化
依賴于大數(shù)據(jù)技術,通過海量數(shù)據(jù)和機器算法,實現(xiàn)告警根因分析、動態(tài)基線和自動預測等智能化場景的監(jiān)控應用。
技術創(chuàng)新
保持技術創(chuàng)新能力,更多新技術、新架構的使用,幫助我們更方便、高效的應對數(shù)字化轉型中遇到的各種問題。
監(jiān)控管理+服務
強化監(jiān)控標準化的管控能力,以監(jiān)控標準化作為基準,進一步優(yōu)化自服務、自助式的運維監(jiān)控模式,提升監(jiān)控服務的覆蓋度。