王易東,劉培順,王彬
基于深度學習的系統日志異常檢測研究
王易東1,劉培順1,王彬2
(1. 中國海洋大學信息科學與工程學院,山東 青島 266100;2. 中國海洋大學繼續教育學院,山東 青島 266100)
系統日志反映了系統運行狀態,記錄著系統中特定事件的活動信息, 快速準確地檢測出系統異常日志,對維護系統安全穩定具有重要意義。提出了一種基于GRU神經網絡的日志異常檢測算法,基于log key技術實現日志解析,利用執行路徑的異常檢測模型和參數值的異常檢測模型實現日志異常檢測,具有參數少、訓練快的優點,在取得較高檢測精度的同時提升了運行速度,適用于大型信息系統的日志分析。
日志異常檢測;深度學習;GRU神經網絡
在異常檢測領域中,系統日志異常檢測一直是一個研究熱點。系統日志作為具有多種自由格式的非結構化數據集,和文本分析、統計學、機器學習等學科都有著較為緊密的結合。多年來,各國研究人員將不同領域的方法應用到日志異常檢測,并取得了大量出色研究成果。Xu[1]等利用抽象語法樹(AST,abstract syntax tree)和主成分分析(PCA,principal component analysis)方法處理解析后的日志特征集,降低了待分析特征集的復雜度,得到了有效的異常檢測結果。不過該方法需要預先獲取程序源代碼和日志的種類,不能作為一種通用的日志異常檢測方法。Yu[2]等提出基于Workflow監控的異常檢測系統——CloudSeer,它可以通過檢查交錯日志序列中的錯誤信息來獲取執行異常。該方法在一定程度上解決了日志的并發性問題,但它借助自動機組實現,其中某些特定的規則只適用于云基礎設施中的日志異常檢測。
近些年,深度學習蓬勃發展,不斷開創新的應用模式,尤其在NLP(natural language processing)領域進展巨大,大量NLP相關任務的最佳模型均在其基礎上建立。Du[3]等將系統日志建模為自然語言序列,提出了一種基于LSTM的深度神經網絡模型——DeepLog。該模型從正常的日志數據中學習日志規則,當檢測到的日志偏離正常規則時,即認定其為異常。實驗結果表明,該方法在多個大型數據集上取得了較高的檢測精度,總體性能優于其他基于傳統數據挖掘的日志異常檢測方法。然而在檢測效率方面,該方法仍有一定提升空間。
本文在N-gram語言模型[4]的基礎上,結合循環神經網絡提出了一種基于GRU(gated recurrent unit)神經網絡模型的日志異常檢測算法。針對復雜的非結構化日志,首先提取log key,將日志解析為結構化序列,然后使用解析得到的序列訓練GRU神經網絡模型用以檢測異常,具有參數少、訓練快的優點,在取得較高檢測精度的同時提升了運行速度。
系統日志數據是一種非結構化文本數據,可以直接從日志文件中獲取,在對日志數據進行分析之前,通常需要先將其解析為結構化數據。每個日志條目由常量和變量兩部分組成,常量是指由系統程序源碼中的print語句直接打印出的消息,變量則是常量以外的部分,通常是時間戳或參數值。例如,mysql中的日志“:,256.0”,常量部分為“:,”,“256.0”則是變量,表示數據庫緩沖池大小。所有相似日志條目中的公共常量消息叫作logkey,可以用來表示日志消息類型。正常日志的輸出會遵從一定的流程和順序,通常稱為日志的執行路徑(execution path),logkey序列能夠表示日志的執行路徑,因此從日志中提取logkey是一種有效的日志解析方法。參數值是日志中非常有價值的一類信息,反映了系統的健康狀態和性能,某些參數值還可以作為特定執行序列的標識,如HDFS日志中的block_id,基于此能夠從多線程并發任務中提取出特定模塊的日志序列。

