尹春勇,張楊春
基于CNN和Bi-LSTM的無監(jiān)督日志異常檢測模型
尹春勇*,張楊春
(南京信息工程大學(xué) 計算機學(xué)院、網(wǎng)絡(luò)空間安全學(xué)院,南京 210044)( ? 通信作者電子郵箱yinchunyong@hotmail.com)
日志能記錄系統(tǒng)運行時的具體狀態(tài),而自動化的日志異常檢測對網(wǎng)絡(luò)安全至關(guān)重要。針對日志語句隨時間演變導(dǎo)致異常檢測準(zhǔn)確率低的問題,提出一種無監(jiān)督日志異常檢測模型LogCL。首先,通過日志解析技術(shù)將半結(jié)構(gòu)化的日志數(shù)據(jù)轉(zhuǎn)換為結(jié)構(gòu)化的日志模板;其次,使用會話和固定窗口將日志事件劃分為日志序列;再次,提取日志序列的數(shù)量特征,使用自然語言處理技術(shù)對日志模板進行語義特征提取,并利用詞頻-詞語逆頻率(TF-IWF)算法生成加權(quán)的句嵌入向量;最后,將特征向量輸入一個并列的基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)和雙向長短期記憶(Bi-LSTM)網(wǎng)絡(luò)的模型中進行檢測。在兩個公開的真實數(shù)據(jù)集上的實驗結(jié)果表明,所提模型較基準(zhǔn)模型LogAnomaly在異常檢測的F1?score上分別提高了3.6和2.3個百分點。因此LogCL能夠?qū)θ罩緮?shù)據(jù)進行有效的異常檢測。
異常檢測;深度學(xué)習(xí);日志分析;詞嵌入;卷積神經(jīng)網(wǎng)絡(luò);雙向長短期記憶網(wǎng)絡(luò)
隨著移動通信設(shè)備和互聯(lián)網(wǎng)行業(yè)的快速發(fā)展,計算機軟件系統(tǒng)的規(guī)模越來越大,各種漏洞和故障頻繁發(fā)生,外部故障如惡意攻擊和內(nèi)部故障如內(nèi)存過載等都有可能導(dǎo)致系統(tǒng)中止,而系統(tǒng)中極小的問題可能會影響用戶的體驗,甚至造成巨大的經(jīng)濟損失,因此準(zhǔn)確、及時地檢測異常對于提高大型系統(tǒng)的可用性和可靠性至關(guān)重要。異常檢測[1]以數(shù)據(jù)為基礎(chǔ),通過模型和算法對偏離值進行檢測,旨在發(fā)現(xiàn)異常數(shù)據(jù)。為了方便故障的識別,大多數(shù)系統(tǒng)都會在控制臺生成日志[2]。日志數(shù)據(jù)記錄系統(tǒng)運行期間的詳細(xì)信息和應(yīng)用程序的行為,當(dāng)系統(tǒng)發(fā)生故障時,操作人員可以通過日志記錄的事件檢測和調(diào)試故障維護系統(tǒng)的安全,因此日志是異常檢測最重要的信息源之一。
雖然系統(tǒng)日志對故障診斷有很大的幫助,但是當(dāng)前計算機系統(tǒng)具有高度復(fù)雜性,產(chǎn)生的日志數(shù)量非常大,例如商業(yè)云程序每小時大約產(chǎn)生十億字節(jié)的數(shù)據(jù)[3]。處理日志異常的傳統(tǒng)方法是靠操作人員匹配正則表達式或搜索關(guān)鍵詞如“failure”來手動分析日志,這種方法非常耗時且容易出錯,因此依賴人工分析海量數(shù)據(jù)不現(xiàn)實。多年來,研究者提出了一系列基于數(shù)據(jù)驅(qū)動的方法,通過分析日志數(shù)據(jù)自動檢測異常,和手動檢測相比,這些方法實現(xiàn)了更高效的檢測。例如,文獻[4-5]中將每種日志事件視為一個獨立的維度,通過機器學(xué)習(xí)技術(shù)挖掘日志序列的數(shù)量特征進行異常檢測,此類方法反映了序列的模式特征,但沒有考慮日志文本的語義信息,容易將新類型模板錯誤地標(biāo)記為異常,導(dǎo)致了較高的誤報率。文獻[6-7]中基于日志模板提取語義特征,在一定程度上提高了異常檢測的準(zhǔn)確率。日志由單詞組成,因此單詞的語義決定了日志的語義,但現(xiàn)有方法只是簡單地采用詞嵌入模型將單詞映射到詞向量中,忽略了單詞和日志語句之間的關(guān)系。當(dāng)前,如何高效地檢測系統(tǒng)異常仍然是一個巨大的挑戰(zhàn),這是由系統(tǒng)運行的特點決定的。首先,計算機系統(tǒng)大部分時間都處于正常運行的狀態(tài),異常狀態(tài)比較罕見,這使正常日志和異常日志的分布并不均勻,導(dǎo)致日志數(shù)據(jù)不平衡問題,因此普通的二元分類機制難以在異常檢測中取得較好的效果。其次,在軟件的開發(fā)和維護中,會產(chǎn)生各種各樣的日志和復(fù)雜的異常模式,日志語句會不斷發(fā)生變化,日志語句的這種不穩(wěn)定性導(dǎo)致異常檢測準(zhǔn)確率較低。最后,當(dāng)訓(xùn)練數(shù)據(jù)平衡且足夠時,監(jiān)督方法通常非常準(zhǔn)確,但由于缺乏足夠的異常數(shù)據(jù)而不適用于異常檢測;而無監(jiān)督方法因?qū)ξ粗惓5母兄m用于異常檢測,但是大多數(shù)方法需要提高準(zhǔn)確性,因此本文重點研究無監(jiān)督日志異常檢測。為了提高算法性能,提出一種無監(jiān)督日志異常檢測模型LogCL。LogCL包括三個階段:日志解析、特征提取和異常檢測。實驗結(jié)果表明,LogCL具有通用性和優(yōu)異的檢測性能,彌補了傳統(tǒng)方法的不足。
本文的主要工作如下:
1)提出一種新型的端到端日志異常檢測模型,只需要使用部分正常的日志數(shù)據(jù)進行訓(xùn)練,模型就能較好地學(xué)習(xí)到正常日志流的執(zhí)行模式,避免了異常檢測中數(shù)據(jù)不平衡的問題,不需要異常日志來構(gòu)建檢測模型,能減少模型構(gòu)建的工作量;
2)設(shè)計了兩種特征提取方式,分別提取日志序列的數(shù)量特征和語義特征,在語義表示中,充分考慮單詞的重要性程度對日志語句的影響,使模型對日志語言的演變具有魯棒性;
3)結(jié)合卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)和雙向長短期記憶(Bi-directional Long Short-Term Memory, Bi-LSTM)網(wǎng)絡(luò)構(gòu)建了一個并列的異常檢測模型,并對兩個真實環(huán)境下收集的日志數(shù)據(jù)集進行評估,結(jié)果驗證了LogCL能夠有效檢測到各種故障。
在生產(chǎn)實踐中,系統(tǒng)日志已經(jīng)被廣泛用于異常檢測,目前在日志異常檢測方面的主要技術(shù)是傳統(tǒng)的機器學(xué)習(xí)和深度學(xué)習(xí)。
傳統(tǒng)的機器學(xué)習(xí)技術(shù)能夠從各種數(shù)據(jù)中挖掘隱藏信息。Lou等[4]首次將不變量挖掘(Invariants Mining, IM)使用到日志異常檢測中,通過算法從事件計數(shù)向量中挖掘稀疏整數(shù)值的不變量,挖掘出的不變量能夠揭示程序工作流程中固有的線性特征,若檢測的日志序列不遵循不變量原則就被判定為異常。Lin等[5]使用凝聚層次聚類技術(shù)將類似的日志序列分組到集群中并且創(chuàng)建知識庫,通過檢查新集群中的代表日志序列是否和已有集群中的代表序列相同來判定異常。Xu等[8]使用主成分分析法檢測異常,把日志事件矢量化為事件計數(shù)向量,將日志序列投影到正??臻g和異常空間。對于傳入的日志序列,根據(jù)投影后日志序列所屬的空間將它識別為正?;虍惓?。Liang等[9]訓(xùn)練支持向量機(Support Vector Machine, SVM)分類器來檢測日志事件故障。在高維空間中構(gòu)造決策超平面,使超平面和不同類別中最近的數(shù)據(jù)點之間的距離最大化,分離出不同的類,從而檢測異常。最近,Han等[10]提出魯棒性在線改進異常檢測框架ROEAD(Robust Online Evolving Anomaly Detection)和OES(Online Evolving SVM)算法,利用自然語言處理技術(shù)去除噪聲的影響,提高了SVM算法在日志異常檢測中的性能。
為解決基于機器學(xué)習(xí)的方法通常依賴人工設(shè)計的特征表示日志數(shù)據(jù)的問題,深度學(xué)習(xí)逐漸受到研究者的廣泛關(guān)注,基于深度學(xué)習(xí)的日志異常檢測技術(shù)迅速發(fā)展。當(dāng)前,學(xué)術(shù)界提出了一系列基于監(jiān)督學(xué)習(xí)的方法,監(jiān)督方法將異常檢測視為正常和異常之間的二分類任務(wù)。Lu等[11]利用CNN自動學(xué)習(xí)系統(tǒng)日志中的事件,CNN能夠利用多個過濾器挖掘日志上下文中的關(guān)系以及捕獲日志模板語義嵌入中的相關(guān)性。Li等[12]提出的SwissLog模型利用BERT(Bidirectional Encoder Representation from Transformers)語言模型編碼日志模板,將語義信息和日志之間的時間間隔信息相結(jié)合,訓(xùn)練了一個基于注意力機制的Bi-LSTM網(wǎng)絡(luò)檢測異常。該模型通過對不同事件賦予權(quán)重,自動分析事件的重要性,能夠解決日志格式變化的問題。Huang等[13]首次將Transformer模型應(yīng)用到日志異常檢測的任務(wù)中,利用分層Transformer對日志模板序列和參數(shù)值進行建模,設(shè)計注意力機制將語義信息和參數(shù)值合并以進行分類,對不穩(wěn)定的日志數(shù)據(jù)具有魯棒性。雖然監(jiān)督方法能夠正確地診斷系統(tǒng)的狀況,但它最大的缺陷是在訓(xùn)練階段需要大量的正常和異常數(shù)據(jù),而人工標(biāo)注數(shù)據(jù)是非常耗時的一項工作,這在現(xiàn)實生產(chǎn)環(huán)境中不易實現(xiàn);而且人工標(biāo)注數(shù)據(jù)有可能出現(xiàn)標(biāo)注錯誤,這會導(dǎo)致模型在檢測時產(chǎn)生誤報,無法達到很好的效果。
由于監(jiān)督學(xué)習(xí)存在無法克服的缺點,相關(guān)研究者也進行了無監(jiān)督和半監(jiān)督方法的研究。Du等[14]提出的DeepLog框架把日志信息當(dāng)作自然語言序列處理,從正常執(zhí)行流中自動學(xué)習(xí)日志模式,通過確定傳入的日志事件是否違反堆疊式LSTM模型的預(yù)測結(jié)果來檢測異常。Meng等[6]設(shè)計了一種基于同義詞和反義詞的模板表示方法template2vec,將傳入的日志事件與現(xiàn)有的模板匹配,而不是直接將它們標(biāo)記為異常,從而提高了準(zhǔn)確性。Yang等[15]提出了基于概率標(biāo)簽估計的半監(jiān)督學(xué)習(xí)框架PLELog,采用聚類方法HDBSCAN[16]對未標(biāo)記日志序列的標(biāo)簽進行概率估計,解決了標(biāo)簽不足的問題;并設(shè)計了一種基于注意力機制的門控循環(huán)單元神經(jīng)網(wǎng)絡(luò)進行異常檢測。Li等[17]使用深度時間卷積網(wǎng)絡(luò)從日志事件中提取細(xì)粒度特征,并開發(fā)了一個新型聯(lián)邦學(xué)習(xí)框架以支持互聯(lián)網(wǎng)設(shè)備建立更全面的異常檢測模型。Duan等[18]使用一種基于值函數(shù)的強化學(xué)習(xí)方法Q?learning[19]構(gòu)建異常檢測模型,從正常執(zhí)行中學(xué)習(xí)日志模式的有向非循環(huán)圖,求解每個日志執(zhí)行路徑的Q值,并使用Q值確定日志序列是否異常。
考慮到日志語句會隨著時間而改變,現(xiàn)有的方法無法充分利用日志的語義特征,當(dāng)系統(tǒng)更新引入新類型日志模板時,現(xiàn)有的模型難以準(zhǔn)確檢測出新類型的日志模板,為此,提出了LogCL模型解決這一問題。
本文LogCL模型的框架如圖1所示,主要包括離線訓(xùn)練和在線檢測兩個階段,每個階段主要包括三個步驟:預(yù)處理、特征提取和異常檢測。
日志數(shù)據(jù)詳細(xì)記錄系統(tǒng)的狀態(tài)和性能指標(biāo),而不同系統(tǒng)產(chǎn)生的日志形式區(qū)別大、異構(gòu)復(fù)雜性高,這給異常檢測帶來了一定的困難,圖2顯示了3種不同的系統(tǒng)日志。
可以看出,一條日志由HEADER和MESSAGE兩部分組成。其中,HEADER包含不同的字段如時間戳、消息類型、消息級別如“INFO”等。MESSAGE是一種沒有格式約束的文本,由常量部分和變量部分組成:常量部分即描述日志事件的關(guān)鍵字,變量部分是隨著系統(tǒng)運行而動態(tài)變化的參數(shù)。使用原始日志事件難以從海量日志數(shù)據(jù)中提取出有價值的信息,因此需要日志解析技術(shù)從半結(jié)構(gòu)化日志數(shù)據(jù)中提取出結(jié)構(gòu)化的日志模板,去除無關(guān)的冗余信息和噪聲。日志解析通過刪除變量參數(shù)保留常量關(guān)鍵字提取日志模板,這一過程可以由式(1)表示:

