国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于深度學(xué)習(xí)的系統(tǒng)日志異常檢測(cè)研究

2019-10-18 11:37王易東劉培順王彬
關(guān)鍵詞:參數(shù)值日志性能

王易東,劉培順,王彬

基于深度學(xué)習(xí)的系統(tǒng)日志異常檢測(cè)研究

王易東1,劉培順1,王彬2

(1. 中國(guó)海洋大學(xué)信息科學(xué)與工程學(xué)院,山東 青島 266100;2. 中國(guó)海洋大學(xué)繼續(xù)教育學(xué)院,山東 青島 266100)

系統(tǒng)日志反映了系統(tǒng)運(yùn)行狀態(tài),記錄著系統(tǒng)中特定事件的活動(dòng)信息, 快速準(zhǔn)確地檢測(cè)出系統(tǒng)異常日志,對(duì)維護(hù)系統(tǒng)安全穩(wěn)定具有重要意義。提出了一種基于GRU神經(jīng)網(wǎng)絡(luò)的日志異常檢測(cè)算法,基于log key技術(shù)實(shí)現(xiàn)日志解析,利用執(zhí)行路徑的異常檢測(cè)模型和參數(shù)值的異常檢測(cè)模型實(shí)現(xiàn)日志異常檢測(cè),具有參數(shù)少、訓(xùn)練快的優(yōu)點(diǎn),在取得較高檢測(cè)精度的同時(shí)提升了運(yùn)行速度,適用于大型信息系統(tǒng)的日志分析。

日志異常檢測(cè);深度學(xué)習(xí);GRU神經(jīng)網(wǎng)絡(luò)

1 引言

在異常檢測(cè)領(lǐng)域中,系統(tǒng)日志異常檢測(cè)一直是一個(gè)研究熱點(diǎn)。系統(tǒng)日志作為具有多種自由格式的非結(jié)構(gòu)化數(shù)據(jù)集,和文本分析、統(tǒng)計(jì)學(xué)、機(jī)器學(xué)習(xí)等學(xué)科都有著較為緊密的結(jié)合。多年來,各國(guó)研究人員將不同領(lǐng)域的方法應(yīng)用到日志異常檢測(cè),并取得了大量出色研究成果。Xu[1]等利用抽象語法樹(AST,abstract syntax tree)和主成分分析(PCA,principal component analysis)方法處理解析后的日志特征集,降低了待分析特征集的復(fù)雜度,得到了有效的異常檢測(cè)結(jié)果。不過該方法需要預(yù)先獲取程序源代碼和日志的種類,不能作為一種通用的日志異常檢測(cè)方法。Yu[2]等提出基于Workflow監(jiān)控的異常檢測(cè)系統(tǒng)——CloudSeer,它可以通過檢查交錯(cuò)日志序列中的錯(cuò)誤信息來獲取執(zhí)行異常。該方法在一定程度上解決了日志的并發(fā)性問題,但它借助自動(dòng)機(jī)組實(shí)現(xiàn),其中某些特定的規(guī)則只適用于云基礎(chǔ)設(shè)施中的日志異常檢測(cè)。

近些年,深度學(xué)習(xí)蓬勃發(fā)展,不斷開創(chuàng)新的應(yīng)用模式,尤其在NLP(natural language processing)領(lǐng)域進(jìn)展巨大,大量NLP相關(guān)任務(wù)的最佳模型均在其基礎(chǔ)上建立。Du[3]等將系統(tǒng)日志建模為自然語言序列,提出了一種基于LSTM的深度神經(jīng)網(wǎng)絡(luò)模型——DeepLog。該模型從正常的日志數(shù)據(jù)中學(xué)習(xí)日志規(guī)則,當(dāng)檢測(cè)到的日志偏離正常規(guī)則時(shí),即認(rèn)定其為異常。實(shí)驗(yàn)結(jié)果表明,該方法在多個(gè)大型數(shù)據(jù)集上取得了較高的檢測(cè)精度,總體性能優(yōu)于其他基于傳統(tǒng)數(shù)據(jù)挖掘的日志異常檢測(cè)方法。然而在檢測(cè)效率方面,該方法仍有一定提升空間。

本文在N-gram語言模型[4]的基礎(chǔ)上,結(jié)合循環(huán)神經(jīng)網(wǎng)絡(luò)提出了一種基于GRU(gated recurrent unit)神經(jīng)網(wǎng)絡(luò)模型的日志異常檢測(cè)算法。針對(duì)復(fù)雜的非結(jié)構(gòu)化日志,首先提取log key,將日志解析為結(jié)構(gòu)化序列,然后使用解析得到的序列訓(xùn)練GRU神經(jīng)網(wǎng)絡(luò)模型用以檢測(cè)異常,具有參數(shù)少、訓(xùn)練快的優(yōu)點(diǎn),在取得較高檢測(cè)精度的同時(shí)提升了運(yùn)行速度。

2 基于GRU的日志異常檢測(cè)算法

2.1 基于logkey的日志解析方法

系統(tǒng)日志數(shù)據(jù)是一種非結(jié)構(gòu)化文本數(shù)據(jù),可以直接從日志文件中獲取,在對(duì)日志數(shù)據(jù)進(jìn)行分析之前,通常需要先將其解析為結(jié)構(gòu)化數(shù)據(jù)。每個(gè)日志條目由常量和變量?jī)刹糠纸M成,常量是指由系統(tǒng)程序源碼中的print語句直接打印出的消息,變量則是常量以外的部分,通常是時(shí)間戳或參數(shù)值。例如,mysql中的日志“:,256.0”,常量部分為“:,”,“256.0”則是變量,表示數(shù)據(jù)庫(kù)緩沖池大小。所有相似日志條目中的公共常量消息叫作logkey,可以用來表示日志消息類型。正常日志的輸出會(huì)遵從一定的流程和順序,通常稱為日志的執(zhí)行路徑(execution path),logkey序列能夠表示日志的執(zhí)行路徑,因此從日志中提取logkey是一種有效的日志解析方法。參數(shù)值是日志中非常有價(jià)值的一類信息,反映了系統(tǒng)的健康狀態(tài)和性能,某些參數(shù)值還可以作為特定執(zhí)行序列的標(biāo)識(shí),如HDFS日志中的block_id,基于此能夠從多線程并發(fā)任務(wù)中提取出特定模塊的日志序列。

