廖倩倩
(中國移動通信集團廣西有限公司桂林分公司,廣西桂林 541004)
隨著移動通信技術及業務的快速發展,移動通信網絡已經成為人們日常生活、工作中不可缺少的組成部分,保障移動通信網絡的良好運行已成為電信運營商的首要工作之一。
目前電信運營商普遍采用集中監控模式,各類設備的故障信息都通過告警監控平臺集中呈現。平臺每天產生海量告警,而現階段,對這些告警的處理仍然依賴維護人員自身的經驗。如何從海量的告警中找出告警之間的關聯,過濾掉衍生冗余告警,減少呈現給維護人員的告警數量,找出根源故障,已經成為當前網絡運維越來越關注的問題。
目前,廣大的科研人員及通信網絡工作者已對告警關聯技術進行了大量的研究。按照所采用技術手段的不同,現有的告警關聯技術可以分為基于相似性的方法、基于場景的方法、基于因果的方法和基于數據挖掘的方法[1]。這其中,數據挖掘方法因其挖掘的高效性成為當前研究的熱點。
關聯規則的數據挖掘研究主要集中在頻繁模式的算法上,其中Apriori算法和FP-growth算法影響力較大。相較而言,Apriori算法需多次遍歷數據庫,產生大量的候選集,效率較低;而FP-growth算法的構建只需要掃描兩遍數據庫,不需要生成候選集,因此當前得到較廣泛的采用。
也有學者提出基于動態時間彎曲曲線(DTW)的告警相關性分析[2],該方法充分利用了告警的開始時間、結束時間信息,解決了告警延遲時間變化的問題,但該算法需要計算每一個告警與其他告警的D T W 距離,若用在告警設備多、設備廠家多、告警類型多的現網中耗時較大。
綜合考慮各類方法的優缺點,本文提出一種基于動態時間窗口及告警等級加權,綜合考慮告警開始時間及結束時間,利用FP-growth算法實現告警之間關聯規則的挖掘。
本文告警相關性挖掘流程如圖1 所示。

圖1 告警相關性規則挖掘流程Fig.1 Alarm correlation rule mining process
現網中一條告警包含多個字段,而告警相關性挖掘感興趣的字段僅為告警設備、告警事件標準名、告警等級、告警開始時間、告警結束時間。因此,需要對原始的告警數據進行精簡,保留感興趣的字段即可。此外,每條告警需要有唯一的標識,本文采用“設備+告警事件標準名”做為告警的ID。同時考慮告警ID過長,為了提高效率,對告警進行編碼,如表1所示。

表1 某段時間精煉后的告警數據Tab.1 Alarm data after refining in a certain period of time

圖2 動態時間窗口Fig.2 Dynamic time window
利用FP-growth算法挖掘告警相關性,需要將告警數據轉換為告警事務。告警事務是指同時發生的若干個告警事件的集合[3]。我們認為同一個事務內的告警是在同一時間發生的,存在著相互關聯的可能性。
本文分別按歷史告警的開始時間、結束時間,采用動態時間窗口對歷史告警進行告警事務劃分,并根據告警等級進行事務權重處理。
2.2.1 動態時間窗口選取
傳統的生成告警事務的方法,通常采用固定窗口寬度、固定步長的滑動窗口,同一窗口的內的告警被認為是同一時間發生的,這種方法比較直觀,容易實現。但告警的發生在時間上并不是均勻分布,可能在某一段時間內告警量非常大,甚至由一個故障引起告警風暴,而在某些時段網絡又非常穩定,沒有告警產生。如果采用固定寬度、固定步長的時間滑動窗口,就會造成在故障頻發時無法完整充分的捕獲告警事務,而在網絡穩定的時候效率底下的問題。同時窗口的寬度以及滑動步長,都會影響到告警相關性提取的有效性,通常要反復嘗試多個值才能找出最優方案,效率較低。
為了有效的提取告警事務,本文提出了采用動態時間窗口提取告警事務的方法。通過對現網歷史告警數據進行統計,44%的告警時長在10分鐘以內。該告警持續時間內出現的其他故障告警,都可能與該告警有關聯。
因此窗口選取規則為:若本次告警發生時間,與前一個告警發生時間間隔小于10 分鐘,則認為該告警與前一告警處于同一窗口,反之則重新建立一個新窗口。為了剔除頻繁閃斷告警的影響,若窗口中一分鐘內出現過相同告警,則忽略該次告警,反之則重新建立一個新窗口。以表1 的告警數據為列,動態時間窗口從中提取出3 組告警事務,如圖2所示。