當前業內存在多種日志解析工具,Spell[5]是較為先進的一種,它基于LCS思想設計,由MIT的logPAI團隊[6-7]開源實現,能夠對日志進行在線解析。本文使用Spell從日志數據中解析出logkey和參數值,作為日志異常檢測的基礎。
日志異常檢測和單詞序列預測同屬于一類序列預測問題,將日志看作一種特殊的自然語言,logkey序列相當于一個句子,序列中的每個logkey都可以看作一個單詞,因此可以采用單詞序列預測[4]的建模方法對日志異常檢測問題進行建模。基于文獻[3]的思路,本文設計并實現了一種基于GRU的神經語言模型,該模型能夠通過序列的長期依賴檢測異常。與文獻[3]中構建的LSTM模型不同,本文模型使用GRU作為循環單元,具有參數少、訓練快的優點,在取得較高檢測精度的同時提升了運行速度。
基于GRU的執行路徑異常檢測模型分為輸入層(input layer)、嵌入層(embedding layer)、隱藏層(hidden layer)和輸出層(output layer)。如圖1所示,模型每一個時間步(timestep)的輸入為log keyw?i,它和上一個時間步的記憶狀態共同計算得到當前狀態。


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

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

圖1 執行路徑異常檢測模型結構

圖2 單個GRU塊內部結構

借助重置門,可以得到未被遺忘的歷史記憶。將其與當前輸入通過tanh激活函數計算,即可得到GRU單元的當前記憶內容。

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

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

由此可得出每個logkey出現的概率。

將logkey表按照輸出的概率值從大到小排列,選取其中前個組成集合。若系統當前時刻輸出日志的logkey存在于集合中,則認為該日志是正常的,否則視為異常。
為了提升性能,模型中的GRU網絡被設計為多層的實現形式。上層GRU的隱藏層輸出作為下層GRU的輸入,層與層之間使用dropout方法對數據進行正則化。圖3給出了一個雙層GRU語言模型的結構,圖中虛線箭頭表示使用dropout的連接。如果應用場景需要更高的檢測精度,模型的層數可以視實際情況增加。

圖3 雙層GRU模型結構
模型共包括4個參數:、、、。其中,表示模型預測結果的可信范圍,若觀測值存在于前個預測值組成的集合中,則認為其正常,的默認值設為9。為滑動窗口大小,即輸入序列長度,默認取10。為GRU模型的層數,默認采用兩層GRU。為單個GRU塊包含的存儲單元數量,默認值為64。下文設置了多組對比實驗,通過控制變量法測試單個參數值變化對模型性能的影響。
在一般場景下,使用基于執行路徑的日志異常檢測模型可以檢測出系統中大多數異常。然而,在某些場景下產生的異常,如系統遭受拒絕服務攻擊(denial of service attack)導致的運行速度變慢,往往體現在系統日志參數值的變化上。本節構建了一個參數值異常檢測模型,通過日志中參數值的變化趨勢來檢測系統異常狀態。
每個日志條目由時間戳、log key和若干個參數組成,其中,相鄰時間戳的差值代表兩條日志生成的時間間隔,能夠衡量系統的性能,也可將其看作一個日志參數。從日志條目中提取時間戳差值和參數值,構造出一個參數值向量,對于具有相同log key的日志條目,將其參數值向量按時間順序生成一個序列,則不同的log key將生成多個參數值向量序列。每個參數值向量序列都可以看作一個單獨的時間序列,因此參數異常檢測問題被轉化為多變量時間序列預測問題,通過預測值和實際值的對比,判斷系統是否發生異常。
參數值異常檢測模型由三大模塊組成,分別為分類模塊、預測模塊和判斷模塊。分類模塊根據log key對輸入的參數值向量進行分類,結果傳輸到預測模塊。預測模塊依然采用GRU網絡建模,針對每個具有不同log key的參數值向量序列,分別為其構建一個獨立的GRU網絡。每個GRU網絡都可以看作一個–1的GRU時間序列模型,它在每個timestep輸入為當前時刻的參數值向量,然后模型根據由各個時刻參數值向量組成的參數值向量序列預測出下一時刻的參數值向量。
GRU時間序列網絡由輸入層、隱藏層、輸出層3層構成。輸入層首先需要對數據進行預處理,使其適配GRU網絡。預處理方式包括刪除與預測無關的參數、將字符型數據編碼為整數(如日志項connecting to node1,其中,node1為參數項,可將其編碼為整數處理)、輸入數據進行歸一化(normalization)處理。數據歸一化是機器學習中一項重要的預處理工作,具體做法是采用某種算法處理數據,將其限制在模型所需要的范圍內。本文采用離差標準化(min-max normalization)作為模型的歸一化方法,該方法基于樣本數據的最大值和最小值對數據進行標準化,使處理后的數據特征分布在[0,1]范圍內。其數學形式如下。