當(dāng)前業(yè)內(nèi)存在多種日志解析工具,Spell[5]是較為先進(jìn)的一種,它基于LCS思想設(shè)計(jì),由MIT的logPAI團(tuán)隊(duì)[6-7]開源實(shí)現(xiàn),能夠?qū)θ罩具M(jìn)行在線解析。本文使用Spell從日志數(shù)據(jù)中解析出logkey和參數(shù)值,作為日志異常檢測(cè)的基礎(chǔ)。

2.2 基于執(zhí)行路徑的異常檢測(cè)模型

日志異常檢測(cè)和單詞序列預(yù)測(cè)同屬于一類序列預(yù)測(cè)問題,將日志看作一種特殊的自然語言,logkey序列相當(dāng)于一個(gè)句子,序列中的每個(gè)logkey都可以看作一個(gè)單詞,因此可以采用單詞序列預(yù)測(cè)[4]的建模方法對(duì)日志異常檢測(cè)問題進(jìn)行建模?;谖墨I(xiàn)[3]的思路,本文設(shè)計(jì)并實(shí)現(xiàn)了一種基于GRU的神經(jīng)語言模型,該模型能夠通過序列的長(zhǎng)期依賴檢測(cè)異常。與文獻(xiàn)[3]中構(gòu)建的LSTM模型不同,本文模型使用GRU作為循環(huán)單元,具有參數(shù)少、訓(xùn)練快的優(yōu)點(diǎn),在取得較高檢測(cè)精度的同時(shí)提升了運(yùn)行速度。

基于GRU的執(zhí)行路徑異常檢測(cè)模型分為輸入層(input layer)、嵌入層(embedding layer)、隱藏層(hidden layer)和輸出層(output layer)。如圖1所示,模型每一個(gè)時(shí)間步(timestep)的輸入為log keyw?i,它和上一個(gè)時(shí)間步的記憶狀態(tài)共同計(jì)算得到當(dāng)前狀態(tài)。

隱藏層:該層是GRU網(wǎng)絡(luò)模型的核心部分,在隱藏層中,每個(gè)GRU節(jié)點(diǎn)都是一個(gè)記憶塊(memory block),如圖1所示,記憶塊之間相互連接,構(gòu)成一個(gè)完整的循環(huán)神經(jīng)網(wǎng)絡(luò)。單個(gè)GRU記憶塊的構(gòu)造如圖2所示,其中包含兩個(gè)門:更新門和重置門。更新門接收當(dāng)前輸入和上一時(shí)刻的隱藏層輸出,決定其中有多少信息需要繼續(xù)傳遞。通過Sigmoid激活函數(shù)處理輸入信息,更新門得到1個(gè)介于0和1之間的結(jié)果,其計(jì)算公式如下。

重置門則控制對(duì)歷史信息的遺忘程度,其表達(dá)式形式與更新門相同,只是線性變換參數(shù)及其作用不同。

圖1 執(zhí)行路徑異常檢測(cè)模型結(jié)構(gòu)

圖2 單個(gè)GRU塊內(nèi)部結(jié)構(gòu)

借助重置門,可以得到未被遺忘的歷史記憶。將其與當(dāng)前輸入通過tanh激活函數(shù)計(jì)算,即可得到GRU單元的當(dāng)前記憶內(nèi)容。

輸出層:數(shù)據(jù)通過更新門,從當(dāng)前記憶和歷史記憶中收集信息,兩者被保留的信息相加,就得到了當(dāng)前GRU單元在時(shí)間序列上的輸出。

當(dāng)前GRU塊的輸出在時(shí)間序列上作為下一個(gè)GRU塊的輸入,而序列中最后一個(gè)GRU塊的輸出則作為整個(gè)模型輸出層的輸入。模型的輸出層采用了一個(gè)Softmax多類分類器,通過Softmax函數(shù)計(jì)算得到一個(gè)維向量,每一維度的值代表logkey表中的每個(gè)元素出現(xiàn)在當(dāng)前位置的概率,所有概率之和為1。計(jì)算過程的數(shù)學(xué)形式如下。

由此可得出每個(gè)logkey出現(xiàn)的概率。

將logkey表按照輸出的概率值從大到小排列,選取其中前個(gè)組成集合。若系統(tǒng)當(dāng)前時(shí)刻輸出日志的logkey存在于集合中,則認(rèn)為該日志是正常的,否則視為異常。

為了提升性能,模型中的GRU網(wǎng)絡(luò)被設(shè)計(jì)為多層的實(shí)現(xiàn)形式。上層GRU的隱藏層輸出作為下層GRU的輸入,層與層之間使用dropout方法對(duì)數(shù)據(jù)進(jìn)行正則化。圖3給出了一個(gè)雙層GRU語言模型的結(jié)構(gòu),圖中虛線箭頭表示使用dropout的連接。如果應(yīng)用場(chǎng)景需要更高的檢測(cè)精度,模型的層數(shù)可以視實(shí)際情況增加。

圖3 雙層GRU模型結(jié)構(gòu)

模型共包括4個(gè)參數(shù):、、、。其中,表示模型預(yù)測(cè)結(jié)果的可信范圍,若觀測(cè)值存在于前個(gè)預(yù)測(cè)值組成的集合中,則認(rèn)為其正常,的默認(rèn)值設(shè)為9。為滑動(dòng)窗口大小,即輸入序列長(zhǎng)度,默認(rèn)取10。為GRU模型的層數(shù),默認(rèn)采用兩層GRU。為單個(gè)GRU塊包含的存儲(chǔ)單元數(shù)量,默認(rèn)值為64。下文設(shè)置了多組對(duì)比實(shí)驗(yàn),通過控制變量法測(cè)試單個(gè)參數(shù)值變化對(duì)模型性能的影響。