其中:F表示映射函數(shù),將日志事件Li映射到日志模板Ti。當(dāng)前日志解析方法基于數(shù)據(jù)挖掘技術(shù)可以分為三類:基于頻繁模式挖掘、啟發(fā)式和聚類。例如,Logram[20]利用n-gram字典實現(xiàn)高效的日志解析;LogStamp[21]考慮到了語義,將日志解析問題轉(zhuǎn)換為序列標(biāo)記問題,能夠在線自動解析日志?;趩l(fā)式的方法認(rèn)為日志和一般的文本數(shù)據(jù)相比具有一些獨有的特征,在準(zhǔn)確性和時間效率方面優(yōu)于其他技術(shù),因此本文使用基于啟發(fā)式方法的日志解析器Drain[22]。Drain利用固定深度解析樹維護日志組,通過遍歷樹中的葉節(jié)點形成日志模板,能夠以流式的方式解析日志。圖3展示了將HDFS日志事件映射到模板的過程,一條日志“Verification succeeded for blk_-2827716238972737794”被替換為模板“Verification succeeded for<*>”,其中參數(shù)被抽象為<*>符號。

圖2 日志示例

圖3 HDFS日志解析過程

此后,對解析出來的日志模板進行數(shù)據(jù)處理,以便后續(xù)進行特征提取。首先刪除非字母的內(nèi)容,包括標(biāo)點符號、空格、下畫線、換行符等。未登錄詞(Out Of Vocabulary, OOV)是指訓(xùn)練語料庫中沒有出現(xiàn)過的詞,又稱為集外詞。日志模板中存在一些罕見的長詞難以提取信息,為了更好地解決OOV問題,使用自然語言處理中的子詞分割方法來減少詞匯量,例如長詞“addStoredBlock”被拆分為3個頻繁出現(xiàn)的子詞“add”“stored”“block”,通過這種方法可以有效減少OOV單詞的數(shù)量。停用詞是在信息檢索工作中為了提高搜索效率而忽略掉的某些詞,例如“is”“the”等,這些詞對日志數(shù)據(jù)的處理沒有價值,利用Python中的NLTK庫去除停用詞。
預(yù)處理之后,以日志模板作為輸入來提取特征。本文從兩個方面進行特征提取,即數(shù)量特征提取和語義特征提取。
2.2.1數(shù)量特征提取

