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

?

ML-Parser:一種高效的在線日志解析方法

2022-01-28 03:00蒲嘉宸
關(guān)鍵詞:相似性度量預(yù)處理

蒲嘉宸 王 鵬 汪 衛(wèi)

(復(fù)旦大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 上海 200433)

0 引 言

日志是指在各種服務(wù)、框架和程序中生成的文本消息,是開發(fā)人員和用戶之間的重要接口。如今,日志數(shù)據(jù)的數(shù)量正在迅速增長,日志數(shù)據(jù)已成為有價(jià)值的數(shù)據(jù)源,因?yàn)槠渲邪脩舻恼鎸?shí)數(shù)據(jù),而且它是部分結(jié)構(gòu)化的,因此無須費(fèi)力即可提取某些數(shù)據(jù)。因此,數(shù)據(jù)挖掘技術(shù)通常應(yīng)用于日志數(shù)據(jù)以執(zhí)行日志分析。該工作流程廣泛應(yīng)用于服務(wù)管理。日志分析包括異常檢測、故障診斷和性能改進(jìn)等領(lǐng)域。但是,要充分利用日志數(shù)據(jù),日志解析是首要任務(wù)。

由于日志解析的重要性,已經(jīng)有很多學(xué)者對(duì)其進(jìn)行了深入研究。隨著日志結(jié)構(gòu)的日益復(fù)雜,這些方法的效果并不理想。在解析粒度的選擇上,傾向于使用粗粒度的解析。而在相似性度量的選擇上,Drain[1]使用了相同長度的日志之間的簡單比較,而Spell[2]設(shè)計(jì)了基于LCS的相似度量。文獻(xiàn)[3-4]引入了細(xì)粒度的解析,但是主要應(yīng)用于離線的場景,使用MapReduce來處理日志解析任務(wù)。

細(xì)粒度的解析通過提取日志中的變量來提高解析的準(zhǔn)確性,例如,如果使用粗粒度分析,則“FA‖URL‖taskID [2019353678] dealloc”將表示為“*dealloc”,而在細(xì)粒度分析中,使用“FA URL taskID*dealloc”表示此日志。后者表征包含更多信息,使得查找兩條相似日志變得更加容易。與Drain中的簡單比較相似性度量相比,LCS可以處理不同長度的日志之間的比較。因此,理想情況下,將細(xì)粒度分析與LCS相似性度量相集成的方法具有更好的解析質(zhì)量。但是,由于通過引入細(xì)粒度的預(yù)處理而增加了單詞的數(shù)量,并且LCS的計(jì)算成本很高,因此該方法的效率不高,不適合在聯(lián)機(jī)日志解析場景中進(jìn)行日志解析。

本文提出了一種在線日志解析方法ML-Parser,可以高效且準(zhǔn)確地以流式的方式解析原始日志數(shù)據(jù)集。本文主要的貢獻(xiàn)包括:(1)將解析的粒度和相似性度量的選擇視為日志解析中的兩個(gè)重要因素;(2)引入了兩層框架的設(shè)計(jì),可以高效且準(zhǔn)確地解析日志,并在理論和方法上確保每一層的比較結(jié)果保持一致;(3)對(duì)多個(gè)日志數(shù)據(jù)集進(jìn)行了大量的實(shí)驗(yàn),測試結(jié)果表明,本文方法以較高的性能開銷取得了更好的解析質(zhì)量。

1 相關(guān)知識(shí)

1.1 相關(guān)工作

日志可廣泛用于軟件系統(tǒng)的許多方面,例如行業(yè)中的異常檢測、使用情況分析和故障診斷。但由于它們具有非結(jié)構(gòu)化的性質(zhì),因此無法直接進(jìn)行分析。許多研究設(shè)計(jì)了將其解析為結(jié)構(gòu)化格式的方法。傳統(tǒng)方法使用手動(dòng)定義的正則表達(dá)式來提取日志模板。為了避免傳統(tǒng)方法中的繁瑣的編寫過程,Xu等[5]提出了一種使用源代碼知識(shí)來推斷消息模板的方法。