2.3 基于參數(shù)值的異常檢測(cè)模型

在一般場(chǎng)景下,使用基于執(zhí)行路徑的日志異常檢測(cè)模型可以檢測(cè)出系統(tǒng)中大多數(shù)異常。然而,在某些場(chǎng)景下產(chǎn)生的異常,如系統(tǒng)遭受拒絕服務(wù)攻擊(denial of service attack)導(dǎo)致的運(yùn)行速度變慢,往往體現(xiàn)在系統(tǒng)日志參數(shù)值的變化上。本節(jié)構(gòu)建了一個(gè)參數(shù)值異常檢測(cè)模型,通過日志中參數(shù)值的變化趨勢(shì)來檢測(cè)系統(tǒng)異常狀態(tài)。

每個(gè)日志條目由時(shí)間戳、log key和若干個(gè)參數(shù)組成,其中,相鄰時(shí)間戳的差值代表兩條日志生成的時(shí)間間隔,能夠衡量系統(tǒng)的性能,也可將其看作一個(gè)日志參數(shù)。從日志條目中提取時(shí)間戳差值和參數(shù)值,構(gòu)造出一個(gè)參數(shù)值向量,對(duì)于具有相同log key的日志條目,將其參數(shù)值向量按時(shí)間順序生成一個(gè)序列,則不同的log key將生成多個(gè)參數(shù)值向量序列。每個(gè)參數(shù)值向量序列都可以看作一個(gè)單獨(dú)的時(shí)間序列,因此參數(shù)異常檢測(cè)問題被轉(zhuǎn)化為多變量時(shí)間序列預(yù)測(cè)問題,通過預(yù)測(cè)值和實(shí)際值的對(duì)比,判斷系統(tǒng)是否發(fā)生異常。

參數(shù)值異常檢測(cè)模型由三大模塊組成,分別為分類模塊、預(yù)測(cè)模塊和判斷模塊。分類模塊根據(jù)log key對(duì)輸入的參數(shù)值向量進(jìn)行分類,結(jié)果傳輸?shù)筋A(yù)測(cè)模塊。預(yù)測(cè)模塊依然采用GRU網(wǎng)絡(luò)建模,針對(duì)每個(gè)具有不同log key的參數(shù)值向量序列,分別為其構(gòu)建一個(gè)獨(dú)立的GRU網(wǎng)絡(luò)。每個(gè)GRU網(wǎng)絡(luò)都可以看作一個(gè)–1的GRU時(shí)間序列模型,它在每個(gè)timestep輸入為當(dāng)前時(shí)刻的參數(shù)值向量,然后模型根據(jù)由各個(gè)時(shí)刻參數(shù)值向量組成的參數(shù)值向量序列預(yù)測(cè)出下一時(shí)刻的參數(shù)值向量。

GRU時(shí)間序列網(wǎng)絡(luò)由輸入層、隱藏層、輸出層3層構(gòu)成。輸入層首先需要對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,使其適配GRU網(wǎng)絡(luò)。預(yù)處理方式包括刪除與預(yù)測(cè)無關(guān)的參數(shù)、將字符型數(shù)據(jù)編碼為整數(shù)(如日志項(xiàng)connecting to node1,其中,node1為參數(shù)項(xiàng),可將其編碼為整數(shù)處理)、輸入數(shù)據(jù)進(jìn)行歸一化(normalization)處理。數(shù)據(jù)歸一化是機(jī)器學(xué)習(xí)中一項(xiàng)重要的預(yù)處理工作,具體做法是采用某種算法處理數(shù)據(jù),將其限制在模型所需要的范圍內(nèi)。本文采用離差標(biāo)準(zhǔn)化(min-max normalization)作為模型的歸一化方法,該方法基于樣本數(shù)據(jù)的最大值和最小值對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化,使處理后的數(shù)據(jù)特征分布在[0,1]范圍內(nèi)。其數(shù)學(xué)形式如下。

歸一化后的數(shù)據(jù)輸入隱藏層中參與后續(xù)處理。隱藏層的架構(gòu)與2.2節(jié)描述執(zhí)行路徑異常檢測(cè)模型類似,隱藏層節(jié)點(diǎn)之間相互連接形成一個(gè)完整的循環(huán)神經(jīng)網(wǎng)絡(luò)。

在隱藏層后加入一個(gè)輸出層,輸出結(jié)果為一個(gè)實(shí)值向量,即根據(jù)歷史序列預(yù)測(cè)出的參數(shù)值向量。

經(jīng)過BPTT算法訓(xùn)練后的模型即可用來檢測(cè)日志異常。日志的異常與否通過判斷模塊進(jìn)行判定,判斷的標(biāo)準(zhǔn)是一個(gè)基于訓(xùn)練樣本的預(yù)測(cè)值與真實(shí)值之間的誤差建模的高斯分布(Gaussian distribution),置信水平的閾值可以根據(jù)實(shí)驗(yàn)的實(shí)際情況調(diào)整。在檢測(cè)階段,如果預(yù)測(cè)值與觀測(cè)值之間的誤差處在高斯分布的置信區(qū)間內(nèi),則認(rèn)為其為正常,否則視為異常。置信區(qū)間(以98%為例)用數(shù)學(xué)公式描述為

圖4給出了參數(shù)值異常檢測(cè)模型的整體架構(gòu)以及其中GRU時(shí)間序列模型的架構(gòu)。該模型能夠檢測(cè)系統(tǒng)各種性能的異常,如在一段日志時(shí)間戳的差值突然增大,可能意味著系統(tǒng)在這段時(shí)間中的運(yùn)行速度變慢;又如日志中表示網(wǎng)絡(luò)傳輸時(shí)間的參數(shù)值大幅度增加,則意味著網(wǎng)絡(luò)延遲變大,在排除網(wǎng)絡(luò)環(huán)境原因后,要考慮系統(tǒng)遭受地址解析協(xié)議(ARP,address resolution protocol)攻擊的可能性。