表2 告警等級權重處理Tab.2 Alarm level weight processing
2.2.2 根據告警等級進行事務權重處理
移動通信的告警按其影響程度共分為4級,根據現網告警數據統計,各級告警數量占比并不均勻,維護人員最為關注、對網絡穩定影響最大的一級告警僅占1%,二級告警占比低于20%,三級告警占比77%以上,四級告警占比低于2%。為了使需要重點關注的一、二告警不被淹沒在眾多告警中,本文提出一種根據告警等級進行事務權重處理的方法。即,當告警事務中包含一級告警,則該告警事務在告警事務庫中記錄3 次;若包含二級告警,則該告警事務記錄2次;否則該告警事務只記錄1次。如圖2提取出的告警事務,因A31是二級告警,因此該告警所在的事務在告警事務庫中記錄兩次,如表2所示。
2.2.3 提取告警結束時間的關聯性
大部分學者研究告警相關性時,僅考慮告警開始時間,未考慮告警結束時間,但告警結束時間同樣包含大量的關聯信息,如表3 所示。因此本文對告警結束時間也按照動態時間窗口(2.2.1)及告警等級權重(2.2.2)進行告警事務劃分,并作為分析數據與告警開始時間事務集一起進行FP-growth頻繁項計算。
采用FP-growth算法對提取出來的告警事務集挖掘各次頻繁項集。第1次掃描事務數據庫獲得頻繁1項集,并排序作為項頭表。第2次掃描事務數據庫,建立FP-Tree樹,得出頻繁項集。
告警規則的制定普遍使用的兩個指標:Support(支持度)、Confidence(置信度)。支持度是指告警事件出現的頻度。置信度是指在產生告警A 的前提下,產生告警B 的概率。
一個有效的告警關聯規則,必須同時具有較高的置信度與支持度。但即使滿足最小支持度、最小置信度,仍然不一定是維護人員感興趣的有效規則,需經過專家篩選。
根據告警管理要求與告警自身含義與時間窗的關系分為:主次告警關聯模型與衍生告警關聯模型[4]。本文從歷史告警中提取告警規則主要針對主次告警規則模型。
主次告警又可以分為串行模式和并發模式。

表3 告警開始時間、結束時間提取事務對比Tab.3 Comparison of alarm start time and end time extraction transactions
串行模式:當告警A發生后,必然有告警B發生,告警A是告警B發生的根源,當告警A恢復后,告警B也自動恢復[5]。本文用符號“->”表示,將多條串行模式告警簡化歸并為一條根源告警, 以減少呈現給維護人員的告警數量,同時幫助維護人員快速定位故障根源。
并發模式:當告警A發生時,必然有告警B發生,但出現的先后順序不一定。本文用符號“&”表示,多條并發模式告警集可以合并為一個合告警,以減少告警數量。
告警A、告警B可以是某一個告警,也可以是某幾個告警組成的告警集。
本文采用廣西移動公司某地市局站連續2個月的動力系統告警作為樣本進行分析,分別采用4 種算法進行測試,如表4所示,頻繁度設置為3%,置信度80%。
從實驗數據得出,如圖3所示,告警相關性算法的執行85%以上的時間耗費在告警事務的提取上,本文提出的動態時間窗口提取事務的算法耗時明顯低于傳統的固定滑動窗口算法。即使在算法中加入權重處理、及對告警結束時間提取事務,所用時間仍然低于傳統的固定滑動窗口算法。
對比算法1和算法2,傳統的固定滑動窗口提取出241條事務,本文提出的動態時間窗口提取出115條事務,如圖4 所示。較傳統的固定滑動窗口,本文提出的動態時間窗口將事務數精簡掉5 2.3%,提取出的規則數不但沒減少,反而提升了33.3%。

表4 測算算法Tab.4 Calculation algorithm

圖4 事務數量Fig.4 Number of transactions

表5 有效規則Tab.5 Effective rules
對比算法2和算法3,若僅僅采用動態時間窗口,則對發生頻率小,但意義重大的一、二級告警不敏感,導致很多重要規則丟失。增加了告警等級權重算法后,提取出的規則數較單純采用動態時間窗提升了50.0%。
對比算法3和算法4,增加告警結束時間的挖掘后,規則的準確性進一步提升。如表5所示,檢測出序號2和序號5的規則合并為一條,同時剔除了序號9規則。
為了有效的找出告警之間的關聯性,本文提出了一種基于動態時間窗口及告警等級權重,綜合考慮告警開始時間及結束時間,利用FP-growth算法實現告警之間關聯規則挖掘的算法。通過實驗證明,與傳統的滑動窗口提取事務相比,該算法的執行耗時較少,提取出的規則較為全面和準確,對于快速定位根源故障,減少告警數量具有重大意義。未來的研究方向和工作包括但不限于: 采用Spark技術進行規則挖掘;針對網絡設備的增減、網絡拓撲的調整進行告警關聯規則增量挖掘。