由于獲取所有源代碼總是不切實(shí)際的,因此在學(xué)術(shù)界和工業(yè)界都已廣泛研究了數(shù)據(jù)驅(qū)動(dòng)的自動(dòng)日志解析方法。SLCT[6]是第一個(gè)自動(dòng)日志解析方法,利用頻繁的模式挖掘來提取日志模板,但無法提取不太頻繁的日志模板。LogSig[7]和LKE[8]設(shè)計(jì)了日志間的距離度量,并使用聚類算法將原始日志分為不同的類。IPLoM[9-10]通過日志的某些特征(例如長度及單詞之間的二元關(guān)系)來迭代地劃分日志消息。一些研究使用分布式計(jì)算來處理大量日志。LogMine[11]以分層的方式提取模板,其中不同級(jí)別對(duì)應(yīng)于具有不同粒度的模板。Logan[3]是一種細(xì)粒度的日志模板提取方法,在預(yù)處理階段使用通用變量識(shí)別并基于LCS進(jìn)行相似性評(píng)分。還為日志解析方法引入了一種不需要人工標(biāo)注的評(píng)估指標(biāo)。

在過去的幾年中,一些在線方法支持以流式方式來解析日志。通過設(shè)計(jì)一種相似性度量,用于測量事件模板和原始日志之間的相似性。在處理日志消息時(shí),選擇最相似的模板進(jìn)行合并。但是,由于模板數(shù)量眾多,計(jì)算日志消息和所有模板之間的相似度非常耗時(shí)。因此,每種方法都使用不同的技術(shù)來加快過程。在LenMa[12]中,每個(gè)日志消息都可以表示為一個(gè)由單詞長度組成的向量,通過余弦相似度來計(jì)算日志之間的相關(guān)性。但是其中相同模板的日志具有相似的單詞長度分布的假設(shè)太強(qiáng),無法應(yīng)用于所有情況。Spell[2]使用LCS作為相似性度量,并利用Jaccard相似度和前綴樹來減少處理時(shí)間。本文方法優(yōu)于Spell,并且可以支持細(xì)粒度級(jí)別和粗粒度級(jí)別的日志解析。Drain[1]使用固定深度的前綴樹,以設(shè)計(jì)好的規(guī)則對(duì)需要比較的日志模板集進(jìn)行編碼,因此每個(gè)日志只需要與日志模板集中少數(shù)模板進(jìn)行比較。盡管Drain在某些數(shù)據(jù)集上表現(xiàn)良好,但對(duì)日志中單詞的長度敏感,而且在日志以變量開頭的情況下效果不佳。

1.2 日志解析中的概念與問題定義

在本文中,日志數(shù)據(jù)集中的日志在解析過程中可轉(zhuǎn)換為日志模板。下面給出這些概念的定義。

定義1一個(gè)日志數(shù)據(jù)集由一個(gè)長度為m的日志序列構(gòu)成:L=(e1,e2,…,em),該日志序列通常按日志上的時(shí)間戳進(jìn)行排序。

定義2給定一組分割符D,一條日志可以被分割為一條單詞序列:t=(t1,t2,…,tn),其中n為序列的長度。該日志的類型被稱為日志模板,可以通過將單詞序列中的變量替換為通配符得到。

例如,在程序中有如下的輸出語句“print("IP:{},Port:{}-Connection open".format(ip,port)),”,則在日志中可能出現(xiàn)“IP:172.217.160.110,Port:443-Connection open.”,其對(duì)應(yīng)的日志模板為“IP:*,Port:*-Connection open”。

問題1在線日志解析。

給定一個(gè)日志文件L=(e1,e2,…,em),以流式的方式找出日志模板集T=(t1,t2,…,tp),其中p是T中日志模板的數(shù)量。