圖4 參數(shù)值異常檢測(cè)模型結(jié)構(gòu)

2.4 模型訓(xùn)練

本文設(shè)計(jì)的兩個(gè)GRU模型(執(zhí)行路徑異常檢測(cè)模型、參數(shù)值異常檢測(cè)模型)均采用系統(tǒng)正常執(zhí)行產(chǎn)生的日志作為訓(xùn)練樣本。首先前向計(jì)算(參見2.2節(jié))得到每個(gè)參數(shù)的輸出值和模型的最終輸出,然后對(duì)比期望輸出與真實(shí)輸出得到待優(yōu)化的目標(biāo)函數(shù),最后通過BPTT算法計(jì)算各個(gè)權(quán)重參數(shù)的梯度,通過梯度下降法對(duì)參數(shù)進(jìn)行更新。

基于上述各式計(jì)算出的模型輸出、重置門、當(dāng)前狀態(tài)以及更新門的誤差信號(hào),利用鏈?zhǔn)椒▌t計(jì)算出各參數(shù)梯度。

模型采用Adam[8]作為梯度下降優(yōu)化算法。本文將每次更新學(xué)習(xí)的樣本數(shù)量(batch size)設(shè)置為64。在此基礎(chǔ)上,每學(xué)習(xí)一個(gè)mini-batch的樣本數(shù)據(jù),模型都會(huì)利用平均梯度更新動(dòng)量。

一階動(dòng)量(梯度的均值):

二階動(dòng)量(梯度的方差):

學(xué)習(xí)率(learning rate)是深度學(xué)習(xí)中另外一個(gè)重要的超參數(shù),控制著模型中參數(shù)的更新速度,本文實(shí)驗(yàn)將初始學(xué)習(xí)率設(shè)為0.001。若采用固定學(xué)習(xí)率訓(xùn)練模型,當(dāng)訓(xùn)練集的損失下降到一定程度時(shí),便停止下降并在一定區(qū)間內(nèi)來回震蕩。針對(duì)這一問題,本文采用了學(xué)習(xí)率衰減(learning rate decay)算法,隨著時(shí)間的推移逐漸減小學(xué)習(xí)率,學(xué)習(xí)率的更新方式基于文獻(xiàn)[8]中的方法,其數(shù)學(xué)形式如下。

Adam借助學(xué)習(xí)率、一階動(dòng)量和二階動(dòng)量,從梯度的均值和方差兩個(gè)角度出發(fā),自適應(yīng)地更新權(quán)重參數(shù),其參數(shù)更新的數(shù)學(xué)形式如下。

使用訓(xùn)練集中的所有數(shù)據(jù)對(duì)模型進(jìn)行一次完整訓(xùn)練稱為1個(gè)epoch。本文模型共訓(xùn)練50個(gè)epoch,之后,神經(jīng)網(wǎng)絡(luò)基本收斂。

由于模型構(gòu)造了多層GRU神經(jīng)網(wǎng)絡(luò),因此模型的誤差項(xiàng)會(huì)沿時(shí)間和空間兩個(gè)方向反向傳播。時(shí)間方向是指反向計(jì)算每個(gè)時(shí)刻的誤差項(xiàng),空間方向是指誤差項(xiàng)向上層傳播。在多層GRU中,上層的輸出即為當(dāng)前層輸入,由此可得到上層輸出的誤差。

2.5 模型更新

根據(jù)設(shè)計(jì)思路,模型采用系統(tǒng)正常運(yùn)行產(chǎn)生的日志進(jìn)行訓(xùn)練。然而在實(shí)際訓(xùn)練中,樣本數(shù)據(jù)往往無法包含所有的logkey,這樣當(dāng)系統(tǒng)生成的日志中包含不存在于樣本數(shù)據(jù)集中的logkey時(shí),就會(huì)造成誤判。為此,模型構(gòu)造了一個(gè)在線更新(online update)模塊,基于線上反饋的假陽(yáng)性結(jié)果實(shí)時(shí)調(diào)整模型的權(quán)重參數(shù)。

與離線訓(xùn)練不同,模型使用FTRL(followed the regularized leader)算法[9]進(jìn)行模型更新。該方法針對(duì)權(quán)重參數(shù)的每一維度采用不同的學(xué)習(xí)率進(jìn)行學(xué)習(xí),且能夠產(chǎn)生易于處理的稀疏解,其數(shù)學(xué)形式如下。

使用模型更新會(huì)大幅度降低模型對(duì)某些數(shù)據(jù)集的誤報(bào)率,且模型更新和在線檢測(cè)可以同步進(jìn)行,保證了模型的檢測(cè)效率。

3 實(shí)驗(yàn)評(píng)估

為驗(yàn)證兩種基于GRU的日志異常檢測(cè)算法的有效性,本節(jié)選取了幾個(gè)具有典型代表性的日志數(shù)據(jù)集,在其上進(jìn)行多角度對(duì)比實(shí)驗(yàn)并評(píng)估兩種算法的性能。實(shí)驗(yàn)環(huán)境在個(gè)人筆記本上配置,處理器為Intel Corei7-6700HQ(2.60 GHz),NVIDIA GeForce GTX 965M GPU(2 GB),16 GB RAM(2 133 MHz),操作系統(tǒng)為Ubuntu 16.04(64位)。GRU網(wǎng)絡(luò)的搭建和訓(xùn)練基于深度學(xué)習(xí)框架keras,tensorflow作為后端,編程環(huán)境為Python3.6.5。本節(jié)實(shí)驗(yàn)分為3部分。第一部分評(píng)估執(zhí)行路徑異常檢測(cè)模型的性能,使用本文算法和當(dāng)前前沿的日志異常檢測(cè)算法在大型HDFS日志數(shù)據(jù)集上進(jìn)行對(duì)比實(shí)驗(yàn),以多種性能指標(biāo)來衡量實(shí)驗(yàn)結(jié)果,綜合評(píng)估本文算法的性能。然后對(duì)模型自身的參數(shù)進(jìn)行調(diào)整,得到不同參數(shù)下的實(shí)驗(yàn)結(jié)果,以此研究參數(shù)變化對(duì)模型性能的影響。第二部分評(píng)估參數(shù)值異常檢測(cè)算法的性能,人工構(gòu)造了一個(gè)數(shù)據(jù)集,驗(yàn)證算法的有效性和對(duì)檢測(cè)性能的提升。第三部分對(duì)模型更新模塊的性能進(jìn)行評(píng)估,通過對(duì)比實(shí)驗(yàn)研究使用模型更新和不使用模型更新對(duì)訓(xùn)練時(shí)間和檢測(cè)結(jié)果的影響。