歸一化后的數據輸入隱藏層中參與后續處理。隱藏層的架構與2.2節描述執行路徑異常檢測模型類似,隱藏層節點之間相互連接形成一個完整的循環神經網絡。
在隱藏層后加入一個輸出層,輸出結果為一個實值向量,即根據歷史序列預測出的參數值向量。


經過BPTT算法訓練后的模型即可用來檢測日志異常。日志的異常與否通過判斷模塊進行判定,判斷的標準是一個基于訓練樣本的預測值與真實值之間的誤差建模的高斯分布(Gaussian distribution),置信水平的閾值可以根據實驗的實際情況調整。在檢測階段,如果預測值與觀測值之間的誤差處在高斯分布的置信區間內,則認為其為正常,否則視為異常。置信區間(以98%為例)用數學公式描述為

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

圖4 參數值異常檢測模型結構
本文設計的兩個GRU模型(執行路徑異常檢測模型、參數值異常檢測模型)均采用系統正常執行產生的日志作為訓練樣本。首先前向計算(參見2.2節)得到每個參數的輸出值和模型的最終輸出,然后對比期望輸出與真實輸出得到待優化的目標函數,最后通過BPTT算法計算各個權重參數的梯度,通過梯度下降法對參數進行更新。





基于上述各式計算出的模型輸出、重置門、當前狀態以及更新門的誤差信號,利用鏈式法則計算出各參數梯度。

模型采用Adam[8]作為梯度下降優化算法。本文將每次更新學習的樣本數量(batch size)設置為64。在此基礎上,每學習一個mini-batch的樣本數據,模型都會利用平均梯度更新動量。
一階動量(梯度的均值):

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


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


Adam借助學習率、一階動量和二階動量,從梯度的均值和方差兩個角度出發,自適應地更新權重參數,其參數更新的數學形式如下。

使用訓練集中的所有數據對模型進行一次完整訓練稱為1個epoch。本文模型共訓練50個epoch,之后,神經網絡基本收斂。
由于模型構造了多層GRU神經網絡,因此模型的誤差項會沿時間和空間兩個方向反向傳播。時間方向是指反向計算每個時刻的誤差項,空間方向是指誤差項向上層傳播。在多層GRU中,上層的輸出即為當前層輸入,由此可得到上層輸出的誤差。

根據設計思路,模型采用系統正常運行產生的日志進行訓練。然而在實際訓練中,樣本數據往往無法包含所有的logkey,這樣當系統生成的日志中包含不存在于樣本數據集中的logkey時,就會造成誤判。為此,模型構造了一個在線更新(online update)模塊,基于線上反饋的假陽性結果實時調整模型的權重參數。

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