2.2.2語義特征提取
日志事件的大部分內(nèi)容是英文單詞,這些單詞自身都有語義,例如“succeeded”和“failed”的語義完全不同,“finished”和“completed”有著相近的語義。隨著計算機系統(tǒng)的升級等,日志事件的語法會產(chǎn)生改變,但是發(fā)生異常時的語義是相同或者相近的。因此日志的向量表示需要滿足兩個條件:一方面應(yīng)當(dāng)使語義相似的單詞具有空間上相近的向量,即向量之間的余弦相似度較高;另一方面應(yīng)該具備可區(qū)分性,即能夠表示出不同日志事件之間的語義差異。在大量文本語料庫上預(yù)先訓(xùn)練過的通用語言模型可以保留一般的文本結(jié)構(gòu),當(dāng)前部分工作如PLELog[15]和CNN-BiLSTM[23]利用Word2Vec或GloVe來提取詞向量,這兩種模型都是以單詞作為基本單位進行訓(xùn)練的,這種方式僅能對詞庫中的單詞進行向量表示而無法處理OOV的情況,并且也難以處理同一單詞的變形如ing形式。而FastText[24]使用更小的單位即字母來訓(xùn)練詞向量,考慮了局部詞序特征,可以有效處理長詞和OOV單詞,使同一單詞的不同形式擁有相似的詞向量。因此本文使用自然語言模型FastText在Common Crawl和維基百科語料庫預(yù)訓(xùn)練的詞向量,從預(yù)處理后的日志事件中提取每個單詞的語義信息。
FastText算法可以快速捕獲自然語言中單詞之間的內(nèi)在關(guān)系,該模型首先使用-gram方法,考慮字符級別的信息,生成用來表示語料的向量,并且使用分層softmax線性分類器計算概率分布,大幅減少了模型訓(xùn)練的時間。損失函數(shù)為:

