李文釗,董曉煒,王 新,趙思亮
(1.重慶市氣象信息與技術保障中心,重慶 401147;2.重慶賽寶工業技術研究院有限公司,重慶 401331)
氣象信息中心在業務系統運維過程中經常需要通過大量的軟硬件日志信息分析、判斷和處理系統存在的不足、隱患和故障等,以期達到系統穩定運行的目的。然而,這些日志信息通常存在大量冗余,如a點和b點的告警是c告警點造成的;o點的故障可能造成p或q點同時告警等。簡單系統的日志源較少,其關聯關系很容易確定,但由于氣象業務系統較大,其中包含路由器、防火墻、IDS/IPS、交換機、服務器和數據庫等各種類型的設備,且規模涉及整個地區,因此確定其關聯關系十分困難。運維工作需先于用戶發現故障,降低故障發生率甚至杜絕業務中斷,要求工作人員能夠在大量的冗余信息中確定各告警點的關聯關系,變被動的故障修復為主動的性能優化。快速精確地找到源故障點是對氣象業務系統運維工作提出的全新要求。
系統故障往往不是獨立產生的,而是與其他事件相關聯。一般Apriori,FP-growth等典型數據關聯規則算法在一定程度上能夠解決日志信息冗余的問題。Apriori算法通過多次掃描事務集,利用候選頻繁項集產生頻繁項集;FP-growth算法利用FP-樹構建頻繁項集,不產生候選項集,可在一定程度上減少事務集掃描頻次。Apriori算法擴展性較好,且易于實施分布式并行化,滿足系統實時性要求。文章主要依據Apriori基本思想分析處理日志信息的關聯規則[1]。然而,通過對日志信息的研究,發現每條日志在考察范圍內的重要程度不同,如設備的電源故障比網絡延遲故障重要得多,用傳統的Apriori的相同支持度和置信度閾值來計算不同重要程度事件的關聯規則顯然不能真實地反映事物本質。因此文章提出一種引入日志信息權重的加權關聯分析方法。
各種設備的類型、應用軟件或操作系統各不相同,其日志數據也不盡相同。對這樣的異構數據進行關聯分析,首先需要建立統一的基于Apriori算法的日志數據模型和確定權重,并且把一個時間段內出現的告警看作是同一告警事務來考察。日志數據結構如表1所示。

表1 日志數據結構
日志信息預處理過程如下:
1)數字或字母:根據日志信息定義確定編號、權重。
2)故障代碼:根據日志故障代碼定義確定編號、權重。
3)文本:根據文本語義,用正則表達式確定編號、權重。
Apriori算法是一種基于事務出現頻次的關聯規則算法,項目(單個日志告警點)的權重須用關于頻次的量來表征[2]。文章定義:Wx是Px點的權重,Wx等于Px出現的頻次,即每出現Px次加權相當于出現了一次Wx次告警點。Wx可賦值為正整數(1,2,3,…),顯然傳統Apriori算法的Wx都為1。
目前對日志信息權重的賦值還沒有統一的標準。依然需要日志和對應故障現象的大數據作為依據,由運維人員根據經驗主觀賦值,文章旨在研究關聯分析方法,建立算法框架,假定日志信息權重已經確定為常量。
支持度閾值和置信度閾值即最小支持度和最小置信度,是界定是否關聯和是否能夠接受該關聯的重要指標,與日志信息權重一樣,也是需要根據數據和場景(日志和對應故障現象)的接受程度來確定的常量[3]。兩種參數閾值的設定,對算法解決問題的優劣影響很大。如果支持度和置信度閾值設置過高,一些隱含在數據中的非頻繁特征項就會被忽略掉,難以發現足夠有用的規則;如果支持度和置信度閾值設置過低,又可能產生過多無意義的規則。可以根據實際日志告警點的數量及其間可能存在的相關性,用比較明確的小樣本數據,通過反推來試選支持度和置信度閾值。
引入日志信息權重后,含有權重項目的事務的頻次發生了變化,事務總量也隨之變化。各項、項集的支持度以及關聯規則的置信度也將發生改變。加權關聯規則計算方法如下。

那么項集X的支持度數如式(1)所示:

(1)
X→Y為關聯規則(X∩Y=?),則X→Y的支持度s(X→Y)=σ(X∪Y)/N;X→Y的置信度c(X→Y)=σ(X∪Y)/σ(X)。
按照章節4.1加權調整參數后,使用統一的支持度閾值min_Sup和置信度閾值min_Conf進行處理。算法描述為:
挖掘頻繁項集
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)函數為掃描事務集合A獲得一維候選項集;Ci為i維候選項集;Li為i維頻繁項集(i為正整數);C_Sup(c)為候選項集c的支持度;σ()為項集數目。需要說明,這里的Generate_C1(A)函數對事務集合的掃描也必須做加權處理,即每條事務要掃描Wai次。
產生強關聯規則
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的強關聯數據集合。
文章用5個點的日志信息,10條由zabbix采集的現場告警事務數據,通過改變相關參數來驗證算法的適用性,已知關聯關系的現場數據預處理后(平權)如表2所示。

表2 現場數據
由于項數及事務總量為已知,在具體程序設計時,可以使用支持度數閾值min_σ代替支持度閾值min_Sup,一方面可以提高程序運行效率,另一方面可以避免小樣本因計算比值而丟失有效數據。
min_Conf均為0.70,分析min_σ為2和min_σ為4的IntelliJ IDEA環境下的程序運行結果可知,支持度數閾值提高以后,頻繁項數明顯減少;同時強關聯(置信度≥0.70)項即符合關聯規則的項也在減少。日志信息點p4做權重為3的加權處理以后p1;→p4;的置信度從0.7142提高到0.8823,并產生了關于p4的新的強關聯項。這是符合Apriori算法基本原則的,也與日志信息的重要程度所產生的影響一致。
日志信息是氣象信息系統運維中的重要依據,高效地利用日志信息需要以有效地挖掘各種日志信息之間的聯系為前提。文章提出的增加正整數權重的日志信息關聯規則分析處理方法是在成熟、傳統的Apriori算法基礎上通過調整有關參數實現的,因此不需要對Apriori做合理及可靠性論證。驗證結果充分表明了該方法符合日志故障規律,可以有效地解決不同重要程度的日志信息關聯問題。