徐冰珂,周宇喆,楊茂林,謝遠(yuǎn)航,李曉瑜,雷 航
(1.電子科技大學(xué) 信息與軟件工程學(xué)院,成都 610054; 2.北京思特奇信息技術(shù)股份有限公司,北京 100046)(*通信作者電子郵箱maolyang@126.com)
電信網(wǎng)絡(luò)中軟硬件系統(tǒng)通過通信網(wǎng)絡(luò)相互連接,當(dāng)某些網(wǎng)絡(luò)組件發(fā)生故障或存在故障隱患而發(fā)生告警時(shí),與其相關(guān)聯(lián)的其他組件可能隨之發(fā)生告警,從而形成告警鏈。準(zhǔn)確分析和定位告警根源成為智慧網(wǎng)絡(luò)運(yùn)營面臨的重要課題[1]。然而,由于網(wǎng)絡(luò)組件間的調(diào)用關(guān)系復(fù)雜且網(wǎng)絡(luò)監(jiān)控指標(biāo)種類多樣,網(wǎng)絡(luò)監(jiān)控中心可能持續(xù)接收大量告警信息。根據(jù)北京思特奇信息技術(shù)股份有限公司(http://www.si-tech.com.cn)所提供的數(shù)據(jù),一個(gè)網(wǎng)絡(luò)監(jiān)控中心可能涉及數(shù)萬個(gè)告警元(即:發(fā)生告警的最小單元),且每小時(shí)可能接收數(shù)百條告警信息。通過樣例分析發(fā)現(xiàn),少數(shù)網(wǎng)絡(luò)組件頻繁發(fā)生告警,且這些告警往往由網(wǎng)絡(luò)負(fù)載變化所引發(fā),并非嚴(yán)重的網(wǎng)絡(luò)故障。這些發(fā)生頻率高而重要程度低的告警信息對網(wǎng)絡(luò)故障分析與診斷造成較大干擾。為此,本文提出一種告警過濾算法對網(wǎng)絡(luò)告警進(jìn)行預(yù)處理,以減少網(wǎng)絡(luò)監(jiān)控中心處理的告警量,同時(shí)提高網(wǎng)絡(luò)告警根源定位的準(zhǔn)確性。
網(wǎng)絡(luò)故障定位與診斷已有近30年研究歷史[1-2],相關(guān)研究主要包括:第一,基于網(wǎng)絡(luò)系統(tǒng)中抽象出的專家經(jīng)驗(yàn),采用規(guī)則推理、神經(jīng)網(wǎng)絡(luò)、決策樹、邏輯回歸等人工智能技術(shù)進(jìn)行故障判定[3-6];第二,基于網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)信息,采用依賴圖、貝葉斯網(wǎng)絡(luò)等圖論技術(shù)進(jìn)行故障溯源[7-9];第三,基于網(wǎng)絡(luò)組件間的調(diào)用關(guān)系,采用模型追溯技術(shù)進(jìn)行網(wǎng)絡(luò)故障根源分析[10-11]。然而,在大規(guī)模電信網(wǎng)絡(luò)中,由于難以準(zhǔn)確獲取和維護(hù)網(wǎng)絡(luò)拓?fù)?、調(diào)用關(guān)系等專家信息,使得上述方法的應(yīng)用受到不同程度的限制。不同于傳統(tǒng)研究方法,本文基于告警歷史數(shù)據(jù)采用規(guī)則過濾的方法研究告警過濾問題,本文算法不依賴于既有的物理網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)和網(wǎng)絡(luò)組件間的調(diào)用關(guān)系,因而具有更強(qiáng)的通用性。
在告警過濾相關(guān)研究方面,Wang等[12]根據(jù)各類告警的持續(xù)時(shí)間分布,提出一種動態(tài)閾值設(shè)定方法FTD(Flexible Transient flapping Determination)用于過濾持續(xù)時(shí)間相對短的告警。本文算法是對該方法的擴(kuò)展,在分析告警持續(xù)時(shí)間分布的基礎(chǔ)上對告警頻率、影響力等進(jìn)行綜合分析。閆生超等[13]結(jié)合貝葉斯模型,提出一種基于組合規(guī)則的告警過濾器模型。王保義等[14]針對全局網(wǎng)絡(luò)拓?fù)浜透婢卣鳂?gòu)建依賴搜索樹模型,利用聚類關(guān)聯(lián)將一類告警節(jié)點(diǎn)用類中心代替,從而實(shí)現(xiàn)告警過濾。石永革等[15]與張現(xiàn)飛等[16]采用分層過濾機(jī)制構(gòu)建告警過濾規(guī)則,通過逐層收斂確定需要過濾的告警。然而,文獻(xiàn)[13-16]側(cè)重于策略與框架研究,尚無數(shù)據(jù)實(shí)例支撐。本文在模型框架研究基礎(chǔ)上進(jìn)一步設(shè)計(jì)并分析了告警過濾算法。
電信網(wǎng)絡(luò)中,由于網(wǎng)絡(luò)負(fù)載變化以及告警閾值設(shè)置等原因,使得網(wǎng)絡(luò)中出現(xiàn)大量頻繁發(fā)生且持續(xù)時(shí)間較短的告警。為了對網(wǎng)絡(luò)告警進(jìn)行合理的預(yù)處理,對我國某省電信運(yùn)營監(jiān)控中心2016年連續(xù)4個(gè)月的約70萬條告警數(shù)據(jù)作量化分析(數(shù)據(jù)來源于北京思特奇信息技術(shù)股份有限公司)。分析發(fā)現(xiàn)告警數(shù)據(jù)具有如下特征:
首先,不同告警元所產(chǎn)生的告警量分布不均勻,大多數(shù)告警由少量告警元產(chǎn)生。由于告警閾值設(shè)置以及網(wǎng)絡(luò)負(fù)載動態(tài)變化等原因,一部分告警元可能頻繁發(fā)生告警。例如,為了監(jiān)測CPU負(fù)載,設(shè)置CPU利用率高于95%時(shí)觸發(fā)告警,則當(dāng)計(jì)算密集型應(yīng)用執(zhí)行或系統(tǒng)短暫過載時(shí)均可能觸發(fā)CPU利用率告警。與其他關(guān)鍵故障所觸發(fā)的告警(如硬盤損壞、數(shù)據(jù)庫故障等)相比,CPU利用率告警的數(shù)量明顯更高。通過統(tǒng)計(jì)各告警元的告警量,計(jì)算告警量最大的前x個(gè)告警元所產(chǎn)生的告警占總告警量的比例,得到告警量分布如圖1所示。統(tǒng)計(jì)分析發(fā)現(xiàn),由約1.4萬個(gè)告警元所產(chǎn)生的告警中,告警量最大的2 000個(gè)告警元(約占15%)所產(chǎn)生的告警量占總告警量的約90%。
圖1 高頻告警示意圖Fig. 1 High-frequency alarm diagram
第二,對于告警量大的告警元所產(chǎn)生的告警,其持續(xù)時(shí)間(即:從告警入庫到消除的時(shí)間)往往較短。通過分析樣本集中所有告警的持續(xù)時(shí)間,算得告警平均持續(xù)時(shí)間約為302 min。取告警量最大的10個(gè)告警元,分別統(tǒng)計(jì)持續(xù)時(shí)間小于15 min、30 min、45 min的告警所占比例,如表1所示。以告警元A為例,在其發(fā)生的3 874次告警中,持續(xù)時(shí)間小于15 min的告警所占比例超過76%。從統(tǒng)計(jì)學(xué)的角度,該告警元所產(chǎn)生的告警在15 min內(nèi)消除的概率超過76%,在45 min內(nèi)消除的概率超過92%。由此可預(yù)測,告警元A未來發(fā)生告警時(shí)其持續(xù)時(shí)間小于平均持續(xù)時(shí)間302 min的可能性較大。
表1 告警量最大的10個(gè)告警元存活時(shí)間分布Tab. 1 Survival time distribution of 10 alarm element with maximum amount of alarms
進(jìn)一步分析發(fā)現(xiàn),這些高頻且短暫的告警通常為CPU利用率告警、內(nèi)存使用率告警、日志類告警等。這些告警往往受網(wǎng)絡(luò)瞬時(shí)負(fù)載影響,當(dāng)網(wǎng)絡(luò)負(fù)載趨于平穩(wěn)時(shí)相應(yīng)的告警會自動消失,因而通常不是網(wǎng)絡(luò)故障的根源。
第三,告警量大的告警元發(fā)生告警的時(shí)間密度較穩(wěn)定。以表1中的告警元A為例,將告警元A的告警記錄按時(shí)間先后排序,并計(jì)算各個(gè)告警記錄離第一條告警記錄的時(shí)間間隔(以小時(shí)為單位),結(jié)果如圖2所示??梢?上述時(shí)間間隔呈現(xiàn)明顯的線性分布,這表明告警元A發(fā)生告警的時(shí)間密度(或頻率)比較穩(wěn)定。
圖2 高頻告警時(shí)間分布Fig. 2 Time distribution of high-frequency alarms
第四,網(wǎng)絡(luò)告警量隨時(shí)間變化。系統(tǒng)運(yùn)行期間動態(tài)的需求變化、業(yè)務(wù)增減、技術(shù)升級、系統(tǒng)更換等,使得網(wǎng)絡(luò)結(jié)構(gòu)與應(yīng)用邏輯不斷發(fā)生改變,因此,單位時(shí)間內(nèi)的告警量也隨之變化。以連續(xù)5天內(nèi)整個(gè)網(wǎng)絡(luò)系統(tǒng)發(fā)生的告警數(shù)量為一個(gè)統(tǒng)計(jì)單元,系統(tǒng)告警量隨時(shí)間變化的情況如圖3所示。可見,第一個(gè)月的告警量明顯大于隨后各個(gè)月的告警量。
圖3 告警量分布Fig. 3 Distribution of amount of alarms
綜合上述告警數(shù)據(jù)特征可知,少量告警元可能發(fā)生大量持續(xù)時(shí)間短的非關(guān)鍵告警,為此,設(shè)計(jì)告警過濾算法對這類告警進(jìn)行合理篩除。為了更準(zhǔn)確識別非關(guān)鍵告警,本章首先引入告警影響力和高頻瞬態(tài)告警的定義。
網(wǎng)絡(luò)系統(tǒng)中的軟硬件依賴關(guān)系使得網(wǎng)絡(luò)故障具有傳遞性,當(dāng)一個(gè)網(wǎng)絡(luò)組件發(fā)生告警后,與其相關(guān)聯(lián)的其他軟硬件組件可能隨之發(fā)生告警。從時(shí)序角度,告警元A引發(fā)另一告警元B發(fā)生告警的必要條件是告警元A發(fā)生告警后告警元B發(fā)生告警。因此,通過分析一個(gè)告警發(fā)生后有多少告警隨之發(fā)生,以衡量一個(gè)告警的重要程度。如果一個(gè)告警發(fā)生后隨之發(fā)生的告警越多,則認(rèn)為該告警越重要。為此,定義告警影響力如下。
定義1 若告警元A的一個(gè)告警實(shí)例A.a的持續(xù)時(shí)間為T,且在此期間有N個(gè)其他告警元發(fā)生告警,則A.a的影響力FA,a為:
FA.a=N/T
(1)
根據(jù)定義1,如果在一個(gè)告警存活期間發(fā)生告警的其他有效告警元越密集,則該告警的影響力越大。在一個(gè)樣本集內(nèi),如果告警元A發(fā)生了多次告警(有多個(gè)告警實(shí)例),則將告警元A在該樣本集內(nèi)的影響力定義為其所有告警實(shí)例影響力的算術(shù)平均值。
定義2 若告警元A在一段時(shí)間內(nèi)發(fā)生了m次告警,則告警元A在這段時(shí)間內(nèi)的影響力FA為:
(2)
上述告警影響力定義是從數(shù)據(jù)統(tǒng)計(jì)的角度衡量告警的衍生性,因此不需要針對具體系統(tǒng)的專家知識。進(jìn)行告警過濾時(shí),應(yīng)避免影響力大的告警元所產(chǎn)生的告警被過濾掉。
告警過濾的直接目的是減少告警量。根據(jù)告警數(shù)據(jù)特征可知少量高頻告警所產(chǎn)生的告警量較大,而持續(xù)時(shí)間短的瞬態(tài)告警往往重要程度偏低。因此,在告警過濾時(shí)優(yōu)先考慮篩除發(fā)生頻率高,持續(xù)時(shí)間短,告警影響力低的告警以減少告警量。為此,定義如下高頻瞬態(tài)告警。
定義3 給定包含N個(gè)告警元的樣本集和參數(shù)組(α,β,χ,δ),假設(shè)所有告警實(shí)例的平均存活時(shí)間為W,若任意告警元A的一個(gè)實(shí)例A.a滿足以下條件,則稱A.a為高頻瞬態(tài)告警。
1)告警元A屬于告警量最大的前α%告警元之一;
2)告警元A的平均存活時(shí)間小于βW;
3)告警元A屬于影響力最小的前χ%告警元之一;
4)對于告警元A的所有告警實(shí)例,A.a屬于持續(xù)時(shí)間最小的前δ%之一。
根據(jù)定義3,對于任意給定樣本集,W可通過樣本統(tǒng)計(jì)獲得,參數(shù)組(α,β,χ,δ)可根據(jù)實(shí)際需要進(jìn)行配置。
基于以上定義的高頻瞬態(tài)告警設(shè)計(jì)告警過濾算法。實(shí)際應(yīng)用中,告警過濾可分為離線過濾和在線過濾,分別應(yīng)用于數(shù)據(jù)樣本離線分析以及實(shí)時(shí)告警在線過濾。前者針對告警數(shù)據(jù)記錄進(jìn)行預(yù)處理,可用于數(shù)據(jù)訓(xùn)練等;后者針對實(shí)時(shí)告警信息,可用于告警屏蔽或延緩告警處理等。如圖4所示,在智能告警根源分析系統(tǒng)中,歷史告警數(shù)據(jù)通過數(shù)據(jù)清洗后進(jìn)行離線過濾,將過濾后的數(shù)據(jù)樣本用于后續(xù)告警關(guān)聯(lián)、權(quán)重訓(xùn)練等離線分析;同時(shí),相應(yīng)的過濾參數(shù)被存儲起來用于在線過濾——當(dāng)一條實(shí)時(shí)告警信息傳入監(jiān)控中心時(shí),在線過濾部分用于判斷是否忽略或延遲處理該告警。
圖4 告警過濾框架Fig. 4 Alarm filtering framework
離線分析處理的數(shù)據(jù)為歷史告警記錄,因此每條告警數(shù)據(jù)均有確切的持續(xù)時(shí)間,可通過數(shù)據(jù)統(tǒng)計(jì)獲得告警平均持續(xù)時(shí)間W。通過逐條判斷定義3的各項(xiàng)條件,可以確定每條告警記錄是否屬于高頻瞬態(tài)告警。若屬于高頻瞬態(tài)告警,則將其從數(shù)據(jù)樣本中刪除,否則保留。離線分析算法偽代碼如下:
輸入 告警數(shù)據(jù)樣本集S,參數(shù)組(α,β,χ,δ)。
輸出 過濾后的告警數(shù)據(jù)集S′。
S′=S
W=ave_alive(S)
// 計(jì)算告警平均持續(xù)時(shí)間
FORA.ainS:
IF A_is_freq(A,α)==TURE:
// 符合定義3的條件1)
IF A_ave_alive(A) <βW:
// 符合定義3的條件2)
IF A_impact(A) <χ:
// 符合定義3的條件3)
IF alive(A.a,δ)==TURE:
// 符合定義3的條件4)
RemoveA.afromS′
// 過濾掉A.a
RETURNS′
以上離線分析算法中,統(tǒng)計(jì)各告警元的告警量、計(jì)算告警平均持續(xù)時(shí)間,以及計(jì)算所有告警元的影響力均需要遍歷所有告警實(shí)例一次,令n為告警數(shù)據(jù)樣本的告警記錄數(shù),則時(shí)間復(fù)雜度為O(n)。在此基礎(chǔ)上,進(jìn)行告警過濾需要重新遍歷所有告警實(shí)例一次,因此算法整體時(shí)間復(fù)雜度為O(n)。
對于在線分析,告警平均持續(xù)時(shí)間W需要由離線分析部分提供。同時(shí),由于實(shí)時(shí)告警的持續(xù)時(shí)間是變量,因此需要周期性判斷當(dāng)前告警的持續(xù)時(shí)間是否滿足定義3中的條件4)。對于某個(gè)告警實(shí)例A.a,若定義3的前三個(gè)條件均滿足而條件4)不滿足,則延遲處理A.a直到條件4)滿足;否則,觸發(fā)告警處理程序。在線過濾流程如圖5所示。
為了評估本文算法性能,設(shè)計(jì)單因素實(shí)驗(yàn)分析參數(shù)組(α,β,χ,δ)中各參數(shù)對告警過濾量的影響;同時(shí),將本文算法與FTD算法[12]進(jìn)行比較。
將我國某省電信運(yùn)營監(jiān)控中心2016年連續(xù)4個(gè)月的約70萬條告警記錄作為測試數(shù)據(jù),通過單因素實(shí)驗(yàn)分別測試告警過濾量隨參數(shù)α、β、χ、δ增大的變化趨勢,將算法過濾掉的告警量占數(shù)據(jù)樣本告警總量的比例作為評估標(biāo)準(zhǔn)。令壓縮比Φ表示過濾掉的告警量與告警總量的比值,Φ值越大表示過濾掉的告警數(shù)量越多。為了統(tǒng)一參數(shù)量級,令α′=α/100,χ′=χ/100,δ′=δ/100。實(shí)驗(yàn)參數(shù)設(shè)置如表2所示。
表2 實(shí)驗(yàn)參數(shù)Tab. 2 Experimental parameters
圖5 在線過濾流程Fig. 5 Online filtering flow chart
圖6 參數(shù)變化對壓縮比的影響Fig. 6 Effect of parameter changes on compression ratio
從圖6所示的實(shí)驗(yàn)結(jié)果可看出,在單因素實(shí)驗(yàn)中壓縮比Φ隨各參數(shù)數(shù)值增大而增大。
1)參數(shù)α′。
Φ在α′∈[0.01,0.09]區(qū)間內(nèi)迅速增長,在α′>0.11后趨于平緩。根據(jù)圖1所示告警數(shù)據(jù)特征,告警量最大的1%告警元所產(chǎn)生的告警量與告警量最大的9%告警元所產(chǎn)生的告警量分別占總告警量的約26.7%和79.7%。在這一區(qū)間,符合定義3條件1)的告警數(shù)量隨α′增長而迅速增加,因此可能被過濾的告警量也隨之增加。當(dāng)α′>0.11,隨α′值增大而增加的總告警量明顯變少,可能被過濾的告警量增速也相應(yīng)趨緩。
2)參數(shù)β和χ′。
Φ隨β和χ′的增長而持續(xù)增長,且增長幅度相似,這是因?yàn)樘岣吒婢骄掷m(xù)時(shí)間閾值和提高告警影響力閾值都可能使得更多告警成為高頻瞬態(tài)告警,因而增加了被過濾的概率。
3)參數(shù)δ′。
Φ在δ′<0.11時(shí)增長變化較快,在δ′ > 0.11后增長速度趨于平緩。根據(jù)表1所示告警數(shù)據(jù)特征可推知,高頻告警元所產(chǎn)生的告警持續(xù)時(shí)間往往遠(yuǎn)小于告警平均持續(xù)時(shí)間。表1數(shù)據(jù)顯示,告警量最大的前10個(gè)告警元所產(chǎn)生的告警中,持續(xù)時(shí)間小于平均告警時(shí)間10%(即:告警持續(xù)時(shí)間小于30 min)的告警超過70%。因此,在δ′<0.11時(shí)滿足定義3條件4)的告警量隨δ′增大而快速增加,被過濾掉的告警數(shù)量也相應(yīng)快速增長。
為了驗(yàn)證告警過濾算法的準(zhǔn)確性,將本文算法與FTD算法[12]進(jìn)行對比。首先,基于現(xiàn)有的行業(yè)應(yīng)用數(shù)據(jù),在實(shí)驗(yàn)樣本數(shù)據(jù)所涉及的1.46萬類告警中標(biāo)記出0.49萬個(gè)“重點(diǎn)關(guān)注類”告警(占比約為34%)。隨后,在兩種算法壓縮比接近的情況下,分別統(tǒng)計(jì)兩種算法過濾掉的告警中“重點(diǎn)關(guān)注類”告警所占比例。相對于其他告警,“重點(diǎn)關(guān)注類”告警更可能是潛在的告警根源,因此認(rèn)為在過濾掉的告警中,該類告警所占的比例越低則算法的準(zhǔn)確性越高。
表3為不同壓縮比條件下,本文算法與FTD算法過濾的告警中“重點(diǎn)關(guān)注類”告警的占比。實(shí)驗(yàn)結(jié)果顯示,本文算法過濾的告警中“重點(diǎn)關(guān)注類”告警的占比均低于FTD算法。例如實(shí)驗(yàn)三中,兩種算法的壓縮比均為0.17,FTD算法“重點(diǎn)關(guān)注類”告警占比為0.21,而本文算法占比為0.17。可見,本文算法在告警過濾的準(zhǔn)確性上優(yōu)于FTD算法。
表3 本文算法和FTD算法的對比實(shí)驗(yàn)結(jié)果Tab. 3 Experimental results comparison of proposed algorithm and FTD algorithm
本文基于電信網(wǎng)絡(luò)告警數(shù)據(jù)分析了網(wǎng)絡(luò)告警的基本特點(diǎn),并提出了告警影響力以及高頻瞬態(tài)告警概念。在此基礎(chǔ)上,提出了O(n)復(fù)雜度的告警過濾算法,該算法可應(yīng)用于面向告警數(shù)據(jù)的離線分析和在線過濾。通過單因素實(shí)驗(yàn)分析了算法中各參數(shù)對算法性能的影響。實(shí)驗(yàn)結(jié)果顯示,算法各參數(shù)與告警過濾量正相關(guān)。對比實(shí)驗(yàn)顯示,本文算法在壓縮比相同的條件下比FTD算法具有更高的準(zhǔn)確性。后續(xù)工作將進(jìn)一步研究過濾參數(shù)的優(yōu)化配置與動態(tài)閾值調(diào)整等相關(guān)技術(shù)。
致謝 感謝北京思特奇信息技術(shù)股份有限公司徐慶洲,以及電子科技大學(xué)王自升、常煜、陳丹、李趙寧、楊開勇、張世俊、張子恒、張翔等同學(xué)對本文算法以及實(shí)驗(yàn)工作的幫助與支持。