使用模型更新會大幅度降低模型對某些數據集的誤報率,且模型更新和在線檢測可以同步進行,保證了模型的檢測效率。
為驗證兩種基于GRU的日志異常檢測算法的有效性,本節選取了幾個具有典型代表性的日志數據集,在其上進行多角度對比實驗并評估兩種算法的性能。實驗環境在個人筆記本上配置,處理器為Intel Corei7-6700HQ(2.60 GHz),NVIDIA GeForce GTX 965M GPU(2 GB),16 GB RAM(2 133 MHz),操作系統為Ubuntu 16.04(64位)。GRU網絡的搭建和訓練基于深度學習框架keras,tensorflow作為后端,編程環境為Python3.6.5。本節實驗分為3部分。第一部分評估執行路徑異常檢測模型的性能,使用本文算法和當前前沿的日志異常檢測算法在大型HDFS日志數據集上進行對比實驗,以多種性能指標來衡量實驗結果,綜合評估本文算法的性能。然后對模型自身的參數進行調整,得到不同參數下的實驗結果,以此研究參數變化對模型性能的影響。第二部分評估參數值異常檢測算法的性能,人工構造了一個數據集,驗證算法的有效性和對檢測性能的提升。第三部分對模型更新模塊的性能進行評估,通過對比實驗研究使用模型更新和不使用模型更新對訓練時間和檢測結果的影響。
實驗選取了3種當前較為先進的日志異常檢測算法:主成分分析[1](PCA,principal component analysis)、不變量挖掘[2](IM,invariant mining)和Deeplog[3]與本文GRU算法進行對比。其中,PCA和IM是離線檢測算法,這兩種方法均使用會話窗口(session windows)對日志進行分塊(本文使用滑動窗口),從日志中提取出logkey,對logkey序列執行異常檢測。He等[10]實現了這兩種方法,并提供了開源源代碼,相關代碼可以在github上找到。DeepLog使用LSTM神經網絡構建模型,能夠實現對日志異常的在線檢測,本文基于文獻[10]中的描述實現了該方法。實驗首先對比PCA、IM、DeepLog、GRU這4種方法的檢測精度,然后對比Deeplog和GRU這2種在線檢測方法的運行速度,從兩方面綜合評價本文算法。
對比實驗采用的日志數據集為203個亞馬遜EC2節點運行38.7 h產生的HDFS日志數據集[1]。該數據集中存在11 175 629條日志數據,包括575 062個事件跟蹤(event trace),對應575 062個具有不同block_id的HDFS文件塊。所有的block_id均由Hadoop領域專家標記為正常或異常(之所以能夠對超過50萬個事件跟蹤進行標記,是因為大多數事件跟蹤是相同且正常的),其中異常數據約占總數據的2.9%。文獻[1]構造了這個數據集,隨后在日志異常檢測領域被廣泛使用[2,3,11],該數據集可以在loghub獲取。
由于PCA和IM均采用會話窗口,故對比實驗將使用會話窗口作為異常檢測的基準。將HDFS數據集按照block_id進行分組,可以分為575 062個會話,在檢測過程中,只要1個會話中出現異常日志,該會話即被視為異常。由于HDFS日志的規則并不復雜,且數據集中會話存在大量重復,因此本文方法和DeepLog方法選取前1%日志數據中的正常會話作為訓練集訓練模型,模型參數、、、(各參數的具體含義參見2.2節)均采用默認值(=9,=10,=2,=64)。PCA和IM這兩種無監督方法則不需要特定標記的訓練集,均按照原文中給出的方法構建模型。HDFS日志數據中每一個會話的時間跨度都比較大,考慮到PCA和IM構建模型需要完整的會話,本實驗選擇整個日志數據集作為4種算法的測試集,表1給出了訓練集和測試集的具體信息。

表1 訓練集和測試集信息


表2 PCA、IM、DeepLog、本文方法性能比較結果
圖5通過精確率、召回率、值3個指標進一步對3種算法進行比較。可以看出,DeepLog方法取得了最高的召回率和值,精確率雖略低于PCA方法,但PCA方法取得較高精確率的代價是較低的召回率。本文方法的各項指標略低于DeepLog方法,但明顯高于其他兩者。

圖5 PCA、IM、DeepLog、本文方法性能比較
接下來,對DeepLog和本文方法的運行速度進行單獨對比,運行速度通過平均每條日志所需的檢測時間來衡量。表3展示了2種方法在HDFS日志測試集上的運行速度。

