監控系統工作原理

語言: CN / TW / HK

數據中心各類監控系統,主體模塊一般可分為:代理層、匯聚層、核心層、展現層。以目前市面上比較流行的日誌監控解決方案 ELK(Elasticsearch+Logstash+Kibana)為例,其中,Logstash 是工作於代理層和匯聚層的用於日誌數據收集的代理(Agent);Elasticsearch 是工作於核心層的開源的分佈式搜索引擎,提供日誌數據檢索、分析、存儲;Kibana 是工作於展現層的開源免費的日誌分析展示 Web 界面,用於監控數據可視化。同時,監控系統還需要有對接告警網關的告警模塊、用户和權限管理模塊等。

1、代理層

監控數據採集一般有 無監控代理(Agentless)監控代理(Agent) 兩種方式。

無監控代理大多是通過被監控組件端(監控代理端)自帶的協議,如 Windows 操作系統使用 WMI、數據庫使用 JDBC、PC Server 使用管理口配置 Trap 等,由監控代理端向服務端推送或有監控服務端拉取監控數據的監控工作模式。

監控代理則是在監控代理端部署監控代理,如 Zabbix 的 Zabbix Agent、Splunk 的 Forward 等,通過啟用監控代理服務與監控服務端交互監控數據的監控工作模式。其中,心跳模塊保障監控代理端與服務端的數據連接,當心跳丟失時,產生事件告警,通知監控管理員及時恢復監控代理狀態。

2、匯聚層

目前市面上大多是分佈式監控系統,都設計了分佈節點,作為將採集完成的數據匯聚送入監控核心的前置,其主要實現如下功能。

  • 數據預處理、緩衝和分流主服務器壓力。數據預處理操作前置,將採集數據中的無用髒數據丟棄,計算、分類、格式化採集的數據,以便於後續監控核心模塊使用。在數據匯聚模塊日常收集數據後,將數據緩存在本地,間歇性地輸送給監控主服務器,緩衝主服務器壓力。監控數據匯聚模塊在大多數監控中作為一個數據前置節點,其通常是一個可選項,即可以跳過數據匯聚模塊直接將監控數據送達監控核心,但監控數據匯聚模塊的出現有利於大幅降低監控核心模塊的系統資源開銷。

  • 分佈式設計,便於監控系統靈活伸縮。監控事件(告警)集中管理和監控數據分佈採集是互聯網架構和微服務設計思潮下的產物。與傳統架構相比,分佈式架構將模塊拆分並使用接口通信,降低了模塊間的耦合性,使得系統可以更靈活地架設和部署;更利於整個系統的橫向擴展。當系統性能遇到瓶頸時,可以在不觸及監控主服務器架構的情況下,方便地以新增節點的形式擴充監控系統整體性能容量。

  • 防火牆錨點,安全隔離,企業為了保障自身網絡安全,防火牆是必不可少的網絡安全設備。特別是在大型數據中心裏,網絡和機房場地更加複雜,可以通過在防火牆上配置策略,允許或限制網段之間的數據傳輸。監控軟件提供的代理模塊,使得監控服務端通過訪問防火牆背後的代理服務器,監測非本網段下的各 IT 組件,僅需要在該防火牆上設置有限的策略,允許數據通過。如 Zabbix 監控提供的 Zabbix Proxy。Zabbix Proxy 是無須本地管理員即可集中監控遠程位置、分支機構和網絡的理想解決方案。

3、核心層

監控系統核心與監控數據庫共同組成了整個系統的大腦,不同的監控系統對數據的處理邏輯、算法及存儲方式有所不同,但概括起來需要完成如下工作。

  1. 數據運算與裁剪。數據在被採集後,一般以報文的形式送入監控系統,系統截取有效原始數據字段。針對特定數據需要做運算後才能得到。 監控系統上存放的數據離當前時間越久遠,時效性也就越差,而存儲空間又是有限的,沒必要把有限的空間用於無用的數據上。IBM Tivoli ITM/ITCAM 設計有分表、時表、日表,通過裁剪代理(SY)對數據做裁剪,數據的顆粒度隨時間越長越粗略。

  2. 閾值觸發。監控值常見的有狀態(如是與非、紅黃綠、是否可達等)和數值(如 80GB、20%、交易筆數、交易延遲等)兩類,監控系統可針對監控值設置閾值,即告警事件觸發條件。 如果操作系統比較先進,可能還有性能容量的動態閾值功能,可基於不同的時間點對監控值動態地適配生成告警事件。

  3. 時間控制。時間控制是監控系統中重要的調度觸發模塊,監控數據每隔多長時間採集、在什麼時間段對指標監控、什麼時間點觸發監控策略,都需要用到時間控制。

  4. 配置管理。配置管理是用於存儲監控軟件監控策略、用户權限等的監控配置數據庫。

  5. 性能管理。性能管理是用於存儲監控組件性能容量數據的監控性能數據庫。

  6. 事件管理。事件管理是用於存儲監控異常事件告警的監控事件數據庫。

  7. 告警模塊。當監控軟件檢測到異常時,由監控告警模塊觸發告警。告警的形式可以是短信、郵件、微信,有的告警還集成了電話語音包。但這類告警絕大多數是單向的,監控告警模塊僅完成事件通知,至於受理崗是否接到了告警,是否處理了事件,業務是否恢復正常,都不是監控告警模塊所關注的。為解決這些問題,部分監控軟件設計了移動終端 App,使用 App 接事件單、反饋處理進度、彙報處理結果。

  8. 命令執行。部分監控軟件也集成了自動化模塊,可以使用對被納管設備進行操作。例如,遠程命令(Telnet 某台設備)、監控自愈(如 Zabbix 的 Action)等。

4、展現層

與監控數據庫對應,監控系統展示模塊一般包括:拓樸管理與展示、用户組權限管理、設備配置管理、性能管理配置及報表、策略管理配置及報表、事件管理配置及報表等模塊。