日志數(shù)據(jù)集與日志模板集及其之間映射關(guān)系如圖1和圖2所示。下文將使用圖1、圖2中的日志來舉例說明本文的方法。

圖1 日志數(shù)據(jù)集的樣例

圖2 日志模板集的樣例

1.3 具體問題定義

盡管將日志轉(zhuǎn)換為日志模板對(duì)人來說似乎是比較容易的,但實(shí)際上很難在日志中確定哪些部分是變量。首先,由于日志的復(fù)雜性,很難判斷某個(gè)單詞是否是變量;其次,由于存在大量的日志,因此作出上述判斷不能花費(fèi)太多時(shí)間。本文將其看成是日志上的聚類問題,其中存在兩個(gè)關(guān)鍵問題:① 使用哪些分割符將日志拆分為單詞序列;② 使用哪種相似性度量來確定兩條日志是否屬于同一類。

1)分割符。在早期,分隔符的選擇不是問題,因?yàn)閮H將空格視為單詞之間的分隔符。這種情況下,分隔符可以記為Ds={space}。但是日志的結(jié)構(gòu)變得越來越復(fù)雜,例如Logan[3]和Delog[4]選擇所有非字母數(shù)字字符作為分割符。本文使用Da表示所有非字母數(shù)字字符的集合。這種分割符的選擇對(duì)于從日志中提取隱藏變量非常有效,例如,對(duì)于日志“FA‖URL‖taskID [2019353678] dealloc”,在分別使用Ds和Da作為分割符的情況下,獲得的日志模板分別為“*dealloc”和“FA Url taskID*dealloc”。可以看到,后者可以保留更多的常量信息,因此更容易分辨兩個(gè)日志模板是否相似。假設(shè)使用相同位置相同單詞占整條日志的比例作為相似性度量,在閾值為0.6的情況下,在使用粗粒度預(yù)處理時(shí),兩個(gè)taskID不同的模板不能進(jìn)行合并,但是如果借助于細(xì)粒度預(yù)處理,那么兩條日志就可以被合并。然而,細(xì)粒度預(yù)處理引入了更多分割符,因此會(huì)生成更長的單詞序列,與粗粒度預(yù)處理相比,需要更長的處理時(shí)間。

2)相似性度量。作為聚類問題,相似性度量的選擇是一個(gè)關(guān)鍵因素。對(duì)于在線日志解析器,相似性度量有兩種常見選擇。Spell[2]使用基于LCS[13]的相似性度量,它可以對(duì)不同長度的日志進(jìn)行比較,其時(shí)間復(fù)雜度為O(n2);而Drain[1]基于固定深度前綴樹選取日志候選集,對(duì)相同長度的日志進(jìn)行比較,其計(jì)算復(fù)雜度為O(n)。

LCS是最長的公共子序列的簡稱,本文使用LCS(X,Y)來表示兩個(gè)序列X和Y之后的最長公共子序列。

本文同時(shí)使用了基于線性比較及基于LCS的相似性度量,分別表示為:

(1)

(2)

其中:

(3)

式中:n是兩條日志的長度;LCS*是LCS的一個(gè)變體,即在計(jì)算最長公共子串的過程中忽略通配符。

給定分割符和相似性度量的選擇,本文要解決的問題2可以定義如下:

問題2給定日志數(shù)據(jù)集L,以流式的方式找出日志模板集T,即如果日志s和日志模板t滿足:

SimDa,LCS*(s,t)≥ε

(4)

則將日志s的日志模板設(shè)置為t,否則使用日志s來創(chuàng)建新的日志模板,ε是用戶指定的相似性閾值。

1.4 挑戰(zhàn)與方法概述

一個(gè)簡單的解決方案是針對(duì)新的日志,遍歷所有的日志模板,然后選擇最相似日志模板的日志集與其合并,或基于該日志創(chuàng)建新的日志模板。但是,該方法具有較高的計(jì)算復(fù)雜度O(mpn2)。因此本文研究面對(duì)的主要挑戰(zhàn)是如何提高日志解析的效率。

