尹春勇,張楊春
基于CNN和Bi-LSTM的無監(jiān)督日志異常檢測(cè)模型
尹春勇*,張楊春
(南京信息工程大學(xué) 計(jì)算機(jī)學(xué)院、網(wǎng)絡(luò)空間安全學(xué)院,南京 210044)( ? 通信作者電子郵箱yinchunyong@hotmail.com)
日志能記錄系統(tǒng)運(yùn)行時(shí)的具體狀態(tài),而自動(dòng)化的日志異常檢測(cè)對(duì)網(wǎng)絡(luò)安全至關(guān)重要。針對(duì)日志語句隨時(shí)間演變導(dǎo)致異常檢測(cè)準(zhǔn)確率低的問題,提出一種無監(jiān)督日志異常檢測(cè)模型LogCL。首先,通過日志解析技術(shù)將半結(jié)構(gòu)化的日志數(shù)據(jù)轉(zhuǎn)換為結(jié)構(gòu)化的日志模板;其次,使用會(huì)話和固定窗口將日志事件劃分為日志序列;再次,提取日志序列的數(shù)量特征,使用自然語言處理技術(shù)對(duì)日志模板進(jìn)行語義特征提取,并利用詞頻-詞語逆頻率(TF-IWF)算法生成加權(quán)的句嵌入向量;最后,將特征向量輸入一個(gè)并列的基于卷積神經(jīng)網(wǎng)絡(luò)(CNN)和雙向長(zhǎng)短期記憶(Bi-LSTM)網(wǎng)絡(luò)的模型中進(jìn)行檢測(cè)。在兩個(gè)公開的真實(shí)數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果表明,所提模型較基準(zhǔn)模型LogAnomaly在異常檢測(cè)的F1?score上分別提高了3.6和2.3個(gè)百分點(diǎn)。因此LogCL能夠?qū)θ罩緮?shù)據(jù)進(jìn)行有效的異常檢測(cè)。
異常檢測(cè);深度學(xué)習(xí);日志分析;詞嵌入;卷積神經(jīng)網(wǎng)絡(luò);雙向長(zhǎng)短期記憶網(wǎng)絡(luò)
隨著移動(dòng)通信設(shè)備和互聯(lián)網(wǎng)行業(yè)的快速發(fā)展,計(jì)算機(jī)軟件系統(tǒng)的規(guī)模越來越大,各種漏洞和故障頻繁發(fā)生,外部故障如惡意攻擊和內(nèi)部故障如內(nèi)存過載等都有可能導(dǎo)致系統(tǒng)中止,而系統(tǒng)中極小的問題可能會(huì)影響用戶的體驗(yàn),甚至造成巨大的經(jīng)濟(jì)損失,因此準(zhǔn)確、及時(shí)地檢測(cè)異常對(duì)于提高大型系統(tǒng)的可用性和可靠性至關(guān)重要。異常檢測(cè)[1]以數(shù)據(jù)為基礎(chǔ),通過模型和算法對(duì)偏離值進(jìn)行檢測(cè),旨在發(fā)現(xiàn)異常數(shù)據(jù)。為了方便故障的識(shí)別,大多數(shù)系統(tǒng)都會(huì)在控制臺(tái)生成日志[2]。日志數(shù)據(jù)記錄系統(tǒng)運(yùn)行期間的詳細(xì)信息和應(yīng)用程序的行為,當(dāng)系統(tǒng)發(fā)生故障時(shí),操作人員可以通過日志記錄的事件檢測(cè)和調(diào)試故障維護(hù)系統(tǒng)的安全,因此日志是異常檢測(cè)最重要的信息源之一。
雖然系統(tǒng)日志對(duì)故障診斷有很大的幫助,但是當(dāng)前計(jì)算機(jī)系統(tǒng)具有高度復(fù)雜性,產(chǎn)生的日志數(shù)量非常大,例如商業(yè)云程序每小時(shí)大約產(chǎn)生十億字節(jié)的數(shù)據(jù)[3]。處理日志異常的傳統(tǒng)方法是靠操作人員匹配正則表達(dá)式或搜索關(guān)鍵詞如“failure”來手動(dòng)分析日志,這種方法非常耗時(shí)且容易出錯(cuò),因此依賴人工分析海量數(shù)據(jù)不現(xiàn)實(shí)。多年來,研究者提出了一系列基于數(shù)據(jù)驅(qū)動(dòng)的方法,通過分析日志數(shù)據(jù)自動(dòng)檢測(cè)異常,和手動(dòng)檢測(cè)相比,這些方法實(shí)現(xiàn)了更高效的檢測(cè)。例如,文獻(xiàn)[4-5]中將每種日志事件視為一個(gè)獨(dú)立的維度,通過機(jī)器學(xué)習(xí)技術(shù)挖掘日志序列的數(shù)量特征進(jìn)行異常檢測(cè),此類方法反映了序列的模式特征,但沒有考慮日志文本的語義信息,容易將新類型模板錯(cuò)誤地標(biāo)記為異常,導(dǎo)致了較高的誤報(bào)率。文獻(xiàn)[6-7]中基于日志模板提取語義特征,在一定程度上提高了異常檢測(cè)的準(zhǔn)確率。日志由單詞組成,因此單詞的語義決定了日志的語義,但現(xiàn)有方法只是簡(jiǎn)單地采用詞嵌入模型將單詞映射到詞向量中,忽略了單詞和日志語句之間的關(guān)系。當(dāng)前,如何高效地檢測(cè)系統(tǒng)異常仍然是一個(gè)巨大的挑戰(zhàn),這是由系統(tǒng)運(yùn)行的特點(diǎn)決定的。首先,計(jì)算機(jī)系統(tǒng)大部分時(shí)間都處于正常運(yùn)行的狀態(tài),異常狀態(tài)比較罕見,這使正常日志和異常日志的分布并不均勻,導(dǎo)致日志數(shù)據(jù)不平衡問題,因此普通的二元分類機(jī)制難以在異常檢測(cè)中取得較好的效果。其次,在軟件的開發(fā)和維護(hù)中,會(huì)產(chǎn)生各種各樣的日志和復(fù)雜的異常模式,日志語句會(huì)不斷發(fā)生變化,日志語句的這種不穩(wěn)定性導(dǎo)致異常檢測(cè)準(zhǔn)確率較低。最后,當(dāng)訓(xùn)練數(shù)據(jù)平衡且足夠時(shí),監(jiān)督方法通常非常準(zhǔn)確,但由于缺乏足夠的異常數(shù)據(jù)而不適用于異常檢測(cè);而無監(jiān)督方法因?qū)ξ粗惓5母兄m用于異常檢測(cè),但是大多數(shù)方法需要提高準(zhǔn)確性,因此本文重點(diǎn)研究無監(jiān)督日志異常檢測(cè)。為了提高算法性能,提出一種無監(jiān)督日志異常檢測(cè)模型LogCL。LogCL包括三個(gè)階段:日志解析、特征提取和異常檢測(cè)。實(shí)驗(yàn)結(jié)果表明,LogCL具有通用性和優(yōu)異的檢測(cè)性能,彌補(bǔ)了傳統(tǒng)方法的不足。
本文的主要工作如下:
1)提出一種新型的端到端日志異常檢測(cè)模型,只需要使用部分正常的日志數(shù)據(jù)進(jìn)行訓(xùn)練,模型就能較好地學(xué)習(xí)到正常日志流的執(zhí)行模式,避免了異常檢測(cè)中數(shù)據(jù)不平衡的問題,不需要異常日志來構(gòu)建檢測(cè)模型,能減少模型構(gòu)建的工作量;
2)設(shè)計(jì)了兩種特征提取方式,分別提取日志序列的數(shù)量特征和語義特征,在語義表示中,充分考慮單詞的重要性程度對(duì)日志語句的影響,使模型對(duì)日志語言的演變具有魯棒性;
3)結(jié)合卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)和雙向長(zhǎng)短期記憶(Bi-directional Long Short-Term Memory, Bi-LSTM)網(wǎng)絡(luò)構(gòu)建了一個(gè)并列的異常檢測(cè)模型,并對(duì)兩個(gè)真實(shí)環(huán)境下收集的日志數(shù)據(jù)集進(jìn)行評(píng)估,結(jié)果驗(yàn)證了LogCL能夠有效檢測(cè)到各種故障。
在生產(chǎn)實(shí)踐中,系統(tǒng)日志已經(jīng)被廣泛用于異常檢測(cè),目前在日志異常檢測(cè)方面的主要技術(shù)是傳統(tǒng)的機(jī)器學(xué)習(xí)和深度學(xué)習(xí)。
傳統(tǒng)的機(jī)器學(xué)習(xí)技術(shù)能夠從各種數(shù)據(jù)中挖掘隱藏信息。Lou等[4]首次將不變量挖掘(Invariants Mining, IM)使用到日志異常檢測(cè)中,通過算法從事件計(jì)數(shù)向量中挖掘稀疏整數(shù)值的不變量,挖掘出的不變量能夠揭示程序工作流程中固有的線性特征,若檢測(cè)的日志序列不遵循不變量原則就被判定為異常。Lin等[5]使用凝聚層次聚類技術(shù)將類似的日志序列分組到集群中并且創(chuàng)建知識(shí)庫(kù),通過檢查新集群中的代表日志序列是否和已有集群中的代表序列相同來判定異常。Xu等[8]使用主成分分析法檢測(cè)異常,把日志事件矢量化為事件計(jì)數(shù)向量,將日志序列投影到正??臻g和異??臻g。對(duì)于傳入的日志序列,根據(jù)投影后日志序列所屬的空間將它識(shí)別為正常或異常。Liang等[9]訓(xùn)練支持向量機(jī)(Support Vector Machine, SVM)分類器來檢測(cè)日志事件故障。在高維空間中構(gòu)造決策超平面,使超平面和不同類別中最近的數(shù)據(jù)點(diǎn)之間的距離最大化,分離出不同的類,從而檢測(cè)異常。最近,Han等[10]提出魯棒性在線改進(jìn)異常檢測(cè)框架ROEAD(Robust Online Evolving Anomaly Detection)和OES(Online Evolving SVM)算法,利用自然語言處理技術(shù)去除噪聲的影響,提高了SVM算法在日志異常檢測(cè)中的性能。
為解決基于機(jī)器學(xué)習(xí)的方法通常依賴人工設(shè)計(jì)的特征表示日志數(shù)據(jù)的問題,深度學(xué)習(xí)逐漸受到研究者的廣泛關(guān)注,基于深度學(xué)習(xí)的日志異常檢測(cè)技術(shù)迅速發(fā)展。當(dāng)前,學(xué)術(shù)界提出了一系列基于監(jiān)督學(xué)習(xí)的方法,監(jiān)督方法將異常檢測(cè)視為正常和異常之間的二分類任務(wù)。Lu等[11]利用CNN自動(dòng)學(xué)習(xí)系統(tǒng)日志中的事件,CNN能夠利用多個(gè)過濾器挖掘日志上下文中的關(guān)系以及捕獲日志模板語義嵌入中的相關(guān)性。Li等[12]提出的SwissLog模型利用BERT(Bidirectional Encoder Representation from Transformers)語言模型編碼日志模板,將語義信息和日志之間的時(shí)間間隔信息相結(jié)合,訓(xùn)練了一個(gè)基于注意力機(jī)制的Bi-LSTM網(wǎng)絡(luò)檢測(cè)異常。該模型通過對(duì)不同事件賦予權(quán)重,自動(dòng)分析事件的重要性,能夠解決日志格式變化的問題。Huang等[13]首次將Transformer模型應(yīng)用到日志異常檢測(cè)的任務(wù)中,利用分層Transformer對(duì)日志模板序列和參數(shù)值進(jìn)行建模,設(shè)計(jì)注意力機(jī)制將語義信息和參數(shù)值合并以進(jìn)行分類,對(duì)不穩(wěn)定的日志數(shù)據(jù)具有魯棒性。雖然監(jiān)督方法能夠正確地診斷系統(tǒng)的狀況,但它最大的缺陷是在訓(xùn)練階段需要大量的正常和異常數(shù)據(jù),而人工標(biāo)注數(shù)據(jù)是非常耗時(shí)的一項(xiàng)工作,這在現(xiàn)實(shí)生產(chǎn)環(huán)境中不易實(shí)現(xiàn);而且人工標(biāo)注數(shù)據(jù)有可能出現(xiàn)標(biāo)注錯(cuò)誤,這會(huì)導(dǎo)致模型在檢測(cè)時(shí)產(chǎn)生誤報(bào),無法達(dá)到很好的效果。
由于監(jiān)督學(xué)習(xí)存在無法克服的缺點(diǎn),相關(guān)研究者也進(jìn)行了無監(jiān)督和半監(jiān)督方法的研究。Du等[14]提出的DeepLog框架把日志信息當(dāng)作自然語言序列處理,從正常執(zhí)行流中自動(dòng)學(xué)習(xí)日志模式,通過確定傳入的日志事件是否違反堆疊式LSTM模型的預(yù)測(cè)結(jié)果來檢測(cè)異常。Meng等[6]設(shè)計(jì)了一種基于同義詞和反義詞的模板表示方法template2vec,將傳入的日志事件與現(xiàn)有的模板匹配,而不是直接將它們標(biāo)記為異常,從而提高了準(zhǔn)確性。Yang等[15]提出了基于概率標(biāo)簽估計(jì)的半監(jiān)督學(xué)習(xí)框架PLELog,采用聚類方法HDBSCAN[16]對(duì)未標(biāo)記日志序列的標(biāo)簽進(jìn)行概率估計(jì),解決了標(biāo)簽不足的問題;并設(shè)計(jì)了一種基于注意力機(jī)制的門控循環(huán)單元神經(jīng)網(wǎng)絡(luò)進(jìn)行異常檢測(cè)。Li等[17]使用深度時(shí)間卷積網(wǎng)絡(luò)從日志事件中提取細(xì)粒度特征,并開發(fā)了一個(gè)新型聯(lián)邦學(xué)習(xí)框架以支持互聯(lián)網(wǎng)設(shè)備建立更全面的異常檢測(cè)模型。Duan等[18]使用一種基于值函數(shù)的強(qiáng)化學(xué)習(xí)方法Q?learning[19]構(gòu)建異常檢測(cè)模型,從正常執(zhí)行中學(xué)習(xí)日志模式的有向非循環(huán)圖,求解每個(gè)日志執(zhí)行路徑的Q值,并使用Q值確定日志序列是否異常。
考慮到日志語句會(huì)隨著時(shí)間而改變,現(xiàn)有的方法無法充分利用日志的語義特征,當(dāng)系統(tǒng)更新引入新類型日志模板時(shí),現(xiàn)有的模型難以準(zhǔn)確檢測(cè)出新類型的日志模板,為此,提出了LogCL模型解決這一問題。
本文LogCL模型的框架如圖1所示,主要包括離線訓(xùn)練和在線檢測(cè)兩個(gè)階段,每個(gè)階段主要包括三個(gè)步驟:預(yù)處理、特征提取和異常檢測(cè)。
日志數(shù)據(jù)詳細(xì)記錄系統(tǒng)的狀態(tài)和性能指標(biāo),而不同系統(tǒng)產(chǎn)生的日志形式區(qū)別大、異構(gòu)復(fù)雜性高,這給異常檢測(cè)帶來了一定的困難,圖2顯示了3種不同的系統(tǒng)日志。
可以看出,一條日志由HEADER和MESSAGE兩部分組成。其中,HEADER包含不同的字段如時(shí)間戳、消息類型、消息級(jí)別如“INFO”等。MESSAGE是一種沒有格式約束的文本,由常量部分和變量部分組成:常量部分即描述日志事件的關(guān)鍵字,變量部分是隨著系統(tǒng)運(yùn)行而動(dòng)態(tài)變化的參數(shù)。使用原始日志事件難以從海量日志數(shù)據(jù)中提取出有價(jià)值的信息,因此需要日志解析技術(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字典實(shí)現(xiàn)高效的日志解析;LogStamp[21]考慮到了語義,將日志解析問題轉(zhuǎn)換為序列標(biāo)記問題,能夠在線自動(dòng)解析日志。基于啟發(fā)式的方法認(rèn)為日志和一般的文本數(shù)據(jù)相比具有一些獨(dú)有的特征,在準(zhǔn)確性和時(shí)間效率方面優(yōu)于其他技術(shù),因此本文使用基于啟發(fā)式方法的日志解析器Drain[22]。Drain利用固定深度解析樹維護(hù)日志組,通過遍歷樹中的葉節(jié)點(diǎn)形成日志模板,能夠以流式的方式解析日志。圖3展示了將HDFS日志事件映射到模板的過程,一條日志“Verification succeeded for blk_-2827716238972737794”被替換為模板“Verification succeeded for<*>”,其中參數(shù)被抽象為<*>符號(hào)。
圖2 日志示例
圖3 HDFS日志解析過程
此后,對(duì)解析出來的日志模板進(jìn)行數(shù)據(jù)處理,以便后續(xù)進(jìn)行特征提取。首先刪除非字母的內(nèi)容,包括標(biāo)點(diǎn)符號(hào)、空格、下畫線、換行符等。未登錄詞(Out Of Vocabulary, OOV)是指訓(xùn)練語料庫(kù)中沒有出現(xiàn)過的詞,又稱為集外詞。日志模板中存在一些罕見的長(zhǎng)詞難以提取信息,為了更好地解決OOV問題,使用自然語言處理中的子詞分割方法來減少詞匯量,例如長(zhǎng)詞“addStoredBlock”被拆分為3個(gè)頻繁出現(xiàn)的子詞“add”“stored”“block”,通過這種方法可以有效減少OOV單詞的數(shù)量。停用詞是在信息檢索工作中為了提高搜索效率而忽略掉的某些詞,例如“is”“the”等,這些詞對(duì)日志數(shù)據(jù)的處理沒有價(jià)值,利用Python中的NLTK庫(kù)去除停用詞。
預(yù)處理之后,以日志模板作為輸入來提取特征。本文從兩個(gè)方面進(jìn)行特征提取,即數(shù)量特征提取和語義特征提取。
2.2.1數(shù)量特征提取
2.2.2語義特征提取
日志事件的大部分內(nèi)容是英文單詞,這些單詞自身都有語義,例如“succeeded”和“failed”的語義完全不同,“finished”和“completed”有著相近的語義。隨著計(jì)算機(jī)系統(tǒng)的升級(jí)等,日志事件的語法會(huì)產(chǎn)生改變,但是發(fā)生異常時(shí)的語義是相同或者相近的。因此日志的向量表示需要滿足兩個(gè)條件:一方面應(yīng)當(dāng)使語義相似的單詞具有空間上相近的向量,即向量之間的余弦相似度較高;另一方面應(yīng)該具備可區(qū)分性,即能夠表示出不同日志事件之間的語義差異。在大量文本語料庫(kù)上預(yù)先訓(xùn)練過的通用語言模型可以保留一般的文本結(jié)構(gòu),當(dāng)前部分工作如PLELog[15]和CNN-BiLSTM[23]利用Word2Vec或GloVe來提取詞向量,這兩種模型都是以單詞作為基本單位進(jìn)行訓(xùn)練的,這種方式僅能對(duì)詞庫(kù)中的單詞進(jìn)行向量表示而無法處理OOV的情況,并且也難以處理同一單詞的變形如ing形式。而FastText[24]使用更小的單位即字母來訓(xùn)練詞向量,考慮了局部詞序特征,可以有效處理長(zhǎng)詞和OOV單詞,使同一單詞的不同形式擁有相似的詞向量。因此本文使用自然語言模型FastText在Common Crawl和維基百科語料庫(kù)預(yù)訓(xùn)練的詞向量,從預(yù)處理后的日志事件中提取每個(gè)單詞的語義信息。
FastText算法可以快速捕獲自然語言中單詞之間的內(nèi)在關(guān)系,該模型首先使用-gram方法,考慮字符級(jí)別的信息,生成用來表示語料的向量,并且使用分層softmax線性分類器計(jì)算概率分布,大幅減少了模型訓(xùn)練的時(shí)間。損失函數(shù)為:
其中:為樣本個(gè)數(shù);為第個(gè)樣本的正則化特征,為第個(gè)樣本對(duì)應(yīng)的特征標(biāo)簽;和是權(quán)重矩陣;為softmax函數(shù)。
在獲取每個(gè)單詞的詞嵌入向量之后,將每一條日志事件都看作自然語言中的句子。采用詞頻-詞語逆頻率(Term Frequency-Inverse Word Frequency, TF-IWF)算法[25]表示每個(gè)單詞和日志事件的關(guān)系。TF-IWF改進(jìn)了詞頻-逆向文件頻率算法,是一種廣泛應(yīng)用于信息檢索和數(shù)據(jù)挖掘的加權(quán)技術(shù),可以有效地衡量單詞在句子中的重要性,其中,TF詞頻矩陣度量一個(gè)單詞與給定文本的關(guān)聯(lián),IWF度量該單詞的重要性,計(jì)算公式如下:
每個(gè)日志事件的句嵌入向量都有相同的維度,語義特征提取模塊使LogCL能夠區(qū)分不同的日志事件,處理不穩(wěn)定的日志數(shù)據(jù)。
本文基于CNN和Bi-LSTM構(gòu)造了并列異常檢測(cè)模型CL,如圖1所示,其中CL1負(fù)責(zé)處理日志計(jì)數(shù)向量,CL2負(fù)責(zé)處理語義特征向量,將CL1和CL2的輸出結(jié)果進(jìn)行合并操作之后輸入到全連接層進(jìn)行線性變換得到預(yù)測(cè)的結(jié)果。異常檢測(cè)的網(wǎng)絡(luò)結(jié)構(gòu)具體如圖4所示。
圖4 異常檢測(cè)網(wǎng)絡(luò)結(jié)構(gòu)
由于CNN的卷積層可以提取局部特征信息,在日志序列中,相鄰的日志具有一定的相關(guān)性,因此本文采用一維卷積1D-CNN[26]來學(xué)習(xí)日志序列內(nèi)部的模式,1D-CNN只執(zhí)行一維卷積即標(biāo)量的乘法和加法,它的配置簡(jiǎn)單且有效,適合用于從固定長(zhǎng)度的片段中提取特征。使用一維卷積核掃描日志序列的嵌入向量,采用兩端補(bǔ)0的方式解決維度不平衡問題。
本實(shí)驗(yàn)開發(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)境下運(yùn)行,使用GeForce RTX 3060 GPU加速模型訓(xùn)練。
為了訓(xùn)練和評(píng)估所提方法,使用了2個(gè)從真實(shí)應(yīng)用環(huán)境中采集的數(shù)據(jù)集:HDFS和BGL,以上數(shù)據(jù)集均從開放的日志數(shù)據(jù)集合Loghub(https://github.com/logpai/loghub)中獲得,具體信息如表1所示。
表1 兩個(gè)數(shù)據(jù)集的統(tǒng)計(jì)信息
HDFS:該數(shù)據(jù)集從亞馬遜EC2平臺(tái)上203個(gè)節(jié)點(diǎn)的集群收集,共包含11 175 629條日志事件,由Hadoop領(lǐng)域?qū)<野凑誦lock_id標(biāo)識(shí)符分組進(jìn)行標(biāo)記,共分成575 061條序列,其中異常序列16 838條,HDFS的block_id記錄每個(gè)數(shù)據(jù)塊操作如寫入、復(fù)制、刪除等。
BGL:該數(shù)據(jù)集由勞倫斯利弗莫爾國(guó)家實(shí)驗(yàn)室的BlueGene/L超級(jí)計(jì)算機(jī)系統(tǒng)記錄,包含4 747 963條日志信息,其中有348 460條異常日志。
采用精確度、召回率和F1-score(1)作為評(píng)價(jià)指標(biāo):精確度是指正確識(shí)別為異常的日志序列占模型識(shí)別為異常的所有序列的比值;召回率是正確識(shí)別為異常的日志序列占所有實(shí)際異常的比值;F1-score是精確度和召回率的調(diào)和平均數(shù)。它們的計(jì)算公式如下:
其中:(True Positive)表示異常日志序列被模型判定為異常的數(shù)量;(False Negative)表示異常日志序列被模型判定為正常的數(shù)量;(False Positive)表示正常日志序列被模型判定為異常的數(shù)量。
本文選擇三種基于機(jī)器學(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)模型詳情
實(shí)驗(yàn)結(jié)果如表3所示,可以看出,使用日志語義表示的方法的魯棒性普遍較好,而只提取數(shù)量特征的方法LogCluster效果較差,這表明從語義角度理解日志序列的內(nèi)容可以提高對(duì)異常的檢測(cè)率。在兩個(gè)數(shù)據(jù)集上,LogCL的F1-score指標(biāo)都超過了0.98,領(lǐng)先所有的無監(jiān)督方法,比使用語義特征提取的基準(zhǔn)模型LogAnomaly分別高出3.6和2.3個(gè)百分點(diǎn)。這是由于LogAnomaly僅僅構(gòu)造同義詞和反義詞集,無法識(shí)別到專業(yè)領(lǐng)域的詞,從而只能捕獲到有限的語義特征;而LogCL使用的FastText不需要操作人員手動(dòng)更新詞庫(kù),并且考慮到了單詞的重要性程度對(duì)日志語句的影響,使日志語句的語義特征表示更加準(zhǔn)確,從而能獲得最佳的性能。CNN-BiLSTM方法在異常檢測(cè)部分同樣結(jié)合了CNN和Bi?LSTM,不同的是該方法使用的是并行結(jié)構(gòu),利用CNN和Bi?LSTM分別來處理參數(shù)和日志模板;而本文使用的是串行結(jié)構(gòu),同時(shí)學(xué)習(xí)日志的局部特征和前后依賴性特征。CNN?BiLSTM方法采用Word2Vec提取詞向量,但Word2Vec只能對(duì)詞庫(kù)中的單詞進(jìn)行向量化,難以處理OOV的情況,并且僅僅表示了單詞的詞向量,忽略了單詞和日志語句之間的聯(lián)系,因此該方法的性能不佳。
表3 HDFS和BGL數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果
在HDFS數(shù)據(jù)集上,LogCL表現(xiàn)出了較好的檢測(cè)效果,精確度和召回率達(dá)到了0.985以上,LogCluster取得了最高的精確度,但是召回率過低,導(dǎo)致F1-score較低,說明該方法遺漏了很多異常,而對(duì)異常檢測(cè)而言,召回率是比精確度更重要的指標(biāo),因?yàn)槁z異??赡軙?huì)導(dǎo)致巨大的經(jīng)濟(jì)損失和其他的潛在危險(xiǎn)。雖然監(jiān)督方法LogRobust總體上比無監(jiān)督方法表現(xiàn)好,但是監(jiān)督方法需要標(biāo)記大量的異常數(shù)據(jù),標(biāo)記工作需要系統(tǒng)領(lǐng)域的專業(yè)知識(shí),而LogCL只需要使用正常的數(shù)據(jù)進(jìn)行訓(xùn)練,這在實(shí)際生產(chǎn)中非常容易收集,因?yàn)楫?dāng)系統(tǒng)正常運(yùn)行而沒有任何警報(bào)時(shí),所產(chǎn)生的日志都可以視為正常日志,因此更具有實(shí)用性。在BGL數(shù)據(jù)集上,LogCL表現(xiàn)出了最好的異常檢測(cè)效果,F(xiàn)1-score達(dá)到了0.983,比ADR高出1.6個(gè)百分點(diǎn)。ADR的召回率達(dá)到了1.000,說明該方法可以追蹤所有的異常,但是它的精確度不高,錯(cuò)誤地將正常日志序列判定為異常,導(dǎo)致模型產(chǎn)生假警報(bào),從而浪費(fèi)操作人員大量的時(shí)間。在這個(gè)數(shù)據(jù)集上,LogRobust的效果不如部分無監(jiān)督方法,說明該方法通用性不強(qiáng)。
為了研究LogCL對(duì)新類型日志的檢測(cè)效果,統(tǒng)計(jì)了訓(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%,可以看出測(cè)試數(shù)據(jù)中的新類型模板數(shù)量都在總數(shù)的一半或以上,對(duì)于日志數(shù)據(jù)的這種不穩(wěn)定性,LogCL可以通過學(xué)習(xí)OOV詞的語義特征來判定新類型模板是否異常。為了進(jìn)一步評(píng)估模型對(duì)新類型模板的有效性,在HDFS上使用3 000~6 000條序列進(jìn)行訓(xùn)練,表4統(tǒng)計(jì)了新模板的比例和檢測(cè)結(jié)果,可以看到隨著訓(xùn)練比率的增加,在測(cè)試集上新類型模板的占比從56.7%降低到46.7%,模型表現(xiàn)出了出色的效果,即使在新模板占比高達(dá)56.7%時(shí),F(xiàn)1-score也達(dá)到了0.969,由于經(jīng)過語義表示的正常日志事件在發(fā)生變化后,它的語義向量仍然可以被表示為和原始事件相似的向量,而異常事件的向量和正常事件的向量相差較大,因此LogCL對(duì)不穩(wěn)定的日志事件具有魯棒性。
圖5展示了兩個(gè)數(shù)據(jù)集中候選模板數(shù)對(duì)檢測(cè)效果的影響,將其他參數(shù)設(shè)置為默認(rèn)值??梢钥闯霎?dāng)過小時(shí),模型可以檢測(cè)到所有的異常數(shù)據(jù),但代價(jià)是將大量正常日志也判定為異常,當(dāng)過大時(shí)會(huì)遺漏很多異常。在HDFS數(shù)據(jù)集上,當(dāng)參數(shù)在6~16時(shí),模型表現(xiàn)出了較高的性能,在BGL數(shù)據(jù)集上,=20時(shí)達(dá)到了很好的效果,超過100時(shí)檢測(cè)效率下降。實(shí)驗(yàn)結(jié)果表明,通過合理設(shè)置參數(shù)可以平衡精確度和召回率,從而得到最優(yōu)的F1-score。
表4 對(duì)新類型日志的評(píng)估結(jié)果
圖5 候選模板數(shù)對(duì)模型性能的影響
為了評(píng)估每個(gè)模塊對(duì)實(shí)驗(yàn)結(jié)果的影響,在HDFS數(shù)據(jù)集上進(jìn)行了三個(gè)方面的消融實(shí)驗(yàn),結(jié)果如表5所示,其中:A模型是在LogCL中去除語義特征提取模塊;B模型是在LogCL中去除日志計(jì)數(shù)向量即數(shù)量特征提取模塊;C模型是在異常檢測(cè)算法中去除1D-CNN層??梢钥闯稣Z義特征提取使模型檢測(cè)的F1-score性能提高了4.1個(gè)百分點(diǎn),這表明將日志事件視為自然語言來處理效果很好。日志計(jì)數(shù)向量和1D?CNN使模型的F1-score分別提高了0.9和0.7個(gè)百分點(diǎn),消融實(shí)驗(yàn)的結(jié)果表明這三個(gè)模塊對(duì)異常檢測(cè)都有一定的作用。
表5 消融實(shí)驗(yàn)結(jié)果
為了解決日志數(shù)據(jù)的類不平衡問題,本文提出了一種無監(jiān)督異常檢測(cè)模型LogCL,通過判定數(shù)據(jù)是否符合正常日志流運(yùn)行模式來檢測(cè)異常。針對(duì)日志語句隨時(shí)間演變導(dǎo)致異常檢測(cè)準(zhǔn)確率低的問題,使用自然語言處理技術(shù)提取日志中單詞的語義特征,通過TF-IWF算法得到加權(quán)的句嵌入向量,語義特征提取使得模型能夠應(yīng)對(duì)新類型的日志模板。結(jié)合CNN和Bi-LSTM的神經(jīng)網(wǎng)絡(luò)能夠同時(shí)學(xué)習(xí)到日志的局部特征和內(nèi)部的前后依賴性特征,實(shí)驗(yàn)結(jié)果表明,LogCL在異常檢測(cè)任務(wù)上具有較好的效果。本文語義特征提取的重點(diǎn)對(duì)象是單條日志語句,在生產(chǎn)實(shí)際中,操作人員有時(shí)會(huì)基于多條日志一起分析故障,因此在以后的工作中將研究多類型日志的語義特征表示。當(dāng)前大型系統(tǒng)日志的規(guī)模不斷擴(kuò)大,日志模板數(shù)量隨之增加,未來也將探索更高效的語義提取方法從而減少日志異常檢測(cè)的執(zhí)行時(shí)間和內(nèi)存計(jì)算成本。
[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模型的日志異常檢測(cè)方法[J].計(jì)算機(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] 王小林,楊林,王東,等. 改進(jìn)的TF-IDF關(guān)鍵詞提取方法[J]. 計(jì)算機(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ù)挖掘、隱私保護(hù)、人工智能、新型計(jì)算; 張楊春(1999—),女,江蘇南通人,碩士研究生,主要研究方向:異常檢測(cè)、深度學(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.