3.1 執(zhí)行路徑異常檢測(cè)模型性能評(píng)估

實(shí)驗(yàn)選取了3種當(dāng)前較為先進(jìn)的日志異常檢測(cè)算法:主成分分析[1](PCA,principal component analysis)、不變量挖掘[2](IM,invariant mining)和Deeplog[3]與本文GRU算法進(jìn)行對(duì)比。其中,PCA和IM是離線檢測(cè)算法,這兩種方法均使用會(huì)話窗口(session windows)對(duì)日志進(jìn)行分塊(本文使用滑動(dòng)窗口),從日志中提取出logkey,對(duì)logkey序列執(zhí)行異常檢測(cè)。He等[10]實(shí)現(xiàn)了這兩種方法,并提供了開源源代碼,相關(guān)代碼可以在github上找到。DeepLog使用LSTM神經(jīng)網(wǎng)絡(luò)構(gòu)建模型,能夠?qū)崿F(xiàn)對(duì)日志異常的在線檢測(cè),本文基于文獻(xiàn)[10]中的描述實(shí)現(xiàn)了該方法。實(shí)驗(yàn)首先對(duì)比PCA、IM、DeepLog、GRU這4種方法的檢測(cè)精度,然后對(duì)比Deeplog和GRU這2種在線檢測(cè)方法的運(yùn)行速度,從兩方面綜合評(píng)價(jià)本文算法。

對(duì)比實(shí)驗(yàn)采用的日志數(shù)據(jù)集為203個(gè)亞馬遜EC2節(jié)點(diǎn)運(yùn)行38.7 h產(chǎn)生的HDFS日志數(shù)據(jù)集[1]。該數(shù)據(jù)集中存在11 175 629條日志數(shù)據(jù),包括575 062個(gè)事件跟蹤(event trace),對(duì)應(yīng)575 062個(gè)具有不同block_id的HDFS文件塊。所有的block_id均由Hadoop領(lǐng)域?qū)<覙?biāo)記為正?;虍惓#ㄖ阅軌?qū)Τ^50萬個(gè)事件跟蹤進(jìn)行標(biāo)記,是因?yàn)榇蠖鄶?shù)事件跟蹤是相同且正常的),其中異常數(shù)據(jù)約占總數(shù)據(jù)的2.9%。文獻(xiàn)[1]構(gòu)造了這個(gè)數(shù)據(jù)集,隨后在日志異常檢測(cè)領(lǐng)域被廣泛使用[2,3,11],該數(shù)據(jù)集可以在loghub獲取。

由于PCA和IM均采用會(huì)話窗口,故對(duì)比實(shí)驗(yàn)將使用會(huì)話窗口作為異常檢測(cè)的基準(zhǔn)。將HDFS數(shù)據(jù)集按照block_id進(jìn)行分組,可以分為575 062個(gè)會(huì)話,在檢測(cè)過程中,只要1個(gè)會(huì)話中出現(xiàn)異常日志,該會(huì)話即被視為異常。由于HDFS日志的規(guī)則并不復(fù)雜,且數(shù)據(jù)集中會(huì)話存在大量重復(fù),因此本文方法和DeepLog方法選取前1%日志數(shù)據(jù)中的正常會(huì)話作為訓(xùn)練集訓(xùn)練模型,模型參數(shù)、、、(各參數(shù)的具體含義參見2.2節(jié))均采用默認(rèn)值(=9,=10,=2,=64)。PCA和IM這兩種無監(jiān)督方法則不需要特定標(biāo)記的訓(xùn)練集,均按照原文中給出的方法構(gòu)建模型。HDFS日志數(shù)據(jù)中每一個(gè)會(huì)話的時(shí)間跨度都比較大,考慮到PCA和IM構(gòu)建模型需要完整的會(huì)話,本實(shí)驗(yàn)選擇整個(gè)日志數(shù)據(jù)集作為4種算法的測(cè)試集,表1給出了訓(xùn)練集和測(cè)試集的具體信息。

表1 訓(xùn)練集和測(cè)試集信息

表2 PCA、IM、DeepLog、本文方法性能比較結(jié)果

圖5通過精確率、召回率、值3個(gè)指標(biāo)進(jìn)一步對(duì)3種算法進(jìn)行比較。可以看出,DeepLog方法取得了最高的召回率和值,精確率雖略低于PCA方法,但PCA方法取得較高精確率的代價(jià)是較低的召回率。本文方法的各項(xiàng)指標(biāo)略低于DeepLog方法,但明顯高于其他兩者。

圖5 PCA、IM、DeepLog、本文方法性能比較

接下來,對(duì)DeepLog和本文方法的運(yùn)行速度進(jìn)行單獨(dú)對(duì)比,運(yùn)行速度通過平均每條日志所需的檢測(cè)時(shí)間來衡量。表3展示了2種方法在HDFS日志測(cè)試集上的運(yùn)行速度。

表3 DeepLog和本文方法運(yùn)行速度對(duì)比

可以看到,本文算法和DeepLog取得的檢測(cè)精度相當(dāng),但運(yùn)行速度方面本文算法有較大的領(lǐng)先,相比于DeepLog約提升了16.7%。