其中:為樣本個數(shù);為第個樣本的正則化特征,為第個樣本對應(yīng)的特征標(biāo)簽;和是權(quán)重矩陣;為softmax函數(shù)。
在獲取每個單詞的詞嵌入向量之后,將每一條日志事件都看作自然語言中的句子。采用詞頻-詞語逆頻率(Term Frequency-Inverse Word Frequency, TF-IWF)算法[25]表示每個單詞和日志事件的關(guān)系。TF-IWF改進了詞頻-逆向文件頻率算法,是一種廣泛應(yīng)用于信息檢索和數(shù)據(jù)挖掘的加權(quán)技術(shù),可以有效地衡量單詞在句子中的重要性,其中,TF詞頻矩陣度量一個單詞與給定文本的關(guān)聯(lián),IWF度量該單詞的重要性,計算公式如下:





每個日志事件的句嵌入向量都有相同的維度,語義特征提取模塊使LogCL能夠區(qū)分不同的日志事件,處理不穩(wěn)定的日志數(shù)據(jù)。
本文基于CNN和Bi-LSTM構(gòu)造了并列異常檢測模型CL,如圖1所示,其中CL1負(fù)責(zé)處理日志計數(shù)向量,CL2負(fù)責(zé)處理語義特征向量,將CL1和CL2的輸出結(jié)果進行合并操作之后輸入到全連接層進行線性變換得到預(yù)測的結(jié)果。異常檢測的網(wǎng)絡(luò)結(jié)構(gòu)具體如圖4所示。