對(duì)此,本文設(shè)計(jì)了一個(gè)兩層框架,用于計(jì)算日志s和模板t之間的相似度,如圖3所示。在第一層中,在s和每個(gè)長度相同且為n的日志模板t之間計(jì)算基于粗粒度預(yù)處理的相似度SimDs,HAMD(s,t)。先過濾掉在開始位置具有不同單詞的模板來進(jìn)一步限制搜索空間,就像在Drain[1]中所做的一樣。在第二層中,使用基于細(xì)粒度預(yù)處理的相似度SimDa,LCS*(s,t)來比較s和日志模板t。若在上一層中找到合適的日志模板t,則跳過后續(xù)層中的計(jì)算。

圖3 兩層框架示意圖

該框架將時(shí)間復(fù)雜度降低到接近O(mpn),極大地提高了原始解決方案的性能,因?yàn)榇蠖鄶?shù)日志都可以在第一層中處理。

1.5 理論基礎(chǔ)

上文介紹了如何使用兩層的框架來加速日志解析??蚣苤械牡谝粚涌梢燥@著加快日志解析,本節(jié)證明使用這種框架不會(huì)影響結(jié)果的正確性。

引理1給定長度為n的日志s與模板t,有:

(5)

定義3線性合并條件。給定分割符Da和Ds,假設(shè)日志s與模板t從分割符Ds切換至Da后新增的單詞數(shù)的最大值為b,其中相同的單詞數(shù)為a,則線性合并條件可以寫為:

a≥ε×b

(6)

使用線性合并條件,可以給出正確性的證明。

定理1給定長度為n的日志s與模板t,若滿足:

SimDs,HAMD(s,t)≥ε

(7)

a≥ε×b

(8)

則有:

SimDa,LCS*(s,t)≥ε

(9)

證明由式(7)可以得到:

(10)

結(jié)合引理1得:

|LCS*(s,t)|≥ε×n

(11)

由式(8)和式(11)可以得到:

|LCS*(s,t)|+a≥ε×(n+b)

(12)

變換后可以得到式(9),證畢。

通過上述證明,可以保證在第一層合并的模板,在第二層也會(huì)進(jìn)行合并,從而在提升解析速度的同時(shí),保證了解析結(jié)果的準(zhǔn)確性。

2 日志解析方法

為了提供一個(gè)快速而有效的解決方案,本文提出了一個(gè)兩層框架來表示日志模板。當(dāng)新的原始日志出現(xiàn)時(shí),將首先使用用戶定義的正則表達(dá)式集對(duì)其進(jìn)行預(yù)處理,然后在具有最大深度固定值的前綴樹中搜索待比較的日志模板集。如果找到合適的日志模板,則將該日志添加到該模板的日志集合中,并更新日志模板;否則,將基于該日志創(chuàng)建一個(gè)新的日志模板和一個(gè)輸出節(jié)點(diǎn)。如果生成了新的日志模板或者原有的日志模板得到了更新,則將通過使用基于LCS的相似性度量和細(xì)粒度的預(yù)處理,與較大的一組日志模板一起進(jìn)行匹配。如果找到類似的日志模板,則兩個(gè)日志模板的輸出節(jié)點(diǎn)將進(jìn)行合并,并且數(shù)據(jù)節(jié)點(diǎn)中的日志模板將更新。本節(jié)介紹使用的數(shù)據(jù)結(jié)構(gòu)以及本文方法如何逐步處理日志消息。

2.1 數(shù)據(jù)結(jié)構(gòu)