表3 DeepLog和本文方法運行速度對比
可以看到,本文算法和DeepLog取得的檢測精度相當,但運行速度方面本文算法有較大的領先,相比于DeepLog約提升了16.7%。
為研究模型參數變化對檢測性能的影響,本文設計了基于控制變量法(control variates)的實驗,當研究一個參數時,控制其余參數不變。模型的參數可以分為兩種。一種是GRU層數()和GRU存儲單元數()這種GRU網絡本身的結構參數。圖6顯示了和對模型性能的影響。

圖6 GRU層數和GRU存儲單元數對模型性能的影響
當=2時,模型性能達到最佳,當=3時,精確率和召回率均大幅度下降,檢測精度降低,之后隨著GRU層數增多,檢測精度逐漸回升。由于訓練樣本過小,當GRU層數設置太大時,容易產生過擬合(over-fitting)現象,且過多的GRU層數會增大計算量;導致模型訓練時間增加,因此GRU層數設置為2層較為合適。
表示GRU存儲單元的個數,當其較小時,模型欠擬合(under-fitting)導致精確率較低;當將其增大到64時,模型性能總體上趨于穩定,隨著其繼續增大變化并不明顯,;當其過大時,模型性能開始逐漸下降,可能是出現了過擬合。
另一種是針對樣本數據的參數,包括正常值可信范圍()和滑動窗口大小()。由圖7可以看到隨著的增大,模型的精確率不斷增大,而召回率則不斷減小,在極端情況下,當的值接近log key集的大小時,精確率可以達到100%,但隨之而來的可能是極低的召回率。當=9時,值取得最大值,故=9可作為判斷異常樣本的閾值。

圖7 正常值可信范圍和滑動窗口大小對模型性能的影響
表示輸入序列的長度,隨著的增大,算法精確率先是逐漸增大而后趨于穩定,這說明序列長度較短時,GRU網絡可能無法學習到日志樣本中隱藏的規律,而序列較長時增加長度并不能顯著提升模型性能,這是因為離預測值較遠的數據對預測值的影響較小。
綜合來看,本文算法比PCA和IM兩種算法檢測性能更好,比DeepLog算法檢測速度更快,在處理大規模日志數據集時,可節省大量時間,目前日志異常檢測對實時性的要求越來越高,更能體現出本文算法的優越性。且本文算法基于每條logkey進行檢測,相比于基于會話的檢測方法適用性更廣。和下文中參數值異常檢測算法結合使用,可以進一步提升異常檢測性能。
對于參數值異常檢測算法,選取了Smartbi(報表工具)的客戶端日志作為實驗數據集。Smartbi服務端安裝在個人筆記本上,客戶端安裝在個人臺式機上。當客戶端執行任務時,會調用服務端數據庫中的數據,服務端和客戶端之間發生通信。實驗在Smartbi上設置了一個重復的定時任務,通過控制網絡速度模擬系統可能遭受拒絕服務攻擊的場景。任務共重復了600次,最終采集到37 287條客戶端日志。圖8給出了Smartbi的部分日志及其解析后得到的參數值向量。
當網絡波動時,日志的參數值會表現出異常。出現異常的參數值序列可分為兩種:一種是相鄰時間戳的差值過大,另一種是請求消耗的時間過大,這兩種異常充分反映出網絡的波動情況。本實驗基于參數值異常檢測算法構建模型,將是否能夠檢測出異常參數值序列作為模型有效性的評估標準。

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

表4 兩種異常檢測模型的檢測結果對比

圖8 Smartbi日志及其解析結果