圖4 異常檢測網(wǎng)絡(luò)結(jié)構(gòu)
由于CNN的卷積層可以提取局部特征信息,在日志序列中,相鄰的日志具有一定的相關(guān)性,因此本文采用一維卷積1D-CNN[26]來學(xué)習(xí)日志序列內(nèi)部的模式,1D-CNN只執(zhí)行一維卷積即標(biāo)量的乘法和加法,它的配置簡單且有效,適合用于從固定長度的片段中提取特征。使用一維卷積核掃描日志序列的嵌入向量,采用兩端補0的方式解決維度不平衡問題。


本實驗開發(fā)語言為Python 3.8,使用深度學(xué)習(xí)框PyTorch 1.10.2構(gòu)建模型,在Windows 11 (64 bit)、AMD Ryzen 7 5800 8?Core處理器、16 GB內(nèi)存的環(huán)境下運行,使用GeForce RTX 3060 GPU加速模型訓(xùn)練。
為了訓(xùn)練和評估所提方法,使用了2個從真實應(yīng)用環(huán)境中采集的數(shù)據(jù)集:HDFS和BGL,以上數(shù)據(jù)集均從開放的日志數(shù)據(jù)集合Loghub(https://github.com/logpai/loghub)中獲得,具體信息如表1所示。

表1 兩個數(shù)據(jù)集的統(tǒng)計信息
HDFS:該數(shù)據(jù)集從亞馬遜EC2平臺上203個節(jié)點的集群收集,共包含11 175 629條日志事件,由Hadoop領(lǐng)域?qū)<野凑誦lock_id標(biāo)識符分組進行標(biāo)記,共分成575 061條序列,其中異常序列16 838條,HDFS的block_id記錄每個數(shù)據(jù)塊操作如寫入、復(fù)制、刪除等。
BGL:該數(shù)據(jù)集由勞倫斯利弗莫爾國家實驗室的BlueGene/L超級計算機系統(tǒng)記錄,包含4 747 963條日志信息,其中有348 460條異常日志。
采用精確度、召回率和F1-score(1)作為評價指標(biāo):精確度是指正確識別為異常的日志序列占模型識別為異常的所有序列的比值;召回率是正確識別為異常的日志序列占所有實際異常的比值;F1-score是精確度和召回率的調(diào)和平均數(shù)。它們的計算公式如下:



其中:(True Positive)表示異常日志序列被模型判定為異常的數(shù)量;(False Negative)表示異常日志序列被模型判定為正常的數(shù)量;(False Positive)表示正常日志序列被模型判定為異常的數(shù)量。

本文選擇三種基于機器學(xué)習(xí)的方法(LogCluster[5]、ADR[28]和OES[10])和五種基于深度學(xué)習(xí)的方法(DeepLog[14]、LogAnomaly[6]、LogBERT[7]、CNN-BiLSTM[23]和LogRobust[29])作為基準(zhǔn)模型,詳情如表2所示。

表2 基準(zhǔn)模型詳情
實驗結(jié)果如表3所示,可以看出,使用日志語義表示的方法的魯棒性普遍較好,而只提取數(shù)量特征的方法LogCluster效果較差,這表明從語義角度理解日志序列的內(nèi)容可以提高對異常的檢測率。在兩個數(shù)據(jù)集上,LogCL的F1-score指標(biāo)都超過了0.98,領(lǐng)先所有的無監(jiān)督方法,比使用語義特征提取的基準(zhǔn)模型LogAnomaly分別高出3.6和2.3個百分點。這是由于LogAnomaly僅僅構(gòu)造同義詞和反義詞集,無法識別到專業(yè)領(lǐng)域的詞,從而只能捕獲到有限的語義特征;而LogCL使用的FastText不需要操作人員手動更新詞庫,并且考慮到了單詞的重要性程度對日志語句的影響,使日志語句的語義特征表示更加準(zhǔn)確,從而能獲得最佳的性能。CNN-BiLSTM方法在異常檢測部分同樣結(jié)合了CNN和Bi?LSTM,不同的是該方法使用的是并行結(jié)構(gòu),利用CNN和Bi?LSTM分別來處理參數(shù)和日志模板;而本文使用的是串行結(jié)構(gòu),同時學(xué)習(xí)日志的局部特征和前后依賴性特征。CNN?BiLSTM方法采用Word2Vec提取詞向量,但Word2Vec只能對詞庫中的單詞進行向量化,難以處理OOV的情況,并且僅僅表示了單詞的詞向量,忽略了單詞和日志語句之間的聯(lián)系,因此該方法的性能不佳。