使用1.4節(jié)中介紹的兩層框架。第一層是具有最大深度的前綴樹,與Drain[1]中的固定深度前綴樹類似,主要區(qū)別在于放寬了固定深度樹的約束條件,從而可以將日志模板集存儲(chǔ)在內(nèi)部節(jié)點(diǎn)中,因而可以在較早階段將具有相同日志模板的日志集合進(jìn)行合并。第一層中的每個(gè)節(jié)點(diǎn)都指向一個(gè)輸出節(jié)點(diǎn),該節(jié)點(diǎn)包含兩層日志模板。它們分別對(duì)應(yīng)于通過對(duì)線性匹配及采用細(xì)粒度預(yù)處理和LCS匹配生成的日志模板。

2.2 預(yù)處理

由先前的文獻(xiàn)[1,3-4]和綜述文獻(xiàn)[14]可知,預(yù)處理是提高日志解析質(zhì)量并減少日志模板數(shù)量的重要步驟。在解析之前,通過使用一些正則表達(dá)式來刪除原始日志中的一些變量。這些正則表達(dá)式由用戶提供,作為可選的領(lǐng)域知識(shí)的輸入方式。為了避免減慢日志解析的速度,預(yù)處理中僅使用了數(shù)量非常有限的簡單正則表達(dá)式。使用正則表達(dá)式后,通過一些分割符將日志拆分為單詞序列。使用兩種類型的分割符Da和Ds在兩種方法之間取得平衡。例如,圖1中的第三條日志消息在分別應(yīng)用Da和Ds后轉(zhuǎn)換為“Process python.exe exited 0”和“Process python exe exited*”。

2.3 第一層中的日志模板匹配

給定新日志s,找到需要比較的日志模板,可以通過在前綴樹中進(jìn)行遍歷來實(shí)現(xiàn)。使用前綴樹的原因是因?yàn)榇蠖鄶?shù)日志滿足以下假設(shè):(1)大多數(shù)相同類型的日志往往具有相同的長度;(2)相同類型的日志的在開始的若干個(gè)位置上可能具有相同的單詞。

根據(jù)上述假設(shè),可以獲得與日志s長度相同且在起始位置具有相同單詞的那些日志模板,這些是要比較的日志模板。這里可以基于SimDs,HAMD(s,t)找到最適合該日志消息的日志模板,即這些日志模板中具有最大相似度的日志模板。如果該日志模板與日志s的相似性大于等于用戶定義的閾值ε,則應(yīng)該將該日志添加到該日志模板的日志集合中。

在合并之前,根據(jù)定理1,還需要滿足線性合并條件。如果滿足,則應(yīng)執(zhí)行合并操作;否則,應(yīng)該拒絕這次合并,并認(rèn)為該日志沒有合適的日志模板。這一步可以減少過度合并的情況。例如,有兩條日志“Process java.exe exited with 1”和“Process java.exe exited with java.io.FileNotFoundException”,假設(shè)ε=0.5,則SimDs,HAMD=0.8≥ε,在沒有線性合并條件限制的情況下,會(huì)造成不合理的合并。此時(shí)線性合并相似度的值為0.4<ε,因此可以通過使用線性合并條件來拒絕這次合并。

如果在上一步中找到了合適的日志模板,則將日志添加到日志模板的日志模板集中,并通過在日志模板和日志的相同位置的循環(huán)比較來更新該日志模板;否則,將基于當(dāng)前日志創(chuàng)建一個(gè)新的日志模板,其日志集合僅包含該日志本身。

2.4 第二層中的日志模板匹配

