論監控中事件管理的藝術

語言: CN / TW / HK

監控系統執行過程中必然會產生各類告警,不過,有告警並不代表有生產事件,並不是每一條告警都需要人為介入處理。

那麼什麼是事件? ITIL 中對事件的定義是會引起或可能引起服務中斷、服務質量下降的任何活動,包括硬體故障、軟體故障、投訴、服務請求等。不過在事件管理系統中事件的定義稍有不同:需要我們響應、處理、跟蹤的事情都稱為事件

事件管理系統是監控體系中的重要組成部分,對外提供統一介面,以實現對外部系統事件的對接,事件的觸發可能來自監控服務層的各個系統。為了能讓來自不同監控系統、不同格式的告警事件,以儘可能直觀的方式展示給監控運維團隊,實現監控事件集中管理、聚合收斂、關聯分析,事件管理系統要收集和彙總來自不同系統的各類事件。

一方面要對包括基礎監控、業務監控、全鏈路監控等在內的各套監控系統的告警資訊進行事件多維度分析,為實現事件的關聯分析、應急處置策略、事件影響範圍評估、故障預測等智慧化分析提供資料支援,為故障自愈的實施提供支援;另一方面也要通過系統,對事件的發現、處置、定級、跟蹤等進行流程化管控,通過對事件提供統一受理入口,解決 IT 運維團隊多系統對接處理困境,提升事件響應效率。

為了簡化事件的響應,對於不同的事件,要根據該事件的影響、關聯分析,給予不同的處理方式。 事件的關聯分析是形成故障樹,為後續實現故障自愈的基礎條件。執行關聯分析可以從縱向和橫向兩個維度展開

  • 縱向是指從基礎設施層的伺服器硬體、網路、虛擬機器/容器、作業系統,以及應用系統、中介軟體、業務交易狀態等方面展開分析;

  • 橫向是指從當前應用節點狀態,以及關聯的上、下游伺服器節點的交易狀態等方面展開分析。這裡面又涉及幾個細節:一是如何評估事件的影響或重要性,也即給出其處理優先順序(建議);二是如何處理,也即制定清晰的事件應急響應策略(知識庫)。

所有資源都是有限的,監控運維資源更是如此。如果出現事件後一股腦兒地同步給監控運維團隊,運維團隊的同事要麼四處救火,疲於奔命,但問題始終不斷,處置了一堆系統告警,可發現只解決了雞毛蒜皮的小問題,真正的嚴重問題始終沒有徹底消除;要麼事件處理完全依賴最有經驗的有限人員,其他人員或者經驗不足,或者能力不夠,手忙腳亂。

事件管理系統關注事件的應急處置、關聯分析等,明確事件的危險程度、影響範圍和優先順序。這部分工作做得越細緻、越精確,最終流轉到運維團隊的維護工作量就越小。對於已知的事件,通過標準化的事件應急策略,不管誰來處理,處置的策略都是相同的,結果也一樣,通過這種方式也變相實現了對事件響應的標準化,甚至會實現有限程度的故障自愈。

各類資訊系統多了之後,告警也可能越來越多,別說介入,有可能看都看不過來。為了讓關鍵監控事件得到及時處理,資訊系統要做分級,告警同樣也要進行分級,並且告警資訊中要有緊急程度的明確標識,方便接收者快速分辨哪些告警需要更高優先順序響應,哪些告警可以等待。對於低級別告警要設定升級條件,比如處理時間過長或者短時間內多次發生等,則要考慮升級,必須儘可能把需要人為關注或介入的資訊及時展示給 IT 運維團隊。

企業內的監控系統並不止一個,從展現角度看,不同的工具有不同的展示介面,有不同的關注點。多套運維繫統不僅需要投入更多的人力關注,而且相互獨立展現也造成缺乏對各類資料的彙總分析,不能全面反映系統整體執行狀況。一個問題發生時,有可能多個監控維度都會丟擲監控告警資訊。比如一臺物理機宕機,那麼該物理機上的所有虛擬機器監控都會出現告警,虛擬機器上執行的應用系統、交易級業務監控、應用效能監控、客戶體驗監控等也都會出現異常告警事件。這時,如果監控自身的資訊歸集、告警去重、事件收斂等策略不完善,監控指標越豐富,觸發的告警就會越多,反倒會給監控團隊造成干擾,不利於快速定位問題根源。對於同一個故障觸發多類指標告警,以及同一個指標在故障未解除前重複產生告警的事件,把這些事件都展示出來既無必要,更是一種資訊騷擾,因此一定要對告警進行收斂分析。

告警事件的處理屬於日常性事務,工作瑣碎但又不能輕視,需要耐心、細緻,當然,監控系統自身功能是否完備也很重要。舉例來說,發生生產事件並觸發了告警之後,哪些人接收、誰負責跟進、處理的情況如何同步、持續一段時間後事件仍未能消除時的事件升級機制等,都需要能夠清晰展示。儘管所有優秀的理念或設計最終都是落在軟體功能上,但功能實現只是增加程式碼量而已,真正優秀的系統關注的是監控整體過程和使用者體驗,幫助企業建立和優化監控告警事件的處置機制。

傳統的監控系統往往是一體化設計,資料採集、分析、告警、展現等都在同一個平臺,對外沒有 API 介面,無法實現與外部系統打通,另外對告警和事件的處理也缺乏聚合、收斂、關聯分析等,而 一些新興的監控系統則會關注事件流轉的全過程,以時間序記錄、觸發和展現從故障到恢復的各個節點的全過程。 在選擇或者建設監控平臺時,也應更多關注監控全流程,即便是功能暫不支援,不管是商業化平臺還是開源平臺,都可以通過定製開發滿足個性化需求。