表3 HDFS和BGL數(shù)據(jù)集上的實驗結(jié)果
在HDFS數(shù)據(jù)集上,LogCL表現(xiàn)出了較好的檢測效果,精確度和召回率達到了0.985以上,LogCluster取得了最高的精確度,但是召回率過低,導(dǎo)致F1-score較低,說明該方法遺漏了很多異常,而對異常檢測而言,召回率是比精確度更重要的指標(biāo),因為漏檢異??赡軙?dǎo)致巨大的經(jīng)濟損失和其他的潛在危險。雖然監(jiān)督方法LogRobust總體上比無監(jiān)督方法表現(xiàn)好,但是監(jiān)督方法需要標(biāo)記大量的異常數(shù)據(jù),標(biāo)記工作需要系統(tǒng)領(lǐng)域的專業(yè)知識,而LogCL只需要使用正常的數(shù)據(jù)進行訓(xùn)練,這在實際生產(chǎn)中非常容易收集,因為當(dāng)系統(tǒng)正常運行而沒有任何警報時,所產(chǎn)生的日志都可以視為正常日志,因此更具有實用性。在BGL數(shù)據(jù)集上,LogCL表現(xiàn)出了最好的異常檢測效果,F(xiàn)1-score達到了0.983,比ADR高出1.6個百分點。ADR的召回率達到了1.000,說明該方法可以追蹤所有的異常,但是它的精確度不高,錯誤地將正常日志序列判定為異常,導(dǎo)致模型產(chǎn)生假警報,從而浪費操作人員大量的時間。在這個數(shù)據(jù)集上,LogRobust的效果不如部分無監(jiān)督方法,說明該方法通用性不強。
為了研究LogCL對新類型日志的檢測效果,統(tǒng)計了訓(xùn)練數(shù)據(jù)中出現(xiàn)的日志模板數(shù)量,如表1所示。HDFS的訓(xùn)練數(shù)據(jù)中共出現(xiàn)15種模板,占總數(shù)的50.0%,BGL的訓(xùn)練數(shù)據(jù)中共出現(xiàn)185種模板,占總數(shù)的48.9%,可以看出測試數(shù)據(jù)中的新類型模板數(shù)量都在總數(shù)的一半或以上,對于日志數(shù)據(jù)的這種不穩(wěn)定性,LogCL可以通過學(xué)習(xí)OOV詞的語義特征來判定新類型模板是否異常。為了進一步評估模型對新類型模板的有效性,在HDFS上使用3 000~6 000條序列進行訓(xùn)練,表4統(tǒng)計了新模板的比例和檢測結(jié)果,可以看到隨著訓(xùn)練比率的增加,在測試集上新類型模板的占比從56.7%降低到46.7%,模型表現(xiàn)出了出色的效果,即使在新模板占比高達56.7%時,F(xiàn)1-score也達到了0.969,由于經(jīng)過語義表示的正常日志事件在發(fā)生變化后,它的語義向量仍然可以被表示為和原始事件相似的向量,而異常事件的向量和正常事件的向量相差較大,因此LogCL對不穩(wěn)定的日志事件具有魯棒性。
圖5展示了兩個數(shù)據(jù)集中候選模板數(shù)對檢測效果的影響,將其他參數(shù)設(shè)置為默認(rèn)值。可以看出當(dāng)過小時,模型可以檢測到所有的異常數(shù)據(jù),但代價是將大量正常日志也判定為異常,當(dāng)過大時會遺漏很多異常。在HDFS數(shù)據(jù)集上,當(dāng)參數(shù)在6~16時,模型表現(xiàn)出了較高的性能,在BGL數(shù)據(jù)集上,=20時達到了很好的效果,超過100時檢測效率下降。實驗結(jié)果表明,通過合理設(shè)置參數(shù)可以平衡精確度和召回率,從而得到最優(yōu)的F1-score。

表4 對新類型日志的評估結(jié)果

圖5 候選模板數(shù)對模型性能的影響
為了評估每個模塊對實驗結(jié)果的影響,在HDFS數(shù)據(jù)集上進行了三個方面的消融實驗,結(jié)果如表5所示,其中:A模型是在LogCL中去除語義特征提取模塊;B模型是在LogCL中去除日志計數(shù)向量即數(shù)量特征提取模塊;C模型是在異常檢測算法中去除1D-CNN層??梢钥闯稣Z義特征提取使模型檢測的F1-score性能提高了4.1個百分點,這表明將日志事件視為自然語言來處理效果很好。日志計數(shù)向量和1D?CNN使模型的F1-score分別提高了0.9和0.7個百分點,消融實驗的結(jié)果表明這三個模塊對異常檢測都有一定的作用。