第二層主要處理可變參數(shù)長度的日志模板。一些單詞可能由一些與某些分隔符相連的元素組成,例如日期時(shí)間字符串(例如“12:00:00”,“2019/12/01”)、URL(例如“https://www.google.com/”)和文件路徑(例如“/usr/local/bin/root”)。盡管可以通過引入一些手工編寫的正則表達(dá)式來識(shí)別這些元素,但用戶學(xué)習(xí)編寫正則表達(dá)式需要付出巨大的精力。通過引入細(xì)粒度的預(yù)處理,使用戶避免編寫正則表達(dá)式的過程的同時(shí)也能處理這些情況。

給定一個(gè)新創(chuàng)建或更新后的日志模板,需要確定應(yīng)該與之進(jìn)行比較的日志模板,這可以使用倒排索引來完成,倒排索引在數(shù)據(jù)庫領(lǐng)域中被廣泛使用。倒排索引基于單詞構(gòu)建,如圖4所示。創(chuàng)建新的日志模板時(shí),對(duì)于ID為id的日志模板的單詞集合中的每個(gè)單詞將其記錄為(id,count),其中count是這條日志中這個(gè)單詞的出現(xiàn)次數(shù)。對(duì)于更新后的日志模板,統(tǒng)計(jì)在模板更新階段被通配符替換的單詞,并減去這些單詞在倒排索引中的模板id的計(jì)數(shù)。通過引入倒排索引,可以減少待比較的日志模板的數(shù)量。

圖4 日志模板的倒排索引示例

通過使用倒排索引得到待比較的日志模板,然后根據(jù)相似性度量SimDa,LCS*(s,t)來尋找一個(gè)合適的日志模板。如果該日志模板與當(dāng)前日志模板的最大相似性值超過了用戶定義的閾值ε,則將當(dāng)前日志模板與日志模板的輸出節(jié)點(diǎn)合并。為避免影響第一層中的日志模板,將更新后的日志模板作為第二層中的模板存儲(chǔ)在輸出節(jié)點(diǎn)中。更新后的日志模板可以通過計(jì)算LCS得到,即將找到的日志模板中所有與當(dāng)前日志模板不匹配的單詞全部替換為通配符。例如,對(duì)于新創(chuàng)建的日志模板“Process NVIDIA Share.exe exited with 1”和找到的日志模板“Process python.exe exited with 0”,第二層中的模板應(yīng)為“Process*exe exited with*”,如圖5所示。

圖5 日志模板合并樣例

3 實(shí) 驗(yàn)

本節(jié)將ML-Parser與三種流行的、支持以流式的方式處理的在線日志解析算法在公開數(shù)據(jù)集[15]上進(jìn)行比較,測試日志解析的效率和質(zhì)量。測試環(huán)境是在Windows計(jì)算機(jī)上構(gòu)建的,該計(jì)算機(jī)具有24核的CPU。所有日志解析算法的代碼都在Python 3.7環(huán)境下運(yùn)行。

測試中使用的數(shù)據(jù)集的信息見表1,其中包含大小從2 MB到2 GB的各種日志文件。它涵蓋了文獻(xiàn)[1-2,8]中介紹的常見測試用例。

表1 數(shù)據(jù)集信息概覽

本文從效率和質(zhì)量兩方面進(jìn)行評(píng)估,并選擇了三種在線方法進(jìn)行比較,分別為Spell[2]、Drain[1]和Drain的改進(jìn)版本(記為DrainV2)[16]。Spell的想法是將日志模板使用基于LCS的相似性度量進(jìn)行比較。此外,還使用基于前綴樹和簡單的循環(huán)比較的方法來加快執(zhí)行速度。而Drain根據(jù)長度對(duì)所有日志模板進(jìn)行分塊,然后在固定深度的前綴樹中執(zhí)行搜索。DrainV2引入了一些改進(jìn),例如不需要定義相似性閾值,將日志最后的單詞也放入前綴樹中,以及為長度不同的日志模板引入了可選的合并機(jī)制。

表2顯示了在測試中算法所使用的參數(shù)。對(duì)于Spell和Drain,使用文獻(xiàn)[15]所建議的參數(shù)值。對(duì)于DrainV2[16]僅對(duì)Proxifier數(shù)據(jù)集啟用了可選的合并機(jī)制,并且合并閾值設(shè)置為0.95。

表2 ML-Parser與其他方法的參數(shù)設(shè)置

3.1 解析質(zhì)量

本節(jié)將評(píng)估ML-Parser的有效性。為避免手動(dòng)定義日志模板的正則表達(dá)式,使用文獻(xiàn)[3]中的非監(jiān)督指標(biāo)進(jìn)行評(píng)估。此度量標(biāo)準(zhǔn)要求日志模板不應(yīng)過度泛化,也不應(yīng)有變量未被發(fā)現(xiàn)的情況。給定一組日志模板T,計(jì)算以下指標(biāo):

AvgTokenLost(t)=AvgMatchLength(t)-|t|

(13)

LengthLoss(T)=(log|T|)θ

(14)

(15)

Loss=LengthLoss(T)+QualityLoss(T)

(16)

式中:ti是T中的模板;AvgMatchLength(t)是評(píng)估模板t的日志集合中所有原始日志與模板t的平均匹配長度;LengthLoss反映了T中生成了多少模板;QualityLoss評(píng)估生成的模板是否存在過度泛化;θ是一個(gè)超參數(shù),用于控制兩個(gè)因素之間的重要性。根據(jù)原始論文,θ設(shè)置為1.5。

本文使用細(xì)粒度的預(yù)處理將原始日志轉(zhuǎn)換為單詞序列。因此,為了使測試公平,還使用了細(xì)粒度的預(yù)處理來評(píng)估Drain和Spell的結(jié)果,在測試中以后綴“S”命名。從表3和表4所示的比較結(jié)果可以看出,采用細(xì)粒度預(yù)處理的方法可以得到較少的日志模板,并且在大多數(shù)日志中的損失較小,這可能是因?yàn)榭梢栽诩?xì)粒度預(yù)處理的幫助下找到更多隱藏的變量。SpellS和ML-Parser生成的日志模板少于其他方法。但是,SpellS在某些數(shù)據(jù)集中具有較高的損失值和較少的模板,這意味著某些重要的單詞在模板中丟失。就損失和生成模板的數(shù)量而言,ML-Parser在所有數(shù)據(jù)集中的表現(xiàn)都優(yōu)于Drain和Spell,并且在所有方法中,十個(gè)任務(wù)中有七個(gè)任務(wù)的損失最低。

