李文釗,董曉煒,王 新,趙思亮
(1.重慶市氣象信息與技術(shù)保障中心,重慶 401147;2.重慶賽寶工業(yè)技術(shù)研究院有限公司,重慶 401331)
氣象信息中心在業(yè)務(wù)系統(tǒng)運(yùn)維過程中經(jīng)常需要通過大量的軟硬件日志信息分析、判斷和處理系統(tǒng)存在的不足、隱患和故障等,以期達(dá)到系統(tǒng)穩(wěn)定運(yùn)行的目的。然而,這些日志信息通常存在大量冗余,如a點(diǎn)和b點(diǎn)的告警是c告警點(diǎn)造成的;o點(diǎn)的故障可能造成p或q點(diǎn)同時(shí)告警等。簡(jiǎn)單系統(tǒng)的日志源較少,其關(guān)聯(lián)關(guān)系很容易確定,但由于氣象業(yè)務(wù)系統(tǒng)較大,其中包含路由器、防火墻、IDS/IPS、交換機(jī)、服務(wù)器和數(shù)據(jù)庫(kù)等各種類型的設(shè)備,且規(guī)模涉及整個(gè)地區(qū),因此確定其關(guān)聯(lián)關(guān)系十分困難。運(yùn)維工作需先于用戶發(fā)現(xiàn)故障,降低故障發(fā)生率甚至杜絕業(yè)務(wù)中斷,要求工作人員能夠在大量的冗余信息中確定各告警點(diǎn)的關(guān)聯(lián)關(guān)系,變被動(dòng)的故障修復(fù)為主動(dòng)的性能優(yōu)化??焖倬_地找到源故障點(diǎn)是對(duì)氣象業(yè)務(wù)系統(tǒng)運(yùn)維工作提出的全新要求。
系統(tǒng)故障往往不是獨(dú)立產(chǎn)生的,而是與其他事件相關(guān)聯(lián)。一般Apriori,FP-growth等典型數(shù)據(jù)關(guān)聯(lián)規(guī)則算法在一定程度上能夠解決日志信息冗余的問題。Apriori算法通過多次掃描事務(wù)集,利用候選頻繁項(xiàng)集產(chǎn)生頻繁項(xiàng)集;FP-growth算法利用FP-樹構(gòu)建頻繁項(xiàng)集,不產(chǎn)生候選項(xiàng)集,可在一定程度上減少事務(wù)集掃描頻次。Apriori算法擴(kuò)展性較好,且易于實(shí)施分布式并行化,滿足系統(tǒng)實(shí)時(shí)性要求。文章主要依據(jù)Apriori基本思想分析處理日志信息的關(guān)聯(lián)規(guī)則[1]。然而,通過對(duì)日志信息的研究,發(fā)現(xiàn)每條日志在考察范圍內(nèi)的重要程度不同,如設(shè)備的電源故障比網(wǎng)絡(luò)延遲故障重要得多,用傳統(tǒng)的Apriori的相同支持度和置信度閾值來(lái)計(jì)算不同重要程度事件的關(guān)聯(lián)規(guī)則顯然不能真實(shí)地反映事物本質(zhì)。因此文章提出一種引入日志信息權(quán)重的加權(quán)關(guān)聯(lián)分析方法。
各種設(shè)備的類型、應(yīng)用軟件或操作系統(tǒng)各不相同,其日志數(shù)據(jù)也不盡相同。對(duì)這樣的異構(gòu)數(shù)據(jù)進(jìn)行關(guān)聯(lián)分析,首先需要建立統(tǒng)一的基于Apriori算法的日志數(shù)據(jù)模型和確定權(quán)重,并且把一個(gè)時(shí)間段內(nèi)出現(xiàn)的告警看作是同一告警事務(wù)來(lái)考察。日志數(shù)據(jù)結(jié)構(gòu)如表1所示。
表1 日志數(shù)據(jù)結(jié)構(gòu)
日志信息預(yù)處理過程如下:
1)數(shù)字或字母:根據(jù)日志信息定義確定編號(hào)、權(quán)重。
2)故障代碼:根據(jù)日志故障代碼定義確定編號(hào)、權(quán)重。
3)文本:根據(jù)文本語(yǔ)義,用正則表達(dá)式確定編號(hào)、權(quán)重。
Apriori算法是一種基于事務(wù)出現(xiàn)頻次的關(guān)聯(lián)規(guī)則算法,項(xiàng)目(單個(gè)日志告警點(diǎn))的權(quán)重須用關(guān)于頻次的量來(lái)表征[2]。文章定義:Wx是Px點(diǎn)的權(quán)重,Wx等于Px出現(xiàn)的頻次,即每出現(xiàn)Px次加權(quán)相當(dāng)于出現(xiàn)了一次Wx次告警點(diǎn)。Wx可賦值為正整數(shù)(1,2,3,…),顯然傳統(tǒng)Apriori算法的Wx都為1。
目前對(duì)日志信息權(quán)重的賦值還沒有統(tǒng)一的標(biāo)準(zhǔn)。依然需要日志和對(duì)應(yīng)故障現(xiàn)象的大數(shù)據(jù)作為依據(jù),由運(yùn)維人員根據(jù)經(jīng)驗(yàn)主觀賦值,文章旨在研究關(guān)聯(lián)分析方法,建立算法框架,假定日志信息權(quán)重已經(jīng)確定為常量。
支持度閾值和置信度閾值即最小支持度和最小置信度,是界定是否關(guān)聯(lián)和是否能夠接受該關(guān)聯(lián)的重要指標(biāo),與日志信息權(quán)重一樣,也是需要根據(jù)數(shù)據(jù)和場(chǎng)景(日志和對(duì)應(yīng)故障現(xiàn)象)的接受程度來(lái)確定的常量[3]。兩種參數(shù)閾值的設(shè)定,對(duì)算法解決問題的優(yōu)劣影響很大。如果支持度和置信度閾值設(shè)置過高,一些隱含在數(shù)據(jù)中的非頻繁特征項(xiàng)就會(huì)被忽略掉,難以發(fā)現(xiàn)足夠有用的規(guī)則;如果支持度和置信度閾值設(shè)置過低,又可能產(chǎn)生過多無(wú)意義的規(guī)則??梢愿鶕?jù)實(shí)際日志告警點(diǎn)的數(shù)量及其間可能存在的相關(guān)性,用比較明確的小樣本數(shù)據(jù),通過反推來(lái)試選支持度和置信度閾值。
引入日志信息權(quán)重后,含有權(quán)重項(xiàng)目的事務(wù)的頻次發(fā)生了變化,事務(wù)總量也隨之變化。各項(xiàng)、項(xiàng)集的支持度以及關(guān)聯(lián)規(guī)則的置信度也將發(fā)生改變。加權(quán)關(guān)聯(lián)規(guī)則計(jì)算方法如下。
那么項(xiàng)集X的支持度數(shù)如式(1)所示:
(1)
X→Y為關(guān)聯(lián)規(guī)則(X∩Y=?),則X→Y的支持度s(X→Y)=σ(X∪Y)/N;X→Y的置信度c(X→Y)=σ(X∪Y)/σ(X)。
按照章節(jié)4.1加權(quán)調(diào)整參數(shù)后,使用統(tǒng)一的支持度閾值min_Sup和置信度閾值min_Conf進(jìn)行處理。算法描述為:
挖掘頻繁項(xiàng)集
C1=Generate_C1(A);
L1={c∈C1|C_Sup(c)>=min_Sup};
C2={{x,y}|x∈L1,y∈C1且σ(x)<σ(y)};
L2={c∈C2|C_Sup(c)≥min_Sup};
For(k=3;Lk-1≠?;k++){
Ck={{X,y}|X∈Lk-1,y∈C1
且σ(X)<σ(y)};
Lk={c∈Ck|C_Sup(c)≥min_Sup};
};
L={Li|i=1,2,…,k}。
其中,Generate_C1(A)函數(shù)為掃描事務(wù)集合A獲得一維候選項(xiàng)集;Ci為i維候選項(xiàng)集;Li為i維頻繁項(xiàng)集(i為正整數(shù));C_Sup(c)為候選項(xiàng)集c的支持度;σ()為項(xiàng)集數(shù)目。需要說(shuō)明,這里的Generate_C1(A)函數(shù)對(duì)事務(wù)集合的掃描也必須做加權(quán)處理,即每條事務(wù)要掃描Wai次。
產(chǎn)生強(qiáng)關(guān)聯(lián)規(guī)則
Support(X)=σ(X)/N;
Support(Y)=σ(Y)/N;
Confidence(X→Y)=Support(X∪Y)/Support(X);
Strongrules(X→Y)={X→Y|Confidence(X→Y)≥min_Conf};
其中,Confidence(X→Y)為X→Y的置信度;Strongrules(X→Y)為X→Y的強(qiáng)關(guān)聯(lián)數(shù)據(jù)集合。
文章用5個(gè)點(diǎn)的日志信息,10條由zabbix采集的現(xiàn)場(chǎng)告警事務(wù)數(shù)據(jù),通過改變相關(guān)參數(shù)來(lái)驗(yàn)證算法的適用性,已知關(guān)聯(lián)關(guān)系的現(xiàn)場(chǎng)數(shù)據(jù)預(yù)處理后(平權(quán))如表2所示。
表2 現(xiàn)場(chǎng)數(shù)據(jù)
由于項(xiàng)數(shù)及事務(wù)總量為已知,在具體程序設(shè)計(jì)時(shí),可以使用支持度數(shù)閾值min_σ代替支持度閾值min_Sup,一方面可以提高程序運(yùn)行效率,另一方面可以避免小樣本因計(jì)算比值而丟失有效數(shù)據(jù)。
min_Conf均為0.70,分析min_σ為2和min_σ為4的IntelliJ IDEA環(huán)境下的程序運(yùn)行結(jié)果可知,支持度數(shù)閾值提高以后,頻繁項(xiàng)數(shù)明顯減少;同時(shí)強(qiáng)關(guān)聯(lián)(置信度≥0.70)項(xiàng)即符合關(guān)聯(lián)規(guī)則的項(xiàng)也在減少。日志信息點(diǎn)p4做權(quán)重為3的加權(quán)處理以后p1;→p4;的置信度從0.7142提高到0.8823,并產(chǎn)生了關(guān)于p4的新的強(qiáng)關(guān)聯(lián)項(xiàng)。這是符合Apriori算法基本原則的,也與日志信息的重要程度所產(chǎn)生的影響一致。
日志信息是氣象信息系統(tǒng)運(yùn)維中的重要依據(jù),高效地利用日志信息需要以有效地挖掘各種日志信息之間的聯(lián)系為前提。文章提出的增加正整數(shù)權(quán)重的日志信息關(guān)聯(lián)規(guī)則分析處理方法是在成熟、傳統(tǒng)的Apriori算法基礎(chǔ)上通過調(diào)整有關(guān)參數(shù)實(shí)現(xiàn)的,因此不需要對(duì)Apriori做合理及可靠性論證。驗(yàn)證結(jié)果充分表明了該方法符合日志故障規(guī)律,可以有效地解決不同重要程度的日志信息關(guān)聯(lián)問題。