基于AI的事件智能分析系統建設實踐
一、背景
當前,隨著虛擬化、云計算等新技術的廣泛應用,企業數據中心內部IT基礎設施規模成倍增長,計算機硬件和軟件的規模不斷的擴大,相應的計算機故障也頻繁發生,一線運維人員迫切的需要更加專業、更加強大的運維工具。
在數據中心的日常運維工作中,一般是通過基礎監控系統和應用監控系統,構建針對數據中心軟硬件故障發現的機制。在這個過程中,各種軟硬件發生異常時,指標項會超過預設的閾值,進而觸發告警,通知運維專家進行排障。
事件智能分析系統即是為解決告警轉故障并分析處置而生的系統。
二、總體架構
1、事件智能分析系統架構
事件智能分析系統打造“故障識別-故障分析-故障處置”全流程的故障處理體系,將運維專家的經驗沉淀為數字化模型,當故障發生時,可以自動的對故障進行“識別-分析-處置”,進而縮短MTTR(平均故障修復時間,Mean Time To Repair)。
事件智能分析系統引入AI技術為系統各模塊賦能,當運維專家沒有手動建立故障模型時,AI會自動的為告警建立故障,并自動進行分析,進而給出分析方案,輔助運維專家對故障進行分析。AI賦能減輕了運維專家建模的工作量壓力,同時也彌補了運維專家的經驗盲區。
以下是事件智能分析系統的總體架構圖:
圖片
其中藍色部分是事件智能分析系統的功能模塊,橙色部分是周邊系統,提供相應的數據或接口。
2、和周邊系統的關系
統一事件平臺:Alert系統收集各監控系統(基礎監控、應用監控、日志監控的)的告警,統一匯聚后,轉化為統一的格式,發送到kafka;事件智能分析系統會從kafka系統中讀取所有告警數據。
自動化平臺:運維專家事前在自動化平臺新建一些編排和腳本,作為處理故障的方法,當故障分析找到根因后,可以通過調用自動化平臺接口實現處置任務編排和下發執行,最終實現自動處置的目的。
CMDB:在故障分析時,可使用CMDB中存儲的對象實例屬性和關系,將告警實例和處置實例進行邏輯關聯;同時在展示告警對象周邊對象的一些信息時,也需要關聯對應的CMDB對象實例數據。
ITSM:提供變更單和事件單等工單數據,當發生故障時,需要使用這些工單數據進行分析。
運維大數據平臺:大數據平臺提供數據清洗工具,幫助事件智能分析平臺對所需的數據進行清洗,同時提供海量數據存儲的技術支持;大數據平臺是事件智能分析所需數據的堅實基礎,同時也為后續的AI分析提供了分析數據,包含了CMDB的對象數據、ITSM的工單數據、監控系統的指標數據和告警數據等。
三、功能詳解
1、故障識別
故障識別的主要功能就是建立故障模型,其能夠定義告警轉化為故障的規則,同時對故障模型的定義,也是對故障的一次簡單分類,比如會有CPU使用率高故障、內存使用率高故障、磁盤使用率高故障、網絡延遲故障等,簡單的說就是哪幾個告警可以變成一個故障,告警和故障的數量關系既可以是1:1的,也可以是n:1的關系;只有形成了具體故障,才能方便后續的分析和處置。
告警格式化:
將從統一事件平臺收到的告警,進行標準化處理,處理稱為事件智能處置系統所需要的格式,部分字段需要查找配置管理的對象實例數據進行補充。
故障模型定義:
故障場景模型的定義主要包括基本信息、故障規則和分析決策等功能,具體描述如下:
1)基本信息包括故障名稱、所屬對象、故障類型和故障描述等信息;
2)故障規則可分為以下幾類:
- 對告警匹配的關鍵字規則設定:告警的json字段中的摘要summary、級別level等字段都可以作為條件進行設定,而且可以將多個規則進行邏輯設定運算(規則的與或非計算);
- 時間規則:包括立刻執行(收到告警立刻生成故障實例)、等待固定時間窗口(初始告警開始后一段時間內的告警強制聚合故障實例)、等待滑動時間窗口(最后告警開始后一段時間內的告警強制聚合故障實例);
- 位置規則:包括同機器、同部署單元、同物理子系統,在指定范圍內的滿足條件的告警都聚合成一個故障實例。
3)關聯指定的分析決策樹,確定分析方案。
2、故障分析
故障分析是從關聯數據展示、拓撲數據展示、分析決策樹和知識庫檢索等多個方面對故障進行分析展示,為運維專家提供數據支撐,幫助其快速尋找故障根因并處置故障。其中分析決策樹可以關聯處置。
關聯信息展示:
1)告警分析:告警對象所對應物理子系統和部署單元所關聯的其他軟硬件對象在最近48小時內的告警數據;
2)指標分析:告警對象所對應物理子系統和部署單元所關聯的其他軟硬件對象在故障前2小時內的指標數據;
3)變更分析:告警對象所對應系統在最近48小時內的變更工單記錄,進行變革分析;
4)日志分析:對告警對象及周邊對象的指定路徑的應用日志和系統日志進行分析,并進行展示;
5)鏈路分析:以交易碼為核心,將告警對象所涉及的交易碼上下游鏈路數據進行分析,并進行展示;
拓撲結構展示:
以物理子系統為維度,將全系統所涉及的運維對象以樹狀的拓撲結構進行展示,同時對其中有告警的節點進行標紅處理,以提示運維專家。
具體的例子如下:
圖片
分析決策樹:
以CMDB對象及關系、告警、指標、變更、日志和鏈路等數據為基礎,融合到可自定義編輯的分析決策樹中。
運維專家可以預設分析數據的順序和判斷標準,將運維經驗以數字化模型的方式,沉淀到分析決策樹中,當發生故障時,平臺會根據預先設定的分析決策樹對相關數據進行分析和判斷,最終給出結果。
分析決策樹最終的葉子節點可以關聯處置,確保故障的“識別-分析-處置”全生命周期的自動化運行。
具體的樣例如下:
圖片
知識庫檢索:
數據中心以運維大數據平臺上的數據為基礎,構建知識庫系統,主要收集應急預案、事件單處理全流程記錄、運維專家經驗總結等文本數據。
當發生故障時,會用故障的關鍵字去知識庫進行檢索(字符串匹配),返回對應的文本知識,作為專家經驗返回。在AI賦能的章節會講述使用文本分析的方式進行關聯搜索,而不僅僅只是簡單的字符串匹配。
3、故障處置
故障處置主要按事前定義好的處置模型進行處置,主要包括處置決策編排和處置操作,需依托于自動化平臺實現處置任務的編排和執行。
1)處置編排:處置編排是一些列處置操作的有機結合,因為有些處置需要對運維對象進行先隔離再重啟;將處置操作的腳本進行流程編輯,使得若干個操作腳本按照既定的順序下發到具體實例機器并執行;
2)處置操作:對腳本(shell、python)進行封裝,使其可以在實例機器上執行,也可以被處置編排調用;處置操作是處置的最小動作,比如tomcat的重啟、隔離、熔斷等腳本;
故障處置大都依據運維專家經驗或應急預案文檔,將其進行數字化沉淀為模型。
故障處置結束后,會根據流程記錄處置相關記錄,供后續回顧分析使用。
四、AI賦能
AI賦能是為了在故障的“識別-分析-處置”全流程中,盡量減少人工配置工作量,減輕運維專家工作壓力,同時也可以彌補運維專家經驗無法覆蓋的部分,且可以在初始化階段就覆蓋歷史上出現過的100%告警類型;總體原則是通過AI計算,在故障識別和分析的領域,通過自動建模、自動聚合、自動分析等方式,建設出故障模型和分析方案,給運維專家提供參考,但是確保最后的處置由運維專家做最后的判斷和控制,保證算法做99%的工作,人工審核確保最后1%的工作。
1、自動建模
回顧三-1章節關于故障模型的定義,我們發現只要確定告警規則、時間規則和空間規則,同時確定分析決策樹就可以建立一個故障模型,而時間規則和空間規則可以默認為最常見的立刻執行和同機器,分析決策樹可以使用最常規健康檢查。
因此建立故障模型,為同一類的故障建立模型,最核心的問題就是通過告警內容對故障進行分類,而我們使用告警內容的關鍵字來進行確定分類,進而建立某類型的故障模型。那么自動建模的問題,就退化為尋找告警的關鍵字并以此建立故障模型。
總體邏輯圖如下:
圖片
將歷史告警和實時告警逐條輸入到故障模型中,如果已經可以匹配現有的故障模型,則結束此條告警的處理;如果沒有可以匹配的故障模型,則通過算法計算此條告警內容的關鍵字,并以此關鍵字構建故障模型,隨后將新建成的故障模型加入到故障模型列表中。
運維專家可以通過人工確認的方式,將故障模型泛化上線。
此種自動建模的方式,有以下幾個優點:
1)可以實時處理告警,實時進行故障建模,更新模型的速度非常快;
2)建模不依賴于運維專家經驗,可以直接通過告警內容進行建模;
3)可以覆蓋歷史全部告警,且可以實時應對新型告警;
4)無需運維專家進行大量模型設置的工作,節省了人力;運維專家僅需做最后的人工確認,保證結果的前提下提升了效率;
總體來說,在待計算文檔中頻繁出現,但是在海量文檔中出現概率不高的詞匯,成為關鍵字的概率越大,拿部分告警內存進行處理的結果如下:
圖片
使用以上算法,使用部分告警內容進行計算后,得到的數據效果如下:
圖片
圖片
2、自動聚類故障
自谷歌發布BERT(Bidirectional Encoder Representations from Transformers)之后,在各文本任務中刷榜,取得了非常好的效果,因此使用其來計算文本相似性,主要是計算告警內容和故障描述之間的相似性。
現在構建我們的聚類算法,具體流程示意圖如下:
圖片
具體步驟如下:
1)如果有需要可以人工設置故障描述,作為故障聚類的錨定方向;本步驟并非必須的,如果沒有,則直接跳過;
2)將告警信息進行清洗,去除一些無用的字符;
3)使用BERT模型,對告警摘要的文本內容和所有故障聚類的信息進行文本相似性計算,得到是否相似的結果(通過判斷是否超過閾值來判斷是否相似);
4)如果是相似的,則將此告警歸屬于此故障聚類;
5)如果距離值未超過閾值,則將此告警設為一個新的故障聚類;
6)第4,5步的結果更新到故障聚類信息列表中;
7)從第2步再處理下一個告警數據。
本算法可以將告警歸屬到不同類型的故障中,如果沒有現成類型的故障,則自建一個類型,針對此不同故障類型的分類,可以有不同的分析方法。
本算法的優點如下:
1)通過歷史和實時告警數據,無監督的自動做了故障分類,也無需建立故障模型,節省了人力;
2)針對實時告警,故障聚類的過程保證了可以做到實時在線更新,無需定期計算和更新模型;
3)告警自動生成或關聯故障,可以進一步關聯對應的應急預案,得到故障的分析方案和處置方法。
3、自動生成分析方案
回顧三-2章節故障分析,對故障的分析,主要集中在對故障節點及周邊節點的信息進行展示,在分析決策樹的設定上也需要較多的人工設置。
在AI賦能后,考慮以應急預案、告警詳情和故障分析中的展示信息為提示詞(prompt),利用現有效果極佳的大語言模型,自動的給出故障分析方案。
考慮到私有化部署問題,大語言模型可以考慮ChatGLM2、llama2等,具體實施階段可以根據需要和硬件水平選擇不同的大語言模型,在本文的方案描述中,統一使用LLM表示大語言模型,請讀者注意區分。
主要流程示意圖如下:
圖片
故障識別后,獲得了對應的實時告警和展示的相關數據,結合應急預案數據,組成prompt組合,prompt提示詞是為了在LLM大語言模型提問時,獲得更好的輸出效果。
同時將應急預案和歷史告警數據,分批存入到faiss向量數據庫,每批的文本量不超過LLM的token限制數量;當prompt組合提示詞超過了LLM大語言模型時,會將prompt組合提示詞向faiss向量數據庫進行查詢,獲得向量最相似的文本;以這些不超過token長度限制的文本,向LLM查詢,獲得的返回即為故障分析方案(文本形式)。
具體效果參考下圖:
圖片
4、應急預案檢索
應急預案作為行業內的必備手冊,完善的記錄了所有系統和所有運維對象對應故障的分析和處置步驟,是非常好的文本數據依靠,在本系統中會有很多地方都會使用到應急預案的內容。因此提供應急預案的檢索能力十分必要,可以利用知識庫系統作為應急預案的檢索基數基礎。
可以提供字符串匹配的文本檢索,也可以提供文本分析后的關鍵字檢索,同時也可以語義級的向量相似性檢索,無論哪種方式都是為了獲取系統所需要對應的應急預案文本。
以上若干種檢索方式都可以利用前文中提到的技術手段進行處理,在此不再贅述。
五、結語
事件智能分析系統是為了幫助運維專家對各系統進行運維,因此提供了一系列可以建模的方法,讓運維專家可以將運維經驗沉淀為數字化的模型;當數據量(故障樣本數據和運維相關數據)越來越大時,使用一些AI算法,可以減輕運維專家的工作量,輔助運維專家做分析決策;最終希望達到無需運維專家介入,也能夠自動運維的境界,即對故障的“自發現,免維護”。