背景
近年來互聯(lián)網(wǎng)技術(shù)高速發(fā)展,接入監(jiān)控告警的設(shè)備和業(yè)務(wù)也越來越多微驶,不斷增新的設(shè)備和業(yè)務(wù)使得告警的量級也逐級遞加浪谴。各種軟硬件模塊每天會產(chǎn)生大量的告警信息,這些告警中有表象告警因苹,有冗余告警苟耻,也有根因告警。每次故障出現(xiàn)都會引發(fā)一系列錯綜疊加的告警扶檐,從而將根因告警淹沒在里面凶杖,導(dǎo)致故障識別異常困難。一般告警分析主要是靠運維人員進行處理款筑,當告警出現(xiàn)時智蝠,常常要求運維人員必須在最短的時間內(nèi),正確地判斷出告警中存在的關(guān)聯(lián)性奈梳,然后根據(jù)自己的經(jīng)驗采取相應(yīng)的措施杈湾。
然而面對海量告警,靠人工從大量告警中找到故障原因攘须,分析告警屬于哪類事件等慢慢變得不太現(xiàn)實漆撞,為了將告警從散落的狀態(tài)關(guān)聯(lián)起來,目前有以下兩種做法:
傳統(tǒng)的規(guī)則關(guān)聯(lián):
以網(wǎng)絡(luò)的告警關(guān)聯(lián)為例于宙,一般是通過網(wǎng)管專家梳理告警關(guān)聯(lián)規(guī)則后浮驳,再對一系列告警進行關(guān)聯(lián)規(guī)則匹配。但這種做法由于網(wǎng)絡(luò)的復(fù)雜性捞魁,設(shè)備變化的高頻性和網(wǎng)元連接經(jīng)常變化等特點抹恳,人工經(jīng)驗建立的關(guān)聯(lián)關(guān)系存在規(guī)則覆蓋不全,不能適應(yīng)網(wǎng)絡(luò)變化等問題署驻。
基于AIOps的告警關(guān)聯(lián):
通過算法能夠從大量的奋献、低價值密度健霹、有噪聲的數(shù)據(jù)中提取出有價值的告警關(guān)聯(lián)信息,動態(tài)的獲取事件的關(guān)聯(lián)關(guān)系瓶蚂,輔助運維人員決策糖埋。
基于FP-growth的告警關(guān)聯(lián)分析
什么是告警關(guān)聯(lián)分析?
基于上面的敘述窃这,我們知道瞳别,告警關(guān)聯(lián)分析就是對一次故障中產(chǎn)生的一系列告警進行壓縮和根因識別的手段。它主要目的有兩個杭攻,一個是告警的壓縮祟敛,一個是根因告警的定位。
為什么要做告警關(guān)系分析兆解?
通過告警關(guān)系分析馆铁,我們可以對故障根因進行準確定位,提升故障處理效率锅睛,并對冗余告警進行壓縮埠巨,減少故障工單派發(fā)量,從而減輕運維人員的故障處理負擔现拒,簡單來說辣垒,就是提效降本。
告警和故障的關(guān)系印蔬?
在進行關(guān)聯(lián)分析之前勋桶,有兩個概念在這里需要區(qū)分一下:故障和告警。它們是運維場景中兩個不同的概念侥猬。故障是網(wǎng)絡(luò)運行中的異常狀態(tài)例驹,故障都需要維護人員進行及時處理。告警是網(wǎng)絡(luò)設(shè)備發(fā)生特定事件后的事件通報陵究,告警只是表明可能有故障發(fā)生,但并不是一定有故障發(fā)生奥帘。故障發(fā)生后會引發(fā)一系列的告警铜邮。一個故障還可能引發(fā)其他故障,從而引起告警風暴的出現(xiàn)寨蹋。而一般告警可以分為以下幾類:
表象告警:故障造成的結(jié)果告警松蒜,往往看不出根源,需要運維人員進行進一步分析已旧。
冗余告警:同一告警在某一時間段內(nèi)的重復(fù)告警秸苗,或者一些不重要的周期性告警。
根因告警:往往是造成故障的原因的告警运褪。
波動告警:因指標波動造成的一類告警惊楼,通常不涉及到故障的發(fā)生玖瘸。
如何去做基于機器學(xué)習(xí)的告警關(guān)聯(lián)分析?
一般的做法(如下圖):
針對告警事件的特點對歷史告警數(shù)據(jù)進行預(yù)處理檀咙,生成告警事務(wù)數(shù)據(jù)雅倒;
然后選擇合適的告警關(guān)聯(lián)分析算法,對告警事務(wù)數(shù)據(jù)進行訓(xùn)練弧可,通過對模型的參數(shù)調(diào)優(yōu)蔑匣,生成告警關(guān)聯(lián)規(guī)則并得到關(guān)聯(lián)則庫;
在推理階段棕诵,將需要推理的告警通過預(yù)處理后與關(guān)聯(lián)規(guī)則庫中告警關(guān)聯(lián)規(guī)則進行匹配裁良,確定根因告警。
具體步驟
數(shù)據(jù)預(yù)處理:
常規(guī)處理:
提取對告警關(guān)聯(lián)分析有重要作用的關(guān)鍵字段校套;
剔除部分次要級別的告警以及同一時間段重復(fù)類型的告警价脾;
去除告警時間明顯異常的告警。
告警事件提壬θ贰:
告警事件彼棍,即每次故障事件所產(chǎn)生的一系列告警的集合,這是算法輸入的必要形式膳算,一般采取滑動時間窗的形式生成告警事件座硕,滑動時間窗步長的取值可以根據(jù)告警的實際情況按告警事件的時間分布,取90分位數(shù)涕蜂。告警事件的質(zhì)量和數(shù)量與滑動窗口寬度和步長的設(shè)置息息相關(guān)华匾,而告警事件作為算法的輸入則對算法的效果起到重要的作用。如下圖示例:ABCDE為告警數(shù)據(jù)机隙,滑動窗口寬度為12蜘拉,步長為7 ,通過3個滑動窗口分別得到了 3個告警事件[T1,T2,T3]有鹿。
告警權(quán)重評估:
一般而言旭旭,重要的告警發(fā)生的頻率較低,而不重要的告警發(fā)生頻率很高葱跋。因此在進行告警關(guān)聯(lián)分析時不能將告警看作平等的對象持寄,需要對重要性不同的告警設(shè)置不同的權(quán)重,這里按照告警級別娱俺、告警節(jié)點重要程度對告警進行加權(quán)求和稍味。當然該方法具有較強的主觀性,需要結(jié)合人工經(jīng)驗去設(shè)定荠卷。
告警拓撲分布:
在進行告警事務(wù)提取時不僅需要考慮時間的因素模庐,還需要考慮空間或者網(wǎng)絡(luò)拓撲的限制條件,比如根據(jù)地域或者子網(wǎng)范圍等油宜,同一地域/范圍內(nèi)的告警才可能是一類告警事件掂碱。進行此類過濾可以使后續(xù)的關(guān)聯(lián)分析結(jié)果更加準確怜姿,但同時也會增加算法的復(fù)雜度。
告警關(guān)系挖掘:
本文采用的是主流的無序關(guān)聯(lián)分析算法:FP-Growth顶吮,該算法的作用是找到項集數(shù)據(jù)中的頻繁項社牲,并生成關(guān)聯(lián)規(guī)則,較于Apriori算法具有更高的效率悴了。項集就是同時出現(xiàn)的一組項目的集合搏恤,在告警關(guān)聯(lián)分析中,一個告警事件就可以看作是一個項集湃交,項集的頻率就是支持度熟空,項集A的支持度與項集B的支持度的比值叫做置信度,它定義了關(guān)聯(lián)規(guī)則的可靠程度搞莺。提升度能夠反映關(guān)聯(lián)規(guī)則的相關(guān)性程度息罗,提升度大于1表示正相關(guān),越大表示正相關(guān)性程度越高,提升度小于1表示負相關(guān)才沧,越小負相關(guān)度程度越高迈喉,提升度等于1表示不相關(guān)。
支持度:(X→Y) = P(X,Y) / P(I) = P(X∪Y) / P(I) = num(XUY) / num(I)
置信度:(X→Y) = P(Y|X) ?= P(X,Y) / P(X) = P(XUY) / P(X)
提升度:(X→Y) = P(Y|X) / P(Y)
離線挖掘關(guān)聯(lián)關(guān)系:
當我們將歷史告警事件輸入算法后温圆,按照這三個指標進行關(guān)聯(lián)關(guān)系的過濾挨摸,最終形成一個強相關(guān)的圖。再通過社區(qū)發(fā)現(xiàn)算法(如Louvain岁歉、LPA得运、Infomap等)將關(guān)聯(lián)圖劃分為不同社區(qū)。
在線推斷壓縮告警:
我們同樣將待推斷的告警生成告警事件锅移,通過PR方法來計算各個告警的得分熔掺,推斷出此告警事件的根因告警。通過遍歷與每個社區(qū)告警事件的相似度非剃,將此類告警劃入社區(qū)置逻,實現(xiàn)告警壓縮。
補充
對于關(guān)聯(lián)規(guī)則的生成需要對大量的歷史告警進行預(yù)處理和算法生成的步驟备绽,這通常會花費不少時間券坞,影響實際使用時對算法實時性的要求,通過藍鯨計算平臺的大數(shù)據(jù)分布式處理方法疯坤,我們可以快速處理海量告警數(shù)據(jù)报慕,滿足實際應(yīng)用的實時需求深浮,快速生成最新最全的關(guān)聯(lián)規(guī)則压怠。
對于設(shè)備變化沒有那么頻繁,或者每次設(shè)備變化都能及時更新到CMDB中的運維系統(tǒng)而言飞苇,可以省略離線的關(guān)聯(lián)挖掘菌瘫,直接使用最新的設(shè)備關(guān)聯(lián)拓撲進行在線的告警壓縮和根因推斷蜗顽,同樣也可以取得不錯的效果雨让。藍鯨統(tǒng)一告警中心實現(xiàn)了對接CMDB設(shè)備拓撲的關(guān)聯(lián)分析雇盖,告警可以在通過設(shè)備的拓撲圖進行查看,輔助運維人員快速找到根因告警栖忠。
總結(jié)
告警來源的設(shè)備十分復(fù)雜崔挖,每天都可能產(chǎn)生大量的告警,其中有根源告警也有表象告警庵寞。通過基于AIOps的告警關(guān)聯(lián)分析對告警進行關(guān)系挖掘狸相,可以幫助運維人員對告警進行壓縮并快速定位根因,對于故障的排查和管理具有十分重要的意義捐川。