背景
AIOps,即 Artificial Intelligence for IT Operations,智能運(yùn)維。隨著智能化時(shí)代的快速發(fā)展,企業(yè)內(nèi)服務(wù)系統(tǒng)的數(shù)量不斷增加,系統(tǒng)之間的關(guān)系也越來(lái)越復(fù)雜。如圖,在傳統(tǒng)運(yùn)維方式中,運(yùn)維工程師難以快速準(zhǔn)確地對(duì)海量告警做出正確判斷,導(dǎo)致服務(wù)停滯,并造成不可逆的損失。在AIOps智能運(yùn)維下,智能化的判斷告警故障定位非常值得深入探索。
下面對(duì)告警的常見(jiàn)問(wèn)題做簡(jiǎn)單概括:
告警是什么?
告警是運(yùn)維軟硬件發(fā)生特定事件后的事件通報(bào);通過(guò)監(jiān)控中心進(jìn)行實(shí)時(shí)監(jiān)控,并對(duì)告警事件進(jìn)行采集存儲(chǔ)。
為什么需要告警規(guī)約和故障定位?
當(dāng)發(fā)生告警風(fēng)暴時(shí),傳統(tǒng)運(yùn)維工作需要對(duì)每條告警進(jìn)行分析,運(yùn)維工作量很大。因此,采用AIOps方法能大量減輕運(yùn)維工程師的工作量。AIOps采用算法思想智能化的實(shí)現(xiàn)告警壓縮和故障定位。
如何做到告警規(guī)約和故障定位?
基于以上問(wèn)題,我們?cè)O(shè)計(jì)了一套關(guān)于告警事件的分析方案,包括了采集告警數(shù)據(jù)、提取告警關(guān)聯(lián)規(guī)則、告警故障定位。該分析方案可以更實(shí)時(shí)、快速且準(zhǔn)確的定位告警源,接下來(lái)將具體介紹一下我們的分析方案。
分析方案
該分析方案是主要分為離線學(xué)習(xí)和在線分析兩個(gè)過(guò)程,目的是為了提取告警關(guān)聯(lián)規(guī)則,實(shí)現(xiàn)告警壓縮和告警故障定位。如圖所示:
離線學(xué)習(xí)
離線學(xué)習(xí)是通過(guò)歷史告警數(shù)據(jù)獲取告警事件間的關(guān)聯(lián)關(guān)系,并通過(guò)規(guī)約算法消除關(guān)聯(lián)的噪聲告警,劃分出具有強(qiáng)關(guān)聯(lián)的告警分組。
歷史告警:獲取各監(jiān)控設(shè)備上的歷史告警數(shù)據(jù),主要包含有時(shí)間、設(shè)備型號(hào)、告警標(biāo)題、告警對(duì)象等有效屬性。
規(guī)范化:對(duì)獲取到的原始告警數(shù)據(jù)進(jìn)行規(guī)范化處理如清除臟數(shù)據(jù)、分詞等;對(duì)不同的告警事件進(jìn)行編碼,如將“XXX的CPU發(fā)生告警,CPU使用率達(dá)到90%”設(shè)為A1。
告警分段:將告警事件進(jìn)行劃分處理,把告警事件劃分至一個(gè)時(shí)間窗口內(nèi);由于告警事件發(fā)生的告警關(guān)鍵內(nèi)容具有較大相似性,需要在時(shí)間分段基礎(chǔ)上計(jì)算本文相似度,對(duì)場(chǎng)景進(jìn)行分段。
關(guān)聯(lián)挖掘:采用告警上下文關(guān)聯(lián)和告警內(nèi)容關(guān)聯(lián)兩者結(jié)合挖掘告警事件的關(guān)聯(lián)關(guān)系,此挖掘步驟可獲得告警事件兩兩之間的拓?fù)潢P(guān)系。
社區(qū)劃分:社區(qū)劃分的算法有很多,常見(jiàn)的有LPA、Louvain、Infomap等算法。在告警場(chǎng)景中,相比其他兩種算法, Louvain算法能更有效地對(duì)告警事件分組劃分。
在線分析
在線分析是對(duì)實(shí)時(shí)告警事件進(jìn)行分析,與離線學(xué)習(xí)的數(shù)據(jù)處理過(guò)程一致,也是根據(jù)時(shí)序和文本相似度進(jìn)行分段,再對(duì)離線學(xué)習(xí)結(jié)果進(jìn)行關(guān)聯(lián)壓縮,最后以關(guān)聯(lián)規(guī)約后的壓縮集合為單位,將得到的告警根因結(jié)果反饋給運(yùn)維工程師。
數(shù)據(jù)處理:在線分析過(guò)程中,數(shù)據(jù)處理與離線學(xué)習(xí)一致,都是將實(shí)時(shí)告警數(shù)據(jù)進(jìn)行規(guī)范化、按告警發(fā)生時(shí)間和告警內(nèi)容分段等。
社區(qū)匹配:將處理后的告警事件與離線學(xué)習(xí)的結(jié)果進(jìn)行社區(qū)匹配,若匹配成功,則將該告警事件劃分至該社區(qū)內(nèi);若匹配失敗,則將該告警事件與經(jīng)過(guò)離線學(xué)習(xí)后的告警事件進(jìn)行文本相似度計(jì)算,取文本相似度最大的告警所在的社區(qū)作為該告警事件的社區(qū)。
故障定位:對(duì)所有強(qiáng)關(guān)聯(lián)的告警社區(qū)進(jìn)行故障定位,本文根據(jù)告警事件的業(yè)務(wù)情況采用改進(jìn)的PageRank算法故障定位。
結(jié)果反饋:運(yùn)維工程師可獲取經(jīng)算法推薦的告警根因,對(duì)每次實(shí)時(shí)發(fā)生的告警事件,獲取其根本原因。
模擬分析實(shí)驗(yàn)
獲取嘉為藍(lán)鯨統(tǒng)一告警中心的數(shù)據(jù)進(jìn)行模擬分析,實(shí)現(xiàn)過(guò)程參考下圖:
根據(jù)嘉為藍(lán)鯨統(tǒng)一告警中心的數(shù)據(jù)分析,得到以下結(jié)論:
總體數(shù)據(jù)量約為20w,總告警數(shù)有148,獨(dú)立告警數(shù)25,有效告警數(shù)123,有效告警被劃分成13個(gè)小組,每小組內(nèi)包含一個(gè)告警根因。
告警壓縮率約為91.2%。
告警丟失率約為16.9%。
每秒可實(shí)時(shí)推斷約1000條告警事件的根因故障。
總結(jié)
本文主要是探索了告警事件的壓縮與定位的分析方案,它能提高運(yùn)維工程師的工作效率、能壓縮告警的數(shù)據(jù)量、能基本實(shí)現(xiàn)自動(dòng)化的網(wǎng)絡(luò)運(yùn)維。方案中可能存在如告警關(guān)系不夠全面、關(guān)鍵閾值的設(shè)定依賴專家經(jīng)驗(yàn)等有待改進(jìn)的點(diǎn),歡迎大家一起探討優(yōu)化。