蔣金釗 傅媛媛 徐建



摘 要:為了解決現有啟發式日志解析方法中日志特征表示區分能力不足導致解析精度低、泛化差的問題,提出了一種啟發式在線日志解析方法PosParser。該方法使用來源于觸發詞概念的功能詞序列作為特征表示,包含解決復雜日志易過度解析問題的兩階段檢測方法和處理變長參數日志的后處理流程。PosParser在16個真實日志數據集上取得了0.952的平均解析準確率,證明了功能詞序列具有良好區分性、PosParser有良好的解析效果和魯棒性。
關鍵詞:日志分析;日志解析;觸發詞提取;詞性標注;系統運維
中圖分類號:TP391?? 文獻標志碼:A?? 文章編號:1001-3695(2024)01-033-0217-05
doi:10.19734/j.issn.1001-3695.2023.05.0212
Heuristic online log parsing method based on part-of-speech tagging
Abstract:To solve the problems of low parsing accuracy and poor generalization caused by the insufficient distinguishing abi-lity of log feature representations for logs used in existing heuristic log parsing methods,this paper proposed PosParser,a heuristic online log parsing method.The method used function token sequence(FTS) derived from the concept of trigger words as feature representations,and consisted of the two-stage detection method for solving the problem of complex logs that were prone to over-parsing,and the post-processing for dealing with variable-length parameter logs.PosParser achieved an average parsing accuracy of 0.952 on 16 real-life log datasets.The results demonstrate that FTS has adequate distinguishing ability for logs and PosParser is effective and robust.
Key words:log analysis;log parsing;trigger word extraction;part-of-speech tagging;system maintenance
0 引言
現代計算機系統往往被期望能夠提供7×24小時的無間斷服務,但隨著計算機系統復雜程度的不斷增加,即使技術人員花費大量的努力來維持系統的穩定和可用,各種軟硬件的故障仍然難以避免。計算機系統的復雜性也導致了通過人力檢測和修復故障的困難程度在不斷提高。在此背景下,基于機器學習或深度學習的自動化智能故障發現與根因診斷技術具有很高的研究價值,受到了廣泛關注。日志作為系統運行的重要產物,由系統中的日志輸出語句產生,能夠反映系統的動態特征及系統發生故障時的上下文信息[1]。日志既包含重要的系統運行時信息,也在各個系統中常常使用,使之成為了多種智能運維任務的數據支持,如異常檢測[2,3]、故障診斷[4]、故障預測[5]。日志是典型的非結構化數據,但上述各種基于學習的智能運維方法需要結構化數據作為輸入。因此,日志解析,即將非結構化日志文本轉換為結構化日志事件的過程,是這些方法中重要的第一步。一條結構化日志由日志事件模板和動態參數組成,可以通過獲取日志事件模板或者識別動態參數完成日志解析。現有的日志解析方法大致可以分為基于規則的、基于靜態代碼分析的[6]和基于數據驅動的自動化日志解析方法三類。基于規則的日志解析方法需要針對不同的日志數據人工設計規則,即預先定義日志事件模板,然后與每條日志消息進行匹配;基于靜態代碼分析的日志解析方法考慮到源代碼中的日志輸出語句包含了日志事件信息,期望通過分析程序源代碼,從日志輸出語句中獲取日志事件模板。由于日志數據的特點,上述兩類方法的泛用性通常很差。為了提高日志解析方法的適用性和降低人力開銷,以數據驅動的自動化日志解析方法受到了廣泛關注,這類方法期望從日志數據中學習到日志事件模板或完成動態參數識別。現有的基于數據驅動的日志解析方法使用的技術可分為如下幾類[7]:頻繁項目挖掘、聚類、啟發式和其他。根據工作模式的不同還可以將日志解析方法分為離線和在線方法。由于在線解析模式更能夠滿足現代計算機系統實時的日志分析需求,近年來的日志解析器多支持在線模式或者在線與離線混合模式。
啟發式的日志解析方法與其他方法相比具有輕量級的特點,同時其流式的處理過程符合在線工作模式,具有較高的研究價值。但現有的多數啟發式日志解析方法存在解析準確率不高和泛用性不強的問題,產生這些缺陷的主要原因是這些方法使用的日志特征表示以及設計的日志解析流程區分性不足,無法很好地處理由不同系統產生的異構且結構復雜的日志。日志事件涉及一個或多個參與者,即計算機系統組件,描述了在特定時間系統狀態的變化和系統事件的發生。在自然語言處理領域的事件檢測任務[8]中,觸發詞是區分不同事件的重要標準。受到這一概念的啟發,本文認為日志事件同樣存在觸發詞,在不同事件產生的日志中大概率不同,但在由同一事件產生的日志中相同,可以作為一種具有良好區分性的日志特征表示。由于日志文本中通常存在大量的非字典詞以及不具備完整句子結構,針對自然語言的觸發詞提取方法無法直接應用于日志文本。考慮到觸發詞多為動詞和名詞,本文基于詞性標注,提取出日志中動詞和部分名詞,構建日志特征表示,稱做功能詞序列(function token sequence,FTS),并在此基礎上提出了一種啟發式日志解析方法PosParser。為了評估FTS的區分性和PosParser的有效性和泛用性,本文使用16個真實日志數據集進行了充分的實驗。實驗結果表明:FTS具有很好的區分性。PosParser在取得優于以往方法的解析效果時還具有較好的魯棒性。本文的貢獻總結如下:a)將事件抽取任務中的觸發詞概念運用到日志解析任務中,提出了FTS作為啟發式在線日志解析方法中的日志特征表示;b)基于FTS,提出了一種啟發式在線日志解析方法PosParser,包含用于解決長日志易于出現過度解析的問題的兩階段檢查方法以及處理變長參數日志的基于最長公共序列(longest common sequence,LCS)的后處理流程。
1 相關工作
圖1展示了一個日志解析過程的示例,原始日志經過日志解析后產生日志事件模板和結構化日志兩部分數據。一條原始日志消息通常包括日志頭和日志內容兩部分。日志頭中會含有時間戳、嚴重等級等表明日志產生時間、產生來源和重要性的信息,這些信息一般無法作為判斷日志事件歸屬的依據;日志內容則可以分為靜態常量和動態參數兩部分,常量是系統編程人員在日志輸出語句中固定的字符部分,參數是在系統中變量的值,是在運行時才能確定的狀態信息。日志中的常量和通配符“〈*〉”構成了日志事件模板,通配符替代了參數在日志中的位置。日志解析的目標是在原始的日志消息中識別出日志事件模板和動態參數,形成結構化日志數據。
現代計算機系統產生的日志數據通常具有數量龐大、異構與組成復雜以及處于演化狀態的特點,使得基于規則的和基于靜態代碼分析的日志解析方法在實踐中通常難以使用。基于數據驅動的自動化日志解析方法期望從原始日志數據中學習到日志事件模板或者完成動態參數的識別。各種基于數據驅動的日志解析方法使用的技術大致可分為頻繁項目挖掘[9,10]、聚類[11,12]、啟發式和其他,例如基于LCS的流式在線日志解析方法Sepll[13];將日志解析視做多目標優化問題,基于遺傳算法的MoLFI[14]以及基于深度學習的日志解析方法NuLog[15]。
基于頻繁項目挖掘的日志解析需要多次掃描數據集,在處理大容量日志數據時會出現性能問題,基于聚類的日志解析方法的解析準確率受參數設置影響較大。相較之下,啟發式日志解析方法設計不同的日志特征表示逐步將日志劃分到不同的簇,具有輕量級的特點,同時其處理流程符合在線工作模式,更能滿足日志的實時處理需求。例如AEL[16]首先提出了兩條啟發式規則識別日志中的動態參數,然后根據每條日志中單詞和參數個數的不同將日志劃分到不同的組,最后在每一組中產生最后的日志事件模板。IPLoM[17]則定義了三種啟發式規則來逐步劃分日志數據,它們分別是按日志的令牌數劃分、按單詞出現數最少的列位置上的令牌劃分和通過搜索滿足雙射關系的單詞位置劃分日志。Drain[18]首先將日志中的令牌數目作為劃分依據,然后使用了前綴樹的方式檢查日志的前幾個令牌進一步劃分日志,同時定義了日志之間的相似度計算模型作為最終的劃分標準。ML-Parser[19]構建了一個具有兩層框架的在線日志解析方法,其第一部分使用與Drain類似的前綴樹技術,用于初步劃分日志;第二部分則基于LCS進行更細粒度的處理。
2 PosParser
2.1 工作流程
PosParser的基本工作流程如圖2所示,它由預處理、日志表示、日志集合組織和后處理四個部分組成。當一條日志消息進入解析器后,首先進行預處理流程,提取出日志內容部分,并使用簡單的正則匹配識別日志內容中的常見參數;然后在日志表示流程中提取日志的FTS,或者經由緩存結構跳過FTS提取。在日志集合組織流程中,PosParser利用FTS和Hashmap結構管理日志集合的生成、搜索與更新,在輸出之前的后處理流程中將處理具有變長參數的日志。
2.2 預處理
PosParser的預處理流程由兩部分工作構成:a)日志內容的提取,一條日志消息由日志頭和日志內容兩部分組成,日志頭部包含時間戳、嚴重性等級等信息,與日志的事件歸屬無關,因此需要使用正則表達式獲取日志內容部分;b)常見變量替換,已有的工作已經證明[20],即使只設計少量的正則表達式來替換日志內容中的變量,也可極大提高日志解析的效果。預處理階段消除的變量應該是如IP地址、URL和數字等,常見而明確的變量。PosParser默認設計了正則表達式識別日志內容中的IP地址、內存地址、文件地址和時間四類變量,并使用通配符“〈*〉”替換。用戶可以自行設計針對不同日志的正則表達式。
2.3 日志表示
PosParser在日志表示流程中會先通過緩存結構確定當前處理日志是否可以直接并入某個日志集合,若不能則轉入日志FTS的提取。算法1展示了FTS的提取方法。算法1中a)使用空格、等號和冒號對日志內容分詞;b)清洗掉分詞后的令牌序列中疑似參數的部分,主要有如下幾類:含有數字的令牌;位于等號和冒號后的一個令牌;在只含有字母和特殊字符的令牌中需要清洗的字符串和程序錯誤信息。這些疑似參數的部分會影響后續無空格英文分詞和詞性標注。獲取清洗后的令牌序列后,算法中的c)對該序列做進一步的無空格英文分詞,這一步驟主要有兩個目的:一是去除部分令牌中的特殊字符,避免影響后續詞性標注工作;二是更好地暴露日志中的觸發詞信息。算法中d)使用詞性標注工具獲取經過兩次分詞后令牌的詞性,e)獲取日志的FTS。具體地,提取出其中的所有動詞和第一個名詞,如果一條日志經過兩次分詞后的令牌序列長度大于3,算法將其視做長日志,將提取出的內容組合作為該日志的FTS;否則視做短日志,單獨將動詞序列作為FTS,這是由于短日志的信息量少,其中的名詞很可能是變量。為了保證FTS的區分性,如果無法提取出動詞,使用名詞和經過兩次分詞后的第一個令牌的組合作為FTS;如果無法提取出任何動詞或名詞信息,將第一次分詞后的令牌序列中的第一個令牌作為FTS。
算法1 提取FTS
輸入:一條日志內容cnt。
輸出:日志內容的FTS,fts。
a) wordTokens=split(cnt);
b) cleanedTokens=cleanMayParameters(wordTokens);
c) pieceTokens=splitWithoutSpace(cleanedTokens);
d) partOfSpeechs=posTag(pieceTokens);
e) fts=extractFTS(wordTokens,cleanedTokens,partOfSpeechs);
f) return fts;
FTS的提取流程要經過兩次分詞、一次清洗、詞性標注和最終的組合,其中詞性標注是一件相對耗時的事情。由于相同或者來源同一事件的日志具有很大概率相鄰出現,PosParser加入了緩存機制,以提高解析效率。具體地,緩存結構中常有最近日志并入或新增的日志集合,當一條日志進入日志表示流程時,會首先與緩存中的日志集合進行相似度計算,如果相似度為1,則直接并入該日志集合,否則轉入提取FTS。這樣可以避免非必要的FTS提取和日志集合搜索。
2.4 日志集合組織
日志集合組織流程中涉及三種對象:FTSMap、事件集合和日志集合。每條日志最終將流入某一個日志集合。日志集合管理日志編號集、相似度閾值和事件模板。事件集合管理其下的日志集合,這些日志集合中的日志具有相同的FTS。FTSMap以HashMap為結構,使用FTS作為鍵,事件集合作為值。當一條日志經過日志表示流程后,將進入FTSMap,使用日志的FTS查找事件集合。如果沒有找到,PosParser將使用這條日志新建事件集合和日志集合,放入FTSMap中;如果找到,將使用兩階段檢查的方法搜索該事件集合,決定是否能夠并入某一日志集合。并入日志集合將引起日志集合的更新,否則在該事件集合下新建日志集合。
1)日志集合的搜索 日志能否并入事件集合下的某個日志集合需要進行兩階段檢查,一是閾值檢查。每一個日志集合會具有不同的相似度閾值,日志與事件模板的相似度需要大于日志集合目前的相似度閾值。使用T表示當前日志集合的事件模板,seq表示當前日志的令牌序列,相似度的計算方式表示如下:
其中:len表示模板和日志的令牌長度;simTokens表示T與seq對應位置上相同且不含有通配符的令牌個數;wildcard表示在模板T中的令牌含有通配符“〈*〉”的個數。如果計算得到的simTokens大于當前日志集合的相似度閾值,將嘗試合并當前日志和日志模板,生成新的日志模板Tn,比較Tn與T,如果產生了新的參數位置,將開始第二階段的參數位置檢查。檢查Tn和T對應位置的令牌,找到新增的參數位置索引。依次檢查序列T和序列seq中索引位置上的令牌,使用arg1和arg2表示,判斷該位置是否為變量,主要有如下幾種情況:a)arg1和arg2中同時存在字母、數字和特殊字符,認為該位置為變量;b)arg1和arg2中含有數字和字母時,檢查arg1和arg2的字母組成是否相同。相同判斷該位置為變量,反之為常量;c)arg1和arg2中含有特殊字符和字母或全由字母組成。這種情況下,取模板Tn中目前檢查位置的令牌、前一位置的令牌和后一位置的令牌構成序列進行詞性標注,若前一位置為一般名詞或者動詞,判斷該參數位置為變量;若前一位置為介詞,判斷arg1和arg2的詞性,若為一般名詞,判斷該位置為變量,否則為常量。
參數位置檢查的目的是通過檢查參數構成的相似性或語義的相似性來解決長日志由于相似度過高易出現過度解析的問題。以圖1中的日志6、7為例,這兩條日志被定義于不同的日志模板,模板之間只有一個令牌不同,閾值檢查時計算相似度為0.89。若只考慮相似度,這兩條日志將被合并;在參數位置檢查中,兩條日志在新產生的參數位置上的值分別為“va-lues”和“bytes”,不具有結構上的相似性,都不是一般名詞,且前一個令牌為介詞“for”,判定該位置為常量,不應該合并。
一次檢查中可能有多個參數位置,當每個參數位置都被判定為變量,則認為通過檢查。如果在搜索日志集合的過程中有多個日志集合滿足要求,日志應該并入相似度值最大的日志集合;若沒有一個日志集合通過檢查,PosParser會使用當前的日志令牌序列生成新的日志集合。
2)日志集合的新增 存在兩種情況:a)在日志集合搜索中無法找到通過兩次檢查的日志集合,PosParser會在當前事件集合中生成新的日志集合;b)使用日志的FTS在FTSMap無法找到對應的事件集合,此時PosParser新增日志集合并放入新建的事件集合,然后將事件集合放入FTSMap。新的日志集合使用當前待處理的令牌序列作為日志集合的事件模板,同時設置日志集合的初始相似度閾值。日志集合的初始相似度閾值stinit使用了文獻[20]提出的動態設置方法,表示如下:
其中:st是解析器的輸入參數,tokenLen為事件模板的長度,digNum是序列中含有數字的令牌個數。
3)日志集合的更新 新的日志序列并入日志集合會引起日志集合的更新:a)將當前日志的編號加入日志集合管理的日志編號集;b)事件模板的更新。將事件模板與并入的日志對應位置上不同的令牌使用通配符“〈*〉”替換;c)相似度閾值的更新。PosParser同樣使用了文獻[20]提出的相似度閾值更新規則,表示如下:
stn=min{1,stn-1+0.5* logbase(η+1)}(5)
其中:η初始設置為0,每當事件模板中有令牌被替換為通配符“〈*〉”,將導致η的值增加1。base定義如下:
base=max{2,digNum+1}(6)
其中:base和digNum只在生成日志集合時計算一次。
2.5 后處理
大部分事件集合下只有一個日志集合,這部分日志集合的事件模板可以直接輸出,但有少部分事件集合下有多個日志集合。引起這一情況的原因主要有兩個:a)變長日志的存在,變長日志是指來源于同一事件但參數部分長度不同的日志,這部分日志需要合并;b)由于詞性標注工具的精度問題導致FTS在極少部分日志上的區分性不足,將不屬于同一事件的日志劃分到了同一事件集合下,這部分日志不需要合并。PosParser在后處理階段中只合并由于變長日志存在而產生的多個日志集合,具體地,解析器會依次檢查事件集合,事件集合下的日志集合數目如果大于3,考慮合并操作。首先識別哪些事件模板來源于同一事件。由于變量已經在先前的處理中被替換為了“〈*〉”,來源于同一事件的事件模板應當具有相同的常量令牌序列。因此按照事件模板的常量令牌序列對日志集合進行分組,在具有多個日志集合的組中使用最長公共子序列算法以及其回溯算法,提取出最終的事件模板。
3 實驗及分析
3.1 數據集
參照以往的工作,本文使用了Zhu等人[7]收集的開源日志數據集LogHub,LogHub包含總數據量為77 GB的來源于16個不同系統的日志數據,這些系統分別為分布式系統、超級計算集群、操作系統、移動設備、應用服務器以及獨立軟件。LogHub在每個系統的日志數據集中選取出了大小為2 KB的子數據集,并標注了日志對應的事件模板。同時,本文在HDFS和BGL上抽取了大小從300 KB至100 MB的日志數據集,并使用LogHub提供的事件模板進行標注。
3.2 評價指標
本文采用解析準確率(parsing accuracy,PA)[7]來評價方法的有效性。PA定義為正確解析的日志與日志總數的比值。日志經過解析后會形成日志簇,每一簇的日志具有相同的事件模板,當且僅當解析后形成的日志簇與標注數據中對應事件模板的日志簇完全相同時才認為這些日志被正確解析。例如,如果日志序列[E1,E2,E3,E4]被解析為[E1,E2,E2,E3],則PA為0.5,因為第二和第三條日志被錯誤解析到同一日志簇中。相較于精確率、召回率和F1值,PA在評價方法有效性時更加嚴格。
3.3 實驗設置
本文基于PyCharm,使用Python實現了PosParser。在預處理流程中,為與其他基線方法保持一致,采用LogPai[7]中預設的正則表達式提取日志內容并消除常用變量。方法的后續流程中,使用了wordninja作為無空格英文分詞工具,NLTK作為詞性標注工具。除敏感性實驗外,解析器輸入參數st的取值均為0.5。實驗環境為Windows 10 64位操作系統,處理器為Intel CoreTM i7-10700K CPU @ 3.80 GHz。
3.4 FTS的區分性
在啟發式的日志解析方法中,使用的啟發式規則或者日志的特征表示是方法中的重要一環。為證明本文提出的FTS具有良好的區分性,可以有效地作為啟發式日志方法中日志消息劃分的指導依據,本節進行了兩方面的相關實驗。
a)有關日志解析過程中涉及參數,即式(4)中的解析器輸入參數st的敏感性實驗。st決定了日志集合的初始相似度閾值,當st的取值較小時,容易導致日志的異常合并;當st取中間值時,容易出現長日志的過度解析問題;當st的取值過大時,日志易于被過度解析。st的值過大或者過小都會導致解析效果不佳,其值的確定是一項煩瑣的工作。該組實驗設置st的取值為[0.1,0.9],步長為0.05。實驗結果如圖3所示。
當st的取值小于0.5時,在所有的日志集上的解析效果都對st取值的變化不敏感;當st取值在0.5~0.7時,在13個日志集上的解析效果同時保持了穩定,在三個數據集上具有小幅度的變化;當st取值大于0.7后,在八個日志集上的解析效果仍然相對穩定,在六個數據集上的解析效果有明顯下降,在Android和Mac日志數據上的解析效果呈現上升趨勢。這初步證明了FTS具有良好的區分性,大部分不屬于同一事件模板的日志不會流入同一事件集合,不需要進行日志集合的搜索,st取值的變化無法影響這部分日志的解析,使得在低st取值時的解析效果呈現相對穩定的狀態;同時,st取0.5時能夠在大部分日志集上獲得較優的解析效果,在少部分日志集上也只需要考慮高st值的調參工作,降低了參數設置的復雜性,提高了日志解析工作的自動化程度。
b)統計后處理流程之前的事件集合中的日志集合數目,進一步討論FTS的區分性。統計結果如表1所示。表中展示了在FTSMap中含有一個日志集合、兩個日志集合和大于兩個日志集合的事件集合數目占FTSMap中所有事件集合數目的比值。從表1可以看到,在16個數據集中,含有一個日志集合的事件集合數量占比在所有數據集上都大于80%,同時該項數值在9個數據集上大于90%。含有兩個日志集合的事件集合數量占比在13個數據集上小于10%;而含有大于兩個日志集合的事件集合數量占比在12個數據集上小于5%,且該項數值在4個數據集上為0%。平均來看,90.32%的事件集合中只含有一個日志集合,只有3%的事件集合中含有超過兩個的日志集合。這說明日志的FTS能夠決定絕大部分日志的事件歸屬,只有小部分的日志需要參與日志集合搜索流程,進一步證明了FTS具有良好的區分性。
3.5 解析準確率對比
本節通過對比實驗來證明PosParser方法的有效性,選取了經典的啟發式方法作為對比方法,包括AEL[17]、IPLoM[18]和Drain[19]。各方法在16個大小為2 KB的數據集上的解析準確率結果如表2所示。表中的每一行對比了不同方法在同一數據集上的解析準確率,表中的每一列展示了某一方法在不同數據集上的解析準確率。為了使結果展示更清晰,表中的最后一行展示了不同方法的平均解析準確率,在某一數據集上的最優解析準確率使用了粗體標注。
從表2的結果可以看到,在16個數據集中,PosParser一共在15個數據集上取得了最優的解析準確率,同時取得了最優的平均解析準確率。若考慮所有的數據集,Drain的平均解析準確率為0.865,是對比方法中最優的。與Drain相比,PosParser的平均解析準確率提升了10.06%,證明了本文提出的方法是有效的,在絕大多數系統的日志數據集上都能夠獲取優于以往方法的解析準確率。
PosParser能夠取得優于以往啟發式日志解析方法的原因主要如下:a)采用了具有良好區分性的日志特征FTS表示作為日志的劃分依據;b)針對具有復雜結構的日志提出了兩階段檢查的方法緩解其容易出現過度解析的問題,使得在如Linux、Andriod和 OpenStack等數據集上的解析準確率有較為明顯的提升;c)設計了后處理流程處理具有變長參數的日志,在含有典型的具有變長參數的日志的數據集,如HDFS、HPC和Proxifier,也獲得了明顯提升。
3.6 魯棒性對比
為了探究面對不同體積日志時,日志解析方法能否保持穩定的解析準確率。本節使用了從HDFS和BGL中抽取的,大小從300 KB到100 MB的標注日志數據進行對比實驗。實驗設置與3.3節相同。實驗結果如圖4所示。其中圖(a)是在HDFS數據集上的實驗結果,當數據集大小為300 KB時所有方法都獲得了較好的準確率,當數據集大小達到100 MB后,只有PosParser、AEL保持了較好的準確率,Drain和IPLoM的解析準確率明顯下降;圖(b)展示了在BGL數據集上的實驗結果,當數據集體積大于300 KB后,所有方法的解析效果都有一定的下降,其中IPLoM準確率下降明顯,但PosParser在大于300 KB的所有數據集上保持了相對穩定的解析準確率。這證明了PosParser在面對日志數據大小變化時能夠保持穩定的解析效果,具有較好的魯棒性。同時可以看到,相較其他方法,PosParser在所有數據集上都獲得了很好的解析效果,進一步證明了PosParser的有效性。
4 結束語
日志解析是一項具有挑戰性工作,受到自然語言處理領域事件抽取任務的啟發,本文提出了一種基于詞性標注的在線日志解析方法PosParser。PosParser的工作流程由預處理、日志表示、日志集合組織和后處理四個部分組成。在預處理中,使用正則表達式提取、日志內容并消除常見變量;在日志表示中,設計了FTS的提取流程;在日志集合組織中,提出了兩階段檢查方法處理過度解析問題;在后處理流程中,使用最長公共子序列算法以及其回溯算法合并具有變長參數的日志。最后,本文在16個真實日志數據集上進行了充分的實驗,證明了本文提出的功能詞序列具有良好的區分性,設計的啟發式日志解析方法不僅能獲得優于以往啟發式日志解析方法的解析準確性,還具有良好的魯棒性。FTS的區分性依賴于詞性標注工具的精度,本文設計的FTS提取流程中的很多操作正是為了減少詞性標注不精確帶來的影響。在未來工作中,將考慮如何優化日志特征表示的提取流程并進一步提高區分性。
參考文獻:
[1]賈統,李影,吳中海.基于日志數據的分布式軟件系統故障診斷綜述[J].軟件學報,2020,31(7):1997-2018.(Jia Tong,Li Ying,Wu Zhonghai.Survey of state-of-the-art log-based failure diagnosis[J].Journal of Software,2020,31(7):1997-2018.)
[2]Li Xiaoyun,Chen Pengfei,Jing Linxiao,et al.SwissLog:robust and unified deep learning based log anomaly detection for diverse faults[C]//Proc of the 31st IEEE International Symposium on Software Reliability Engineering.Piscataway,NJ:IEEE Press,2020:92-103.
[3]Huang Shaohan,Liu Yi,Fung C,et al.HitAnomaly:hierarchical transformers for anomaly detection in system log[J].IEEE Trans on Network and Service Management,2020,17(4):2064-2076.
[4]Yuan Ding,Mai Haohui,Xiong Weiwei,et al.SherLog:error diagnosis by connecting clues from run-time logs[J].ACM SIGPLAN Notices,2010,45(3):143-154.
[5]Li Longhao,Znati T.AtFP:attention-based failure predictor for extreme-scale computing[C]//Proc of the 13th International Conference on Reliability,Maintainability,and Safety.Piscataway,NJ:IEEE Press,2022:23-27.
[6]Nagappan M,Wu Kesheng,Vouk A M.Efficiently extracting operational profiles from execution logs using suffix arrays[C]//Proc of the 20th IEEE International Conference on Software Reliability Enginee-ring.Piscataway,NJ:IEEE Press,2009:41-50.
[7]Zhu Jieming,He Shilin,Liu Jinyang,et al.Tools and benchmarks for automated log parsing[C]//Proc of the 41st IEEE/ACM International Conference on Software Engineering:Software Engineering in Practice.Piscataway,NJ:IEEE Press,2019:121-130.
[8]馬春明,李秀紅,李哲,等.事件抽取綜述[J].計算機應用,2022,42(10):2975-2989.(Ma Chunming,Li Xiuhong,Li Zhe,et al.Survey of event extraction[J].Journal of Computer Applications,2022,42(10):2975-2989.)
[9]Vaarandi R,Pihelgas M.LogCluster:a data clustering and pattern mi-ning algorithm for event logs[C]//Proc of the 11th International Conference on Network and Service Management.Piscataway,NJ:IEEE Press,2015:1-7.
[10]Dai Hetong,Li Heng,Chen Cheshao,et al.Logram:efficient log parsing using n-gram dictionaries[J].IEEE Trans on Software Engineering,2022,48(3):879-892.
[11]Xiao Tong,Quan Zhe,Wang Zhijie,et al.LPV:a log parser based on vectorization for offline and online log parsing[C]//Proc of IEEE International Conference on Data Mining.Piscataway,NJ:IEEE Press,2020:1346-1351.
[12]Hamooni H,Debnath B,Xu Jianwu,et al.LogMine:fast pattern recognition for log analytics[C]//Proc of the 25th ACM International on Conference on Information and Knowledge Management.New York:ACM Press,2016:1573-1582.
[13]Du Min,Li Feifei.Spell:online streaming parsing of large unstructured system logs[J].IEEE Trans on Knowledge and Data Enginee-ring,2019,31(11):2213-2227.
[14]Messaoudi S,Panichella A,Bianculli D,et al.A search-based approach for accurate identification of log message formats[C]//Proc of the 26th Conference on Program Comprehension.New York:ACM Press,2018:167-177.
[15]Nedelkoski S,Bogatinovski J,Acker A,et al.Self-supervised log parsing[M]//Machine Learning and Knowledge Discovery in Databases:Applied Data Science Track.Berlin:Springer-Verlag,2021:122-138.
[16]Jiang Zhenming,Hassan A E,Flora P,et al.Abstracting execution logs to execution events for enterprise applications(short paper)[C]//Proc of the 8th International Conference on Quality Software.Washington DC:IEEE Computer Society,2008:181-186.
[17]Makanju A A O,Zincir-Heywood A N,Milios E E.Clustering event logs using iterative partitioning[C]//Proc of the 15th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining.New York:ACM Press,2009:1255-1264.
[18]He Pinjia,Zhu Jieming,Zheng Zibin,et al.Drain:an online log parsing approach with fixed depth tree[C]//Proc of IEEE International Confe-rence on Web Services.Piscataway,NJ:IEEE Press,2017:33-40.
[19]蒲嘉宸,王鵬,汪衛.ML-Parser:一種高效的在線日志解析方法[J].計算機應用與軟件,2022,39(1):45-52.(Pu Jiachen,Wang Peng,Wang Wei.ML-Parser:an efficient and accurate online log parser[J].Computer Applications and Software,2022,39(1):45-52.)
[20]He Pinjia,Zhu Jieming,Xu Pengcheng,et al.A directed acyclic graph approach to online log parsing[EB/OL].(2018-06-12)[2022-06-30].https://arxiv.org/pdf/1806.04356.pdf.