郭洪波,李煒,王晶
(1 北京郵電大學(xué)網(wǎng)絡(luò)與交換技術(shù)國家重點(diǎn)實(shí)驗(yàn)室,北京 100876;2 東信北郵信息技術(shù)有限公司,北京 100191)
告警關(guān)聯(lián)分析主要應(yīng)用于故障定位的維護(hù)任務(wù)場景,它的基本思路是在網(wǎng)絡(luò)產(chǎn)生的大量告警中通過對(duì)不同告警的關(guān)聯(lián)來有效地識(shí)別對(duì)故障的產(chǎn)生具有主要影響作用的告警(稱為根源告警),而由根源告警派生出的對(duì)故障影響較小的告警(稱為結(jié)果告警)經(jīng)過特定的告警操作(如:抑制、壓縮或延遲等)不再實(shí)時(shí)地呈現(xiàn)給網(wǎng)絡(luò)維護(hù)人員,使他們能集中處理故障的根源告警,盡快地定位故障[1]。
本文在分析比較目前流行的幾種告警關(guān)聯(lián)分析方法后,提出了一種基于數(shù)據(jù)挖掘的適用于增值業(yè)務(wù)網(wǎng)管系統(tǒng)的告警關(guān)聯(lián)分析模型。研究如何有效地利用數(shù)據(jù)挖掘中的關(guān)聯(lián)規(guī)則挖掘工具,分析歷史告警信息,得到告警之間的關(guān)聯(lián)規(guī)則,這些規(guī)則既可用于幫助維護(hù)人員定制關(guān)聯(lián)規(guī)則,從而及時(shí)定位故障。
告警關(guān)聯(lián)分析指兩個(gè)或多個(gè)告警之間的關(guān)聯(lián)關(guān)系,其最終目的是從海量告警中找出根源告警,快速定位故障,對(duì)于派生的對(duì)故障影響較小的告警經(jīng)過特定的告警操作不再實(shí)時(shí)呈現(xiàn)給維護(hù)人員,使維護(hù)人員能集中關(guān)注處理故障的根源告警。
依賴:如果B告警發(fā)生的前提是A告警,則稱B依賴于A。
派生:如果A告警發(fā)生后,將引發(fā)B告警,則稱A派生B。
同源:如果A和B告警的發(fā)生,都是源于C(C可能為某故障),則稱A和B為同源。
推測:其他關(guān)聯(lián)關(guān)系,隨著研究的深入,可對(duì)推測關(guān)系再進(jìn)行細(xì)分。
常見的告警關(guān)聯(lián)分析技術(shù)有以下幾種:基于因果關(guān)系的告警關(guān)聯(lián)分析、基于代碼簿的告警關(guān)聯(lián)分析、基于模型推理的告警關(guān)聯(lián)分析、基于事例推理的告警關(guān)聯(lián)分析、基于規(guī)則的告警關(guān)聯(lián)分析、基于數(shù)據(jù)挖掘的告警關(guān)聯(lián)分析等。
除數(shù)據(jù)挖掘外上述其他關(guān)聯(lián)關(guān)系分析技術(shù)或需要人工輔助優(yōu)化推理方法、或需要領(lǐng)域?qū)<叶ㄖ脐P(guān)聯(lián)規(guī)則、或無法適應(yīng)不斷變化的網(wǎng)絡(luò)模型,需要大量日常維護(hù)工作量,因此數(shù)據(jù)挖掘技術(shù)在告警關(guān)聯(lián)分析中的應(yīng)用應(yīng)運(yùn)而生。數(shù)據(jù)挖掘是在海量數(shù)據(jù)中發(fā)現(xiàn)新模式的一種分析技術(shù),它在解決告警關(guān)聯(lián)分析問題時(shí)首先通過大量歷史告警的一些統(tǒng)計(jì)規(guī)律來發(fā)現(xiàn)告警關(guān)聯(lián)規(guī)則,然后根據(jù)規(guī)則分析和預(yù)測網(wǎng)絡(luò)中可能出現(xiàn)的故障。和以上的幾種技術(shù)相比,告警關(guān)聯(lián)分析技術(shù)對(duì)網(wǎng)絡(luò)的具體結(jié)構(gòu)或組成不需要深層次的掌握,而主要從有效的歷史告警數(shù)據(jù)集合中依靠挖掘工具確定告警關(guān)聯(lián)規(guī)則。數(shù)據(jù)挖掘技術(shù)特別適用于沒有具體的網(wǎng)絡(luò)模型作為確定告警關(guān)聯(lián)關(guān)系的依據(jù)的應(yīng)用場合[2]。
關(guān)聯(lián)規(guī)則描述不同事物之間的相互依存性和關(guān)聯(lián)性,關(guān)聯(lián)規(guī)則的基本模型是:
給定一個(gè)事務(wù)集D,挖掘關(guān)聯(lián)規(guī)則問題就是產(chǎn)生支持度和可信度分別大于用戶給定的最小支持度(min_supp)和最小可信度(min_conf)的關(guān)聯(lián)規(guī)則[4]。
告警預(yù)處理所實(shí)施的對(duì)象為一段時(shí)間內(nèi)的可信歷史告警數(shù)據(jù)。告警預(yù)處理用于對(duì)歷史告警信息進(jìn)行整理、過濾、事務(wù)化等操作,形成可直接用于關(guān)聯(lián)規(guī)則挖掘的數(shù)據(jù)。
3.1.1 告警信息整理
由于告警信息中包含許多無需關(guān)注的內(nèi)容和冗余信息,故需要提取出關(guān)鍵信息,便于數(shù)據(jù)挖掘的實(shí)施。
增值業(yè)務(wù)網(wǎng)管系統(tǒng)的每條告警信息都由一個(gè)三元組來標(biāo)識(shí),即告警設(shè)備(agentdn)、告警碼(alarmcode)、告警實(shí)例(instance)。其中告警設(shè)備包括觸發(fā)告警的網(wǎng)元、主機(jī)、賬戶信息;每個(gè)告警碼唯一標(biāo)識(shí)一類問題,例如告警碼“0403”代表主機(jī)磁盤空間不足;告警實(shí)例用于具體定位設(shè)備或軟件出問題的具體細(xì)化位置。同一時(shí)間點(diǎn),所有活動(dòng)告警的三元組信息都唯一。
為了適應(yīng)數(shù)據(jù)挖掘的需要,除了提取歷史告警中每條告警的三元組信息外,還要提取產(chǎn)生時(shí)間(eventtime)信息、清除時(shí)間(cleartime)信息,以此作為下一步預(yù)處理的基礎(chǔ)。
3.1.2 告警過濾
由于歷史告警中包含有可能對(duì)分析結(jié)果產(chǎn)生影響的告警,故需要進(jìn)行過濾操作。過濾的原則有如下幾種:
過濾掉由于人為升級(jí)或割接引起的預(yù)知告警。一般根據(jù)告警時(shí)間和設(shè)備信息進(jìn)行過濾,例如過濾掉由于某天晚上0點(diǎn)至2點(diǎn)對(duì)SCP1進(jìn)行升級(jí)觸發(fā)的告警信息。
過濾掉頻繁的瞬斷告警。瞬斷告警一般由于網(wǎng)絡(luò)或其它不穩(wěn)定因素造成,且發(fā)送間隔較均勻、告警很快恢復(fù)。一般情況下若此類告警量比例較高,會(huì)降低其它有效告警在整個(gè)事務(wù)數(shù)據(jù)庫中的支持度(support),從而影響到相關(guān)性分析結(jié)果的準(zhǔn)確性。
3.1.3 告警事務(wù)化
告警事務(wù)化的目的是形成關(guān)聯(lián)規(guī)則挖掘所需要的事務(wù)數(shù)據(jù)庫。事務(wù)化方法包括如下幾步:
(1)提取每條告警的三元組信息,按照告警產(chǎn)生時(shí)間進(jìn)行排序。將經(jīng)過告警過濾后的告警信息中的告警設(shè)備(agentdn)、告警碼(alarmcode)和告警實(shí)例進(jìn)行合并,與觸發(fā)時(shí)間進(jìn)行映射,并按照觸發(fā)時(shí)間進(jìn)行排序處理。形式如表1所示(使用某省份彩鈴系統(tǒng)歷史告警數(shù)據(jù))。
表1 按時(shí)間排序的告警信息
(2)形成關(guān)聯(lián)規(guī)則挖掘所需的項(xiàng)集。考慮到告警三元組信息中“告警實(shí)例”的取值比較廣泛,不容易將其離散化;另外考慮到告警設(shè)備中的“集群名稱”和“賬戶名稱”都通過告警主機(jī)名和告警碼推斷出來;最后將主機(jī)名與告警碼進(jìn)行笛卡爾積后形成數(shù)據(jù)挖掘所需的項(xiàng)集。例如根據(jù)表1得到如下項(xiàng)集:
即在一個(gè)告警事務(wù)中,項(xiàng)集中的各個(gè)項(xiàng)可取true或false,挖掘出的規(guī)則為布爾關(guān)聯(lián)規(guī)則。
(3)將在同一折疊時(shí)間窗口內(nèi)的告警形成一個(gè)事務(wù)。設(shè)定的折疊時(shí)間窗口為Nmin,即認(rèn)為告警產(chǎn)生時(shí)間在Nmin內(nèi)的所有告警都屬于一個(gè)告警事務(wù)。然后按照告警產(chǎn)生時(shí)間,將告警產(chǎn)生時(shí)間在同一時(shí)間折疊窗口內(nèi)的告警組織成一個(gè)個(gè)告警事務(wù)。假設(shè)N為5,則根據(jù)表1可得到如表2所示的事務(wù)集(1代表true,2代表false)。
表2 經(jīng)過事務(wù)化后的告警事務(wù)
(4)根據(jù)上述信息可以確定待生成的關(guān)聯(lián)規(guī)則類型為單維布爾關(guān)聯(lián)規(guī)則。
3.2.1 Apriori算法簡介
Apriori算法是挖掘產(chǎn)生布爾關(guān)聯(lián)規(guī)則所需頻繁項(xiàng)集的基本算法;它也是一個(gè)很有影響的關(guān)聯(lián)規(guī)則挖掘算法。Apriori算法就是根據(jù)有關(guān)頻繁項(xiàng)集特性的先驗(yàn)知識(shí)(prior knowledge)而命名的。該算法利用了一個(gè)層次順序搜索的循環(huán)方法來完成頻繁項(xiàng)集的挖掘工作。這一循環(huán)方法就是利用k-項(xiàng)集來產(chǎn)生(K+1)項(xiàng)集。具體做法就是:首先找出頻繁1-項(xiàng)集,記為L1;然后利用L1來挖掘L2,即頻繁2-項(xiàng)集;不斷如此循環(huán)下去直到無法發(fā)現(xiàn)更多的頻繁k-項(xiàng)集為止。每挖掘一層Lk就需要掃描整個(gè)數(shù)據(jù)庫一遍[4,5]。
在從數(shù)據(jù)庫中挖掘出所有的頻繁項(xiàng)集后,就可以較為容易獲得相應(yīng)的關(guān)聯(lián)規(guī)則。也就是要產(chǎn)生滿足最小支持度和最小信任度的強(qiáng)關(guān)聯(lián)規(guī)則。方法為:
(1)對(duì)于每個(gè)頻繁項(xiàng)集l,產(chǎn)生l的所有非空子集;
(2)對(duì)于每個(gè)l的非空子集s,若support_count(l)/support_count(s)大于等于最小信任度閥值,則產(chǎn)生一個(gè)關(guān)聯(lián)規(guī)則“s≥(s-l)”[4]。
3.2.2 使用挖掘工具產(chǎn)生關(guān)聯(lián)規(guī)則介紹
選擇挖掘工具:本實(shí)驗(yàn)選用了Orange version 2.0b進(jìn)行告警關(guān)聯(lián)規(guī)則的挖掘。將測試數(shù)據(jù)導(dǎo)入數(shù)據(jù)挖掘工具,設(shè)定最小支持度為5%,最小置信度為25%,生成的關(guān)聯(lián)規(guī)則如圖1所示。
其表示的含義為:當(dāng)CN083主機(jī)產(chǎn)生0201“進(jìn)程CPU占用過高”告警時(shí),有80%情況下會(huì)觸發(fā)該主機(jī)“CPU占用率過高”告警,告警碼為0402。生成的關(guān)聯(lián)規(guī)則合乎常理。
一個(gè)數(shù)據(jù)挖掘系統(tǒng)在完成一個(gè)(組)挖掘算法之后,常常會(huì)獲得成千上萬的模式或規(guī)則。關(guān)聯(lián)規(guī)則挖掘就是一個(gè)典型的例子,關(guān)聯(lián)規(guī)則挖掘算法的執(zhí)行結(jié)果,即使是對(duì)一個(gè)規(guī)模較小的數(shù)據(jù)庫,也會(huì)得到數(shù)千條關(guān)聯(lián)規(guī)則。顯然這數(shù)千條關(guān)聯(lián)規(guī)則中,只會(huì)有一小部分是實(shí)際應(yīng)用價(jià)值的[6]。
評(píng)估一個(gè)模式(知識(shí))是否有意義通常有依據(jù)以下四條標(biāo)準(zhǔn):(1)易于用戶理解;(2)對(duì)新數(shù)據(jù)或測試數(shù)據(jù)能夠確定有效程度;(3)具有潛在價(jià)值;(4)新奇的。一個(gè)有價(jià)值的模式就是知識(shí)[7]。
針對(duì)本文涉及的增值業(yè)務(wù)網(wǎng)管告警關(guān)聯(lián)規(guī)則的評(píng)估可根據(jù)如下方法進(jìn)行:
(1)對(duì)比網(wǎng)絡(luò)資源模型驗(yàn)證告警關(guān)聯(lián)規(guī)則是否合理。
圖1 關(guān)聯(lián)規(guī)則挖掘示例
將挖掘出的關(guān)聯(lián)規(guī)則應(yīng)用于實(shí)際的網(wǎng)絡(luò)資源模型,分析其是否合理。例如告警關(guān)聯(lián)規(guī)則:1580“東信-I7Server與后臺(tái)socket連接中斷”≥1319“CN后臺(tái)與東信-I7Server中斷”,分析網(wǎng)絡(luò)資源模型可以得知,這兩條告警為同源關(guān)系,當(dāng)東信-I7Server與CN之間網(wǎng)絡(luò)異常時(shí),I7Server和CN后臺(tái)會(huì)分別上報(bào)這兩條告警,可知此告警關(guān)聯(lián)規(guī)則與資源模型相匹配[8]。
(2)在告警呈現(xiàn)上使用并驗(yàn)證生成的告警關(guān)聯(lián)規(guī)則。
由于增值業(yè)務(wù)網(wǎng)管系統(tǒng)一般按照告警產(chǎn)生時(shí)間呈現(xiàn)收到的告警,當(dāng)出現(xiàn)故障時(shí),告警量瞬間暴增,從而不易找到根源告警,故可以將挖掘出的告警關(guān)聯(lián)規(guī)則應(yīng)用到告警呈現(xiàn)上,只呈現(xiàn)根源告警,隱藏派生告警,使維護(hù)人員集中精力處理根源告警。如通過關(guān)聯(lián)規(guī)則得到同主機(jī)的“0201”號(hào)告警與“0402”號(hào)告警為蘊(yùn)含關(guān)系,即“0201”≥“0402”,則在某一主機(jī)同時(shí)上報(bào)(上報(bào)時(shí)間在一定時(shí)間段內(nèi))此兩種告警時(shí),可以只呈現(xiàn)0201號(hào)告警。該方法即為在使用過程中驗(yàn)證評(píng)估告警關(guān)聯(lián)規(guī)則的有效性。
根據(jù)增值業(yè)務(wù)告警管理現(xiàn)狀和需求,本文在研究告警信息特點(diǎn)的基礎(chǔ)上,提出了一種基于關(guān)聯(lián)規(guī)則挖掘的告警相關(guān)性分析模型,并使用C++開發(fā)了用于將原始告警數(shù)據(jù)進(jìn)行事務(wù)化的程序,通過關(guān)聯(lián)規(guī)則挖掘工具生成所需要的告警關(guān)聯(lián)規(guī)則,最后提出了評(píng)估所挖掘出的告警關(guān)聯(lián)規(guī)則的幾種方法。
該模型表明通過將數(shù)據(jù)挖掘中的關(guān)聯(lián)規(guī)則挖掘引入到歷史告警數(shù)據(jù)分析中是可行的,這種告警關(guān)聯(lián)分析技術(shù)對(duì)網(wǎng)絡(luò)的具體結(jié)構(gòu)或組成不需要深層次的掌握,而主要從有效的歷史告警數(shù)據(jù)集合中依靠挖掘工具確定告警關(guān)聯(lián)規(guī)則,具有較高的使用價(jià)值。
[1] 夏海濤, 高峰. 網(wǎng)絡(luò)告警關(guān)聯(lián)分析及標(biāo)準(zhǔn)化[R]. 普天信息技術(shù)研究院有限公司, 2007.
[2] Wallin S, Leijon V. Rethinking network management solutions[J].IT Professionals, November/December 2006. P19-23.
[3] (美)譚, (美)斯坦巴赫著, 范明等譯. 數(shù)據(jù)挖掘?qū)д揫M]. 北京: 人民郵電出版社, 2006,132-152.
[4] 萬里, 廖建新, 朱曉民. 一種時(shí)間序列頻繁模式挖掘算法及其在WSAN行為預(yù)測中的應(yīng)用[J]. 電子與信息學(xué)報(bào), 2010, 32(3):682-686.
[5] 沈云斐, 李丹. 基于關(guān)聯(lián)規(guī)則和情景規(guī)則的網(wǎng)絡(luò)告警分析模型[J]. 小型微型計(jì)算機(jī)系統(tǒng), 2007,(2):271-273.
[6] 馬秀麗, 王紅霞. 網(wǎng)絡(luò)故障管理系統(tǒng)中告警相關(guān)性分析實(shí)現(xiàn)技術(shù)研究[J]. 沈陽理工大學(xué)學(xué)報(bào).2009(6):9-14.
[7] 朱建文. 基于ACE并發(fā)編程模式的告警關(guān)聯(lián)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2007(11):6-11.