表3 ML-Parser與其他方法之間的損失比較

表4 ML-Parser與其他方法之間的模板數(shù)比較

3.2 解析速度

表5顯示了ML-Parser和其他方法的性能??梢钥吹?,采用細(xì)粒度預(yù)處理的方法運(yùn)行時(shí)間比除Spell以外的方法長。SpellS之所以快速,是因?yàn)樗谇熬Y樹和簡單循環(huán)進(jìn)行預(yù)過濾的過程中采用了固定的閾值0.5。通過引入更多分割符,日志會(huì)更長,因此更容易找到匹配項(xiàng),但也可能導(dǎo)致日志模板過于泛化。ML-Parser比Drain和DrainV2慢一些,這是可以預(yù)期的,因?yàn)檫@兩種方法具有相對(duì)較小的搜索空間,僅采用線性匹配,而且沒有細(xì)粒度的預(yù)處理過程。但是,本文認(rèn)為這是一個(gè)在解析質(zhì)量和解析速度之間的權(quán)衡。ML-Parser以較長的運(yùn)行時(shí)間為代價(jià),實(shí)現(xiàn)了更好的解析性能。

表5 ML-Parser與其他方法之間的運(yùn)行時(shí)間比較 單位:s

續(xù)表5

此外,由表1、表4、表5可以看出,對(duì)于兩個(gè)日志模板數(shù)和日志長度相當(dāng)?shù)臄?shù)據(jù)集,例如HDFS和Apache,方法的運(yùn)行時(shí)間與日志行數(shù)基本呈正相關(guān),這說明了在線日志解析方法對(duì)于讀取并解析單條日志的時(shí)間基本是恒定的。而對(duì)于日志條數(shù)與日志長度差別不大的數(shù)據(jù)集,比如Linux和Proxifier,方法用時(shí)的差異很小,這說明基于流式的日志解析方法都有針對(duì)日志模板比較的過濾方式,只會(huì)對(duì)其中少量的模板進(jìn)行比較。從HPC和Hadoop的結(jié)果來看,運(yùn)行時(shí)間與日志長度也基本呈正相關(guān),然而一般日志數(shù)據(jù)集在日志長度上的區(qū)別并不大。綜合以上三個(gè)因素及實(shí)驗(yàn)結(jié)果,可以分析得出三個(gè)因素對(duì)于運(yùn)行時(shí)間的影響從大到小分別為日志數(shù)量、日志長度和模板個(gè)數(shù)。