為研究模型參數(shù)變化對(duì)檢測(cè)性能的影響,本文設(shè)計(jì)了基于控制變量法(control variates)的實(shí)驗(yàn),當(dāng)研究一個(gè)參數(shù)時(shí),控制其余參數(shù)不變。模型的參數(shù)可以分為兩種。一種是GRU層數(shù)()和GRU存儲(chǔ)單元數(shù)()這種GRU網(wǎng)絡(luò)本身的結(jié)構(gòu)參數(shù)。圖6顯示了和對(duì)模型性能的影響。

圖6 GRU層數(shù)和GRU存儲(chǔ)單元數(shù)對(duì)模型性能的影響

當(dāng)=2時(shí),模型性能達(dá)到最佳,當(dāng)=3時(shí),精確率和召回率均大幅度下降,檢測(cè)精度降低,之后隨著GRU層數(shù)增多,檢測(cè)精度逐漸回升。由于訓(xùn)練樣本過小,當(dāng)GRU層數(shù)設(shè)置太大時(shí),容易產(chǎn)生過擬合(over-fitting)現(xiàn)象,且過多的GRU層數(shù)會(huì)增大計(jì)算量;導(dǎo)致模型訓(xùn)練時(shí)間增加,因此GRU層數(shù)設(shè)置為2層較為合適。

表示GRU存儲(chǔ)單元的個(gè)數(shù),當(dāng)其較小時(shí),模型欠擬合(under-fitting)導(dǎo)致精確率較低;當(dāng)將其增大到64時(shí),模型性能總體上趨于穩(wěn)定,隨著其繼續(xù)增大變化并不明顯,;當(dāng)其過大時(shí),模型性能開始逐漸下降,可能是出現(xiàn)了過擬合。

另一種是針對(duì)樣本數(shù)據(jù)的參數(shù),包括正常值可信范圍()和滑動(dòng)窗口大?。ǎ?。由圖7可以看到隨著的增大,模型的精確率不斷增大,而召回率則不斷減小,在極端情況下,當(dāng)?shù)闹到咏黮og key集的大小時(shí),精確率可以達(dá)到100%,但隨之而來的可能是極低的召回率。當(dāng)=9時(shí),值取得最大值,故=9可作為判斷異常樣本的閾值。

圖7 正常值可信范圍和滑動(dòng)窗口大小對(duì)模型性能的影響

表示輸入序列的長(zhǎng)度,隨著的增大,算法精確率先是逐漸增大而后趨于穩(wěn)定,這說明序列長(zhǎng)度較短時(shí),GRU網(wǎng)絡(luò)可能無法學(xué)習(xí)到日志樣本中隱藏的規(guī)律,而序列較長(zhǎng)時(shí)增加長(zhǎng)度并不能顯著提升模型性能,這是因?yàn)殡x預(yù)測(cè)值較遠(yuǎn)的數(shù)據(jù)對(duì)預(yù)測(cè)值的影響較小。

綜合來看,本文算法比PCA和IM兩種算法檢測(cè)性能更好,比DeepLog算法檢測(cè)速度更快,在處理大規(guī)模日志數(shù)據(jù)集時(shí),可節(jié)省大量時(shí)間,目前日志異常檢測(cè)對(duì)實(shí)時(shí)性的要求越來越高,更能體現(xiàn)出本文算法的優(yōu)越性。且本文算法基于每條logkey進(jìn)行檢測(cè),相比于基于會(huì)話的檢測(cè)方法適用性更廣。和下文中參數(shù)值異常檢測(cè)算法結(jié)合使用,可以進(jìn)一步提升異常檢測(cè)性能。

3.2 參數(shù)值異常檢測(cè)模型性能評(píng)估

對(duì)于參數(shù)值異常檢測(cè)算法,選取了Smartbi(報(bào)表工具)的客戶端日志作為實(shí)驗(yàn)數(shù)據(jù)集。Smartbi服務(wù)端安裝在個(gè)人筆記本上,客戶端安裝在個(gè)人臺(tái)式機(jī)上。當(dāng)客戶端執(zhí)行任務(wù)時(shí),會(huì)調(diào)用服務(wù)端數(shù)據(jù)庫(kù)中的數(shù)據(jù),服務(wù)端和客戶端之間發(fā)生通信。實(shí)驗(yàn)在Smartbi上設(shè)置了一個(gè)重復(fù)的定時(shí)任務(wù),通過控制網(wǎng)絡(luò)速度模擬系統(tǒng)可能遭受拒絕服務(wù)攻擊的場(chǎng)景。任務(wù)共重復(fù)了600次,最終采集到37 287條客戶端日志。圖8給出了Smartbi的部分日志及其解析后得到的參數(shù)值向量。

當(dāng)網(wǎng)絡(luò)波動(dòng)時(shí),日志的參數(shù)值會(huì)表現(xiàn)出異常。出現(xiàn)異常的參數(shù)值序列可分為兩種:一種是相鄰時(shí)間戳的差值過大,另一種是請(qǐng)求消耗的時(shí)間過大,這兩種異常充分反映出網(wǎng)絡(luò)的波動(dòng)情況。本實(shí)驗(yàn)基于參數(shù)值異常檢測(cè)算法構(gòu)建模型,將是否能夠檢測(cè)出異常參數(shù)值序列作為模型有效性的評(píng)估標(biāo)準(zhǔn)。

