王震
摘 要 本文主要闡述了一種基于 Grafana、Elasticsearch 和 Zabbix 等開源軟件搭建的一套運維監控及預警平臺,致力于解決在應用平臺部署后會出現各種各樣的故障,類似但不限于:CPU 負載過高、磁盤容量使用超過指定閾值、內存使用超過閾值和系統進程死亡等場景的諸多事故問題。
關鍵詞 Grafana;Elasticsearch;Zabbix;日志搜集;監控告警
1技術選型
構建一個智能的運維監控平臺,必須以運行監控和故障報警這兩個方面為重點,將所有業務系統中所涉及的網絡資源、硬件資源、軟件資源、數據庫資源等納入統一的運維監控平臺中,并通過消除管理軟件的差別,數據采集手段的差別,對各種不同的數據來源實現統一管理、統一規范、統一處理、統一展現、統一用戶登錄、統一權限控制,最終實現運維規范化、自動化、智能化的大運維管理。
1.1 利用 Zabbix搭建運維監控數據源
Zabbix是一個企業級的分布式開源監控解決方案。它能夠監控各種服務器的健康性、網絡的穩定性以及各種應用系統的可靠性。當監控出現異常時,Zabbix通過靈活的告警策略,可以為任何事件配置基于郵件、短信、微信等告警機制。而這所有的一切,都可以通過Zabbix提供的Web界面進行配置和操作,基于Web的前端頁面還提供了出色的報告和數據可視化功能。這些功能和特性使其非常適合作為搭建運維平臺監控的基礎組件。
1.2 利用Grafana搭建統一的數據展示層和統一的 Dashboard UI
Zabbix 作為企業級的分布式開源監控平臺,本身提供了一套簡單的 UI 來供使用者查看Zab- bix? 相關的監控數值以及曲線,但面對大型服務器集群以及應用集群的數據可視化,Zabbix本身自帶的UI還是欠缺了許多。Grafana是一套開源的基于Golang和 Angular 構建的開源的度量分析與可視化軟件,Grafana支持多種數據源類似但不限于:In?uxDB、Elasticsearch、KairosDB等等[1]。
1.3 基于MySQL、In?uxDB、Redis、Elasticsearch搭建數據存儲層
運維平臺的基礎數據存儲方面選擇MySQL,MySQL作為市面上最流行的關系型數據庫,支持多種存儲引擎。
對于Zabbix 所采集的監控數據選擇采用In?uxDB 來進行統計和記錄,In?uxDB是一個由In?ux-Data開發的開源時序型數據。它由Go寫成,著力于高性能地查詢與存儲時序型數據。In?uxDB被廣泛應用于存儲系統的監控數據,IoT行業的實時數據等場景。
Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基于內存亦可持久化的日志型、Key-Value數據庫,并提供多種語言的API,在運維平臺的數據存儲層的場景中主要負責臨時性的數據存儲。
對于日志數據,選擇采用Elasticsearch 來做數據存儲及搜索功能支持。
1.4 基于Elasticsearch、Logstash和Kafka來搭建日志采集系統
對于各種業務系統的日志采集,目前可以采用 Elasticsearch來做日志存儲和搜索,使用Logstash來做日志采集,以Java應用舉例,Java 常用的一些日志庫類似但不限于 Log4J、Log- back 等都支持對接Logstash,將日志內容直接發送給Logstash,從而避免每臺應用機上去安裝Logstash的煩瑣操作,避免多余的資源利用。Kafka在這套體系之中主要承擔者“Data Transfer”的作用,Logstash 來采集和過濾日志發送給Kafka 的消息隊列,Kafka 將數據異步交給Elasticsearch做處理。
2平臺架構
我們將整個運維平臺分為如下幾層:
(1)統一展示層;
(2)運維平臺支持層;
(3)數據存儲層。
統一展示層主要負責統一風格的UI管理臺和Dashboard 提供給用戶使用,并對業務集群內其他應用開放Open API;運維平臺支持層主要集成一些基本的運維平臺支撐組件:Kafka消息隊列服務、Logstash日志采集& 處理服務、Zabbix資源監控系統、Grafana后端服務;在數據存儲層包括了四種平臺支撐用數據庫:Redis、Elasticsearch、MySQL、In?uxDB[2]。
3一期平臺目標
項目一期主要實現如下目標,平臺應該具有如下特征:
(1)支持多種類型的用戶鑒權機制(如LDAP、API Key、Bearer Token 和Basic Auth),方便已有業務系統及未來業務系統的接入;
(2)安全審查包括登錄鑒權記錄、用戶操作記錄、訪問記錄;
(3)業務運行關鍵指標報警及監控;
(4)靈活告警通知配置,支持系統消息、郵件、短信、微信的告警通知方式;
(5)自動服務器和虛擬云資產、應用服務的信息及關聯關系抓取及資產、資源的生命周期管理;
(6)快速智能的日志文本搜索,友好的日志文本展示;
(7)豐富的可視化數據展示,如直方圖、曲線圖、散點圖、扇形圖、熱力圖、儀表盤。
4結束語
企業需要一個相對完整的監控體系可以24小時針對內網各種應用進行監控,一旦發生異常,通過各種渠道通知預警;在此之上建立起一套日志收集和查詢平臺,來歸納各個應用日志以供問題排查。
參考文獻
[1] 彭睿,成經緯,秦勤.自動監測站第三方運維管理的思考[J].中國環境監測,2016,32(3):21-24.
[2] 孫聯.關于提高會計信息質量的若干思考[J].中國鄉鎮企業會計,2009,(1):128-129.