3.3 詳細(xì)分析

在兩個(gè)日志數(shù)據(jù)集Hadoop和Spark上進(jìn)行詳細(xì)分析,結(jié)果如圖6所示。ML-Parser在兩個(gè)日志中都實(shí)現(xiàn)了較低的長度損失,這是通過引入細(xì)粒度的預(yù)處理可以預(yù)見的結(jié)果。當(dāng)日志更大且更復(fù)雜時(shí),長度損失的差異更加明顯。就質(zhì)量損失而言,在Hadoop數(shù)據(jù)集上達(dá)到與Drain幾乎相同的質(zhì)量損失,而在Spark中具有較低的質(zhì)量損失。這顯示了線性合并條件的有效性,它拒絕了日志模板的過度泛化。

圖6 ML-Parser與其他方法的詳細(xì)比較

表6顯示了ML-Parser中每個(gè)步驟返回的日志模板的數(shù)量以及占原始日志的比例。在第一層中,日志模板的數(shù)量減少了99%以上。線性合并約束拒絕了基于前綴樹的將近一半的日志模板的合并,并且耗時(shí)的LCS比較涉及的日志模板數(shù)不足原始日志數(shù)的0.2%。

表6 ML-Parser每個(gè)步驟返回的模板個(gè)數(shù)與比例

4 結(jié) 語

本文提出了一種新的在線日志解析方法ML-Parser,該方法可以以流式方式工作。本文設(shè)計(jì)并構(gòu)建了兩層框架來存儲(chǔ)與處理日志模板;使用具有最大深度的前綴樹和具有線性合并約束條件的線性相似性搜索來加快LCS比較過程;通過引入細(xì)粒度的預(yù)處理,識(shí)別出了更多的變量并生成了更少的日志模板。本文還根據(jù)實(shí)驗(yàn)給出了詳細(xì)的評(píng)估結(jié)果,展現(xiàn)了ML-Parser在日志解析任務(wù)上的質(zhì)量和性能。

猜你喜歡
相似性度量預(yù)處理
非水溶劑預(yù)處理木質(zhì)纖維原料研究進(jìn)展
不同預(yù)處理對(duì)鐵皮石斛熱風(fēng)干燥特性及品質(zhì)的影響
鮑文慧《度量空間之一》
手術(shù)器械預(yù)處理在手術(shù)室的應(yīng)用
污泥預(yù)處理-厭氧消化體系的能源經(jīng)濟(jì)性評(píng)價(jià)
不欣賞自己的人,難以快樂
突出知識(shí)本質(zhì) 關(guān)注知識(shí)結(jié)構(gòu)提升思維能力
三參數(shù)射影平坦芬斯勒度量的構(gòu)造
12個(gè)毫無違和感的奇妙動(dòng)物組合
基于隱喻相似性研究[血]的慣用句
淮北市| 民丰县| 翼城县| 木兰县| 鹤壁市| 平定县| 浦北县| 和硕县| 扬中市| 梁河县| 阿荣旗| 始兴县| 平安县| 乐安县| 得荣县| 镇远县| 名山县| 邵阳市| 昌邑市| 德阳市| 类乌齐县| 盐亭县| 青田县| 五寨县| 铜川市| 兴宁市| 民县| 历史| 北流市| 孝义市| 海原县| 开江县| 沁源县| 舞钢市| 哈巴河县| 宝山区| 梧州市| 祥云县| 左贡县| 天水市| 塔城市|