對(duì)于執(zhí)行路徑異常和參數(shù)值異常都存在的日志數(shù)據(jù)集,加入?yún)?shù)值異常檢測(cè)可以大幅度提升檢測(cè)精度。為證明參數(shù)值異常檢測(cè)算法的優(yōu)勢(shì),本文在Smartbi異常日志中人為加入了5條異常消息(Error:pleasere-excutethecommand),模擬執(zhí)行路徑異常,然后使用執(zhí)行路徑檢測(cè)模型和參數(shù)值異常檢測(cè)模型對(duì)Smartbi異常日志數(shù)據(jù)進(jìn)行檢測(cè),與僅使用執(zhí)行路徑異常檢測(cè)模型進(jìn)行對(duì)比。表4給出了檢測(cè)結(jié)果(多組logkey的總體檢測(cè)結(jié)果),可以看到,單獨(dú)使用執(zhí)行路徑異常檢測(cè)模型取得的召回率僅為22.7%,而同時(shí)使用兩種模型則準(zhǔn)確地檢測(cè)出了所有異常,取得了100%的召回率,相比僅使用執(zhí)行路徑異常檢測(cè)模型有大幅度提升。實(shí)驗(yàn)結(jié)果表明,對(duì)于某些參數(shù)值存在異常的日志,由于logkey序列并沒有發(fā)生變化,執(zhí)行路徑異常檢測(cè)模型無法檢測(cè)出這類異常,而參數(shù)值異常檢測(cè)模型則可以對(duì)不同logkey進(jìn)行分組,通過衡量預(yù)測(cè)值和真實(shí)值之間的均方誤差準(zhǔn)確地檢測(cè)出參數(shù)值異常,從而提高檢測(cè)召回率。

表4 兩種異常檢測(cè)模型的檢測(cè)結(jié)果對(duì)比

圖8 Smartbi日志及其解析結(jié)果

圖9 不同logkey下參數(shù)值異常檢測(cè)結(jié)果

3.3 基于模型更新的性能提升

本文算法雖然在HDFS日志異常檢測(cè)實(shí)驗(yàn)中取得了較好的性能,但在處理一些更加不規(guī)則的日志(如系統(tǒng)日志)時(shí),難免會(huì)發(fā)生訓(xùn)練集無法涵蓋所有正常執(zhí)行路徑的情況,當(dāng)檢測(cè)階段出現(xiàn)不包含在訓(xùn)練集中的執(zhí)行路徑時(shí),會(huì)引起錯(cuò)誤預(yù)測(cè),將其識(shí)別為異常。模型更新模塊可以有效解決該問題,本節(jié)設(shè)置了是否進(jìn)行模型更新的對(duì)比實(shí)驗(yàn),來驗(yàn)證其有效性。

本實(shí)驗(yàn)選用的日志數(shù)據(jù)集為708 M的BlueGene / L超級(jí)計(jì)算機(jī)的系統(tǒng)日志[12],該數(shù)據(jù)集包含4 747 963條日志,其中348 460條被標(biāo)記為異常。文獻(xiàn)[11]最早公開了該數(shù)據(jù)集,現(xiàn)已被廣泛應(yīng)用于日志解析,可從loghub下載得到。與HDFS日志不同,該數(shù)據(jù)集中很多日志只在特定時(shí)間出現(xiàn),因此訓(xùn)練集很可能無法涵蓋所有的正常執(zhí)行路徑和logkey,這也是該數(shù)據(jù)集被選用的原因。

對(duì)比實(shí)驗(yàn)分為兩組,分別使用數(shù)據(jù)集中前10%和前20%的正常日志條目訓(xùn)練模型,其余數(shù)據(jù)作為測(cè)試集。模型更新使用訓(xùn)練好的模型檢測(cè)異常,每當(dāng)發(fā)現(xiàn)檢測(cè)到的結(jié)果為假陽(yáng)性時(shí),使用該結(jié)果的輸入輸出序列更新模型;不使用模型更新的情況則只進(jìn)行異常檢測(cè),不對(duì)模型做任何增量更新。由于樣本數(shù)據(jù)集中正常日志數(shù)據(jù)大幅度重復(fù)且種類較少,因此本次實(shí)驗(yàn)使用單層GRU異常檢測(cè)模型(=1),窗口大小設(shè)定為3,設(shè)定為5。為防止產(chǎn)生欠擬合,存儲(chǔ)單元數(shù)量設(shè)定為256,多次實(shí)驗(yàn)證實(shí)該參數(shù)設(shè)置下異常檢測(cè)準(zhǔn)確率最高。

表5給出了使用和不使用模型更新兩種情況下的FP、FN、TP,其中N表示不使用模型更新,Y表示使用模型更新。結(jié)合圖10中的其他性能指標(biāo),可以看到在10%訓(xùn)練數(shù)據(jù)下,存在較多的假陽(yáng)性誤報(bào),模型的精確率和值非常低;將訓(xùn)練數(shù)據(jù)擴(kuò)大到20%,精確率和值有了一定提升,但提升幅度并不大;在經(jīng)過模型更新后,檢測(cè)結(jié)果的假陽(yáng)性大幅度減少,精確率和值顯著提升。

表5 使用模型更新和不使用模型更新性能對(duì)比結(jié)果

圖10 模型使用模型更新和不使用模型更新性能對(duì)比

實(shí)驗(yàn)證明了模型更新算法的有效性,經(jīng)過模型更新,模型的檢測(cè)精度大大提升。在使用10%的正常日志作為訓(xùn)練集的情況下,模型更新將模型的精確率提高了72.1%;在使用20%的正常日志作為訓(xùn)練集的情況下,模型更新將模型的精確率提高了72.7%。模型更新和異常檢測(cè)能夠并行執(zhí)行,在使用當(dāng)前權(quán)重參數(shù)執(zhí)行異常檢測(cè)的同時(shí),模型可以進(jìn)行模型更新,因此,模型更新并不會(huì)增加過多時(shí)間成本。

4 結(jié)束語

當(dāng)前日志異常檢測(cè)領(lǐng)域中涉及深度學(xué)習(xí)的研究相對(duì)較少。本文研究針對(duì)日志異常檢測(cè)領(lǐng)域的薄弱點(diǎn),提出了一種基于GRU的日志異常檢測(cè)算法,使用Spell解析日志,從log key和參數(shù)值2個(gè)角度構(gòu)建了2個(gè)檢測(cè)模型。模型的訓(xùn)練以BPTT算法為基礎(chǔ),使用梯度下降法更新權(quán)重參數(shù)。在模型的基礎(chǔ)上提出一種模型更新策略,使模型可不斷學(xué)習(xí)新的日志規(guī)則。實(shí)驗(yàn)結(jié)果表明,本文算法在HDFS大型日志數(shù)據(jù)集上表現(xiàn)優(yōu)異,精確率和召回率優(yōu)于當(dāng)前前沿的日志異常檢測(cè)方法。此外,本文針對(duì)參數(shù)變化對(duì)模型性能的影響進(jìn)行分析,并驗(yàn)證了模型更新策略的有效性。本文為今后相關(guān)工作提供了算法參考和模型構(gòu)建基準(zhǔn),具有一定理論指導(dǎo)意義。面對(duì)日志數(shù)量巨大,日志規(guī)則復(fù)雜的現(xiàn)狀,本文研究有較高的應(yīng)用價(jià)值。