表5 消融實驗結(jié)果
為了解決日志數(shù)據(jù)的類不平衡問題,本文提出了一種無監(jiān)督異常檢測模型LogCL,通過判定數(shù)據(jù)是否符合正常日志流運行模式來檢測異常。針對日志語句隨時間演變導(dǎo)致異常檢測準(zhǔn)確率低的問題,使用自然語言處理技術(shù)提取日志中單詞的語義特征,通過TF-IWF算法得到加權(quán)的句嵌入向量,語義特征提取使得模型能夠應(yīng)對新類型的日志模板。結(jié)合CNN和Bi-LSTM的神經(jīng)網(wǎng)絡(luò)能夠同時學(xué)習(xí)到日志的局部特征和內(nèi)部的前后依賴性特征,實驗結(jié)果表明,LogCL在異常檢測任務(wù)上具有較好的效果。本文語義特征提取的重點對象是單條日志語句,在生產(chǎn)實際中,操作人員有時會基于多條日志一起分析故障,因此在以后的工作中將研究多類型日志的語義特征表示。當(dāng)前大型系統(tǒng)日志的規(guī)模不斷擴大,日志模板數(shù)量隨之增加,未來也將探索更高效的語義提取方法從而減少日志異常檢測的執(zhí)行時間和內(nèi)存計算成本。
[1] RUFF L, KAUFFMANN J R, VANDERMEULEN R A, et al. A unifying review of deep and shallow anomaly detection[J]. Proceedings of the IEEE, 2021, 109(5): 756-795.
[2] HE S, HE P, CHEN Z, et al. A survey on automated log analysis for reliability engineering[J]. ACM Computing Surveys, 2022, 54(6): No.130.
[3] LE V H, ZHANG H. Log-based anomaly detection with deep learning: how far are we?[C]// Proceedings of the 44th International Conference on Software Engineering. New York: ACM, 2022: 1356-1367.
[4] LOU J G, FU Q, YANG S, et al. Mining invariants from console logs for system problem detection[C]// Proceedings of the 2010 USENIX Annual Technical Conference. Berkeley: USENIX Association, 2010: 1-14.
[5] LIN Q, ZHANG H, LOU J G, et al. Log clustering based problem identification for online service systems[C]// Proceedings of the IEEE/ACM 38th International Conference on Software Engineering Companion. New York: ACM, 2016: 102-111.
[6] MENG W, LIU Y, ZHU Y, et al. LogAnomaly: unsupervised detection of sequential and quantitative anomalies in unstructured logs[C]// Proceedings of the 28th International Joint Conference on Artificial Intelligence. California: ijcai.org, 2019: 4739-4745.
[7] GUO H, YUAN S, WU X. LogBERT: log anomaly detection via BERT[C]// Proceedings of the 2021 International Joint Conference on Neural Networks. Piscataway: IEEE, 2021: 1-8.
[8] XU W, HUANG L, FOX A, et al. Detecting large-scale system problems by mining console logs[C]// Proceedings of the ACM SIGOPS 22nd Symposium on Operating Systems Principles. New York: ACM, 2009: 117-132.
[9] LIANG Y, ZHANG Y, XIONG H, et al. Failure prediction in IBM BlueGene/L event logs[C]// Proceedings of the 7th IEEE International Conference on Data Mining. Piscataway: IEEE, 2007: 583-588.
[10] HAN S, WU Q, ZHANG H, et al. Log-based anomaly detection with robust feature extraction and online learning[J]. IEEE Transactions on Information Forensics and Security, 2021, 16: 2300-2311.
[11] LU S, WEI X, LI Y, et al. Detecting anomaly in big data system logs using convolutional neural network[C]// Proceedings of the IEEE 16th International Conference on Dependable, Autonomic and Secure Computing/ IEEE 16th International Conference on Pervasive Intelligence and Computing/ IEEE 4th International Conference on Big Data Intelligence and Computing/ IEEE 3rd Cyber Science and Technology Congress. Piscataway: IEEE, 2018: 151-158.
[12] LI X, CHEN P, JING L, et al. SwissLog: robust and unified deep learning based log anomaly detection for diverse faults[C]// Proceedings of the IEEE 31st International Symposium on Software Reliability Engineering. Piscataway: IEEE, 2020: 92-103.
[13] HUANG S, LIU Y, FUNG C, et al. HitAnomaly: hierarchical transformers for anomaly detection in system log[J]. IEEE Transactions on Network and Service Management, 2020, 17(4): 2064-2076.
[14] DU M, LI F, ZHENG G, et al. DeepLog: anomaly detection and diagnosis from system logs through deep learning[C]// Proceedings of the 2017 ACM SIGSAC Conference on Computer and Communications Security. New York: ACM, 2017: 1285-1298.
[15] YANG L, CHEN J, WANG Z, et al. Semi-supervised log-based anomaly detection via probabilistic label estimation[C]// Proceedings of the IEEE/ACM 43rd International Conference on Software Engineering. Piscataway: IEEE, 2021: 1448-1460.
[16] McINNES L, HEALY J, ASTELS S. HDBSCAN: hierarchical density based clustering[J]. The Journal of Open Source Software, 2017, 2(11): No.205.
[17] LI B, MA S, DENG R, et al. Federated anomaly detection on system logs for the internet of things: a customizable and communication-efficient approach[J]. IEEE Transactions on Network and Service Management, 2022, 19(2): 1705-1716.
[18] DUAN X, YING S, YUAN W, et al. QLLog: a log anomaly detection method based on Q-learning algorithm[J]. Information Processing and Management, 2021, 58(3): No.102540.
[19] CLIFTON J, LABER E. Q-learning: theory and applications[J]. Annual Review of Statistics and Its Application, 2020, 7: 279-301.
[20] DAI H, LI H, CHEN C S, et al. Logram: efficient log parsing using-gram dictionaries[J]. IEEE Transactions on Software Engineering, 2022, 48(3): 879-892.
[21] TAO S, MENG W, CHENG Y, et al. LogStamp: automatic online log parsing based on sequence labelling[J]. ACM SIGMETRICS Performance Evaluation Review, 2022, 49(4): 93-98.
[22] HE P, ZHU J, ZHENG Z, et al. Drain: an online log parsing approach with fixed depth tree[C]// Proceedings of the 2017 IEEE International Conference on Web Services. Piscataway: IEEE, 2017: 33-40.
[23] 孫嘉,張建輝,卜佑軍,等.基于CNN-BiLSTM模型的日志異常檢測方法[J].計算機工程,2022,48(7):151-158. (SUN J, ZHANG J H, BU Y J, et al. Log anomaly detection method based on CNN-BiLSTM model[J]. Computer Engineering, 2022, 48(7): 151-158.)
[24] GRAVE E, BOJANOWSKI P, GUPTA P, et al. Learning word vectors for 157 languages[C]// Proceedings of the 11th International Conference on Language Resources and Evaluation. [S.l.]: European Language Resources Association, 2018: 3483-3487.
[25] 王小林,楊林,王東,等. 改進的TF-IDF關(guān)鍵詞提取方法[J]. 計算機科學(xué)與應(yīng)用, 2013, 3(1): 64-68.(WANG X L, YANG L, WANG D, et al. Improved TF-IDF keyword extraction algorithm[J]. Computer Science and Application, 2013, 3(1): 64-68.)
[26] KIRANYAZ S, AVCI O, ABDELJABER O, et al. 1D convolutional neural networks and applications: a survey[J]. Mechanical Systems and Signal Processing, 2021, 151: No.107398.
[27] LINDEMANN B, MASCHLER B, SAHLAB N, et al. A survey on anomaly detection for technical systems using LSTM networks[J]. Computers in Industry, 2021, 131: No.103498.
[28] ZHANG B, ZHANG H, MOSCATO P, et al. Anomaly detection via mining numerical workflow relations from logs[C]// Proceedings of the 2020 International Symposium on Reliable Distributed Systems. Piscataway: IEEE, 2020: 195-204.
[29] ZHANG X, XU Y, LIN Q, et al. Robust log-based anomaly detection on unstable log data[C]// Proceedings of the 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering. New York: ACM, 2019: 807-817.
Unsupervised log anomaly detection model based on CNN and Bi-LSTM
YIN Chunyong*, ZHANG Yangchun
(,,210044,)
Logs can record the specific status of the system during the operation, and automated log anomaly detection is critical to network security. Concerning the problem of low accuracy in anomaly detection caused by the evolution of log sentences over time, an unsupervised log anomaly detection model LogCL was proposed. Firstly, the log parsing technique was used to convert semi-structured log data into structured log templates. Secondly, the sessions and fixed windows were employed to divide log events into log sequences. Thirdly, quantitative characteristics of the log sequences were extracted, natural language processing technique was used to extract semantic features of log templates, and Term Frequency-Inverse Word Frequency (TF-IWF) algorithm was utilized to generate weighted sentence embedding vectors. Finally, the feature vectors were input into a parallel model based on Convolutional Neural Network (CNN) and Bi-directional Long Short-Term Memory (Bi-LSTM) network for detection. Experimental results on two public real datasets show that the proposed model improves the anomaly detection F1-score by 3.6 and 2.3 percentage points respectively compared with the baseline model LogAnomaly. Therefore, LogCL can perform effectively on log anomaly detection.
anomaly detection; deep learning; log analysis; word embedding; Convolutional Neural Network (CNN); Bi-directional Long Short-Term Memory (Bi-LSTM) network
1001-9081(2023)11-3510-07
10.11772/j.issn.1001-9081.2022111738
2022?11?22;
2023?03?19;
尹春勇(1977—),男,山東濰坊人,教授,博士生導(dǎo)師,博士,主要研究方向:網(wǎng)絡(luò)空間安全、大數(shù)據(jù)挖掘、隱私保護、人工智能、新型計算; 張楊春(1999—),女,江蘇南通人,碩士研究生,主要研究方向:異常檢測、深度學(xué)習(xí)、日志分析。
TP391.1
A
2023?03?23。
YIN Chunyong, born in 1977, Ph. D., professor. His research interests include cyberspace security, big data mining, privacy protection, artificial intelligence, new computing.
ZHANG Yangchun, born in 1999, M. S. candidate. Her research interests include anomaly detection, deep learning, log analysis.