圖9 不同logkey下參數值異常檢測結果
本文算法雖然在HDFS日志異常檢測實驗中取得了較好的性能,但在處理一些更加不規則的日志(如系統日志)時,難免會發生訓練集無法涵蓋所有正常執行路徑的情況,當檢測階段出現不包含在訓練集中的執行路徑時,會引起錯誤預測,將其識別為異常。模型更新模塊可以有效解決該問題,本節設置了是否進行模型更新的對比實驗,來驗證其有效性。
本實驗選用的日志數據集為708 M的BlueGene / L超級計算機的系統日志[12],該數據集包含4 747 963條日志,其中348 460條被標記為異常。文獻[11]最早公開了該數據集,現已被廣泛應用于日志解析,可從loghub下載得到。與HDFS日志不同,該數據集中很多日志只在特定時間出現,因此訓練集很可能無法涵蓋所有的正常執行路徑和logkey,這也是該數據集被選用的原因。
對比實驗分為兩組,分別使用數據集中前10%和前20%的正常日志條目訓練模型,其余數據作為測試集。模型更新使用訓練好的模型檢測異常,每當發現檢測到的結果為假陽性時,使用該結果的輸入輸出序列更新模型;不使用模型更新的情況則只進行異常檢測,不對模型做任何增量更新。由于樣本數據集中正常日志數據大幅度重復且種類較少,因此本次實驗使用單層GRU異常檢測模型(=1),窗口大小設定為3,設定為5。為防止產生欠擬合,存儲單元數量設定為256,多次實驗證實該參數設置下異常檢測準確率最高。
表5給出了使用和不使用模型更新兩種情況下的FP、FN、TP,其中N表示不使用模型更新,Y表示使用模型更新。結合圖10中的其他性能指標,可以看到在10%訓練數據下,存在較多的假陽性誤報,模型的精確率和值非常低;將訓練數據擴大到20%,精確率和值有了一定提升,但提升幅度并不大;在經過模型更新后,檢測結果的假陽性大幅度減少,精確率和值顯著提升。

表5 使用模型更新和不使用模型更新性能對比結果

圖10 模型使用模型更新和不使用模型更新性能對比
實驗證明了模型更新算法的有效性,經過模型更新,模型的檢測精度大大提升。在使用10%的正常日志作為訓練集的情況下,模型更新將模型的精確率提高了72.1%;在使用20%的正常日志作為訓練集的情況下,模型更新將模型的精確率提高了72.7%。模型更新和異常檢測能夠并行執行,在使用當前權重參數執行異常檢測的同時,模型可以進行模型更新,因此,模型更新并不會增加過多時間成本。
當前日志異常檢測領域中涉及深度學習的研究相對較少。本文研究針對日志異常檢測領域的薄弱點,提出了一種基于GRU的日志異常檢測算法,使用Spell解析日志,從log key和參數值2個角度構建了2個檢測模型。模型的訓練以BPTT算法為基礎,使用梯度下降法更新權重參數。在模型的基礎上提出一種模型更新策略,使模型可不斷學習新的日志規則。實驗結果表明,本文算法在HDFS大型日志數據集上表現優異,精確率和召回率優于當前前沿的日志異常檢測方法。此外,本文針對參數變化對模型性能的影響進行分析,并驗證了模型更新策略的有效性。本文為今后相關工作提供了算法參考和模型構建基準,具有一定理論指導意義。面對日志數量巨大,日志規則復雜的現狀,本文研究有較高的應用價值。
[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? ),男,山東濟寧人,中國海洋大學碩士生,主要研究方向為信息安全、云計算和大數據。

劉培順(1975? ),男,山東菏澤人,中國海洋大學講師,主要研究方向為網絡與信息安全。
王彬(1981? ),男,山東沾化人,中國海洋大學實驗師,主要研究方向為計算機應用技術。

TP390
A
10.11959/j.issn.2096?109x.2019055
2019?03?12;
2019?04?30
劉培順,liups@ouc.edu.cn
國家重點研發計劃基金資助項目(No.2016YFF0806200)
The National Key Research and Development Program of China (No.2016YFF0806200)
王易東, 劉培順, 王彬. 基于深度學習的系統日志異常檢測研究[J]. 網絡與信息安全學報, 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.