[1] XU W, HUANG L, FOX A, et al. Detecting large-scale system problems by mining console logs[C]//ACM SIGOPS 22nd symposium on Operating systems principles. 2009: 117-132.

[2] YU X, JOSHI P, XU J, et al. CloudSeer: workflow monitoring of cloud infrastructures via interleaved logs[J]. ACM Sigarch Computer Architecture News, 2016, 44(2):489-502.

[3] DU M, LI F, ZHENG G, et al. Deeplog: anomaly detection and diagnosis from system logs through deep learning[C]//2017 ACM SIGSAC Conference on Computer and Communications Security. 2017: 1285-1298.

[4] JURAFSKY D. Speech & language processing[M]. Pearson Education India, 2000:35-61.

[5] DU M, LI F. spell: Streaming parsing of system event logs[C]//IEEE 16th International Conference on Data Mining (ICDM). 2016: 859-864.

[6] ZHU J, HE S, LIU J, et al. Tools and benchmarks for automated log parsing[J]. arXiv preprint arXiv:1811.03509, 2018.

[7] HE P, ZHU J, HE S, et al. An evaluation study on log parsing and its use in log mining[C]//46th Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN). 2016: 654-661.

[8] KINGMA D P, BA J. Adam: a method for stochastic optimization[J]. arXiv preprint arXiv:1412.6980, 2014.

[9] MC MAHAN H B, HOLT G, SCULLEY D, et al. Ad click prediction: a view from the trenches[C]//The 19th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. 2013: 1222-1230.

[10] HE S, ZHU J, HE P, et al. Experience report: system log analysis for anomaly detection[C]//IEEE 27th International Symposium on Software Reliability Engineering (ISSRE). 2016: 207-218.

[11] XU W, HUANG L, FOX A, et al. Online system problem detection by mining patterns of console logs[C]//Ninth IEEE International Conference on Data Mining. 2009: 588-597.

[12] OLINER A, STEARLEY J. What supercomputers say: a study of five system logs[C]//37th Annual IEEE/IFIP International Conference on Dependable Systems and Networks (DSN'07). 2007: 575-584.

Research on system log anomaly detection based on deep learning

WANG Yidong1, LIU Peishun1, WANG bin2

1. College of Information Science and Engineering, Ocean University of China, Qingdao 266100, China 2. School of Continuing Education, Ocean University of China, Qingdao 226100, China

The system log reflects the running status of the system and records the activity information of specific events in the system. Therefore, the rapid and accurate detection of the system abnormal log is important to the security and stability of the system. A log anomaly detection algorithm based on GRU neural network is proposed. Log parsing is implemented based on log key technology. Log anomaly detection is realized by using anomaly detection model of execution path and anomaly detection model of parameter value. The system has the advantages of less parameters and faster training. It improves the running speed while achieving higher detection accuracy, and is suitable for log analysis of large information systems.

log anomaly detection, deep learning, GRU neural network

王易東(1996? ),男,山東濟(jì)寧人,中國(guó)海洋大學(xué)碩士生,主要研究方向?yàn)樾畔踩⒃朴?jì)算和大數(shù)據(jù)。

劉培順(1975? ),男,山東菏澤人,中國(guó)海洋大學(xué)講師,主要研究方向?yàn)榫W(wǎng)絡(luò)與信息安全。

王彬(1981? ),男,山東沾化人,中國(guó)海洋大學(xué)實(shí)驗(yàn)師,主要研究方向?yàn)橛?jì)算機(jī)應(yīng)用技術(shù)。

TP390

A

10.11959/j.issn.2096?109x.2019055

2019?03?12;

2019?04?30

劉培順,liups@ouc.edu.cn

國(guó)家重點(diǎn)研發(fā)計(jì)劃基金資助項(xiàng)目(No.2016YFF0806200)

The National Key Research and Development Program of China (No.2016YFF0806200)

王易東, 劉培順, 王彬. 基于深度學(xué)習(xí)的系統(tǒng)日志異常檢測(cè)研究[J]. 網(wǎng)絡(luò)與信息安全學(xué)報(bào), 2019, 5(5): 105-118.

WANG Y D, LIU P X, WANG B. Research on system log anomaly detection based on deep learning[J]. Chinese Journal of Network and Information Security, 2019, 5(5): 105-118.

猜你喜歡
參數(shù)值日志性能
夏季五招提高種鵝繁殖性能
例談不等式解法常見的逆用
一名老黨員的工作日志
不等式(組)參數(shù)取值范圍典例解析
保暖襪透濕性能測(cè)定的不確定度分析
扶貧日志
提供將近80 Gbps的帶寬性能 DisplayPort 2.0正式發(fā)布
雅皮的心情日志
雅皮的心情日志
步進(jìn)電機(jī)期望控制脈沖的無抖動(dòng)輸出方法
格尔木市| 华安县| 错那县| 湟中县| 浪卡子县| 那坡县| 北辰区| 墨竹工卡县| 玛曲县| 济南市| 贵定县| 措勤县| 克什克腾旗| 澄迈县| 泸西县| 威远县| 武宣县| 汶川县| 宽城| 黎平县| 宁明县| 平湖市| 阿城市| 镇赉县| 宁城县| 玉溪市| 渑池县| 花莲市| 安丘市| 沁水县| 永州市| 高雄县| 金华市| 安宁市| 沙湾县| 南和县| 辉县市| 北流市| 潞西市| 马尔康县| 凤冈县|