祝 蓓,李 靜,方曉蓉,王 亮
1(南京航空航天大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,南京 211106)
2(國網(wǎng)上海市電力公司信息通信公司,上海 200000)E-mail:zhubei99@163.com
系統(tǒng)日志記錄了系統(tǒng)的運(yùn)行信息,作為系統(tǒng)在線監(jiān)控和異常檢測的重要數(shù)據(jù),可幫助管理者調(diào)試系統(tǒng)故障及異常分析,進(jìn)一步保證系統(tǒng)的安全性[1].日志具有海量的特點(diǎn),隨著大數(shù)據(jù)、云計(jì)算等技術(shù)的發(fā)展,系統(tǒng)規(guī)模不斷增大,導(dǎo)致日志量爆炸式增長,每小時(shí)可產(chǎn)生大量數(shù)據(jù),例如商業(yè)云應(yīng)用程序每小時(shí)產(chǎn)生大約10GB的日志[2].此外,日志是非結(jié)構(gòu)化的,是由開發(fā)人員編寫的輸出語句生成的一行文本,它們的格式和語義在不同系統(tǒng)之間存在很大區(qū)別.為了提高基于海量非結(jié)構(gòu)化日志異常檢測方法的效率,第一步也是最重要的一步就是將非結(jié)構(gòu)化日志自動解析為結(jié)構(gòu)化數(shù)據(jù),日志解析技術(shù)成為異常檢測領(lǐng)域的研究熱點(diǎn).
日志解析方法可分為離線方法[3-12]和在線方法[13,14].離線方法是脫機(jī)解析日志,需收集到系統(tǒng)在一個時(shí)間段內(nèi)的日志,并加載到內(nèi)存中訓(xùn)練解析模型,再利用模型解析日志.范驚[3]等人提出一種結(jié)合系統(tǒng)源代碼解析日志的方法,但是現(xiàn)實(shí)中大部分系統(tǒng)的源代碼并不是公開的,這種方法有很大局限性.程世文[4]等人提出利用正則表達(dá)式識別日志模板的方法.這類方法需要人工根據(jù)應(yīng)用程序源代碼的輸出語句創(chuàng)建和更正新正則表達(dá)式,鑒于日志輸出語句的數(shù)量及其更新的快節(jié)奏,手動創(chuàng)建和更新正則表達(dá)式將是一項(xiàng)繁瑣且容易出錯的任務(wù)[13].Vaarandi提出了第一個基于聚類的自動日志解析方法SLCT[5],將具有相同單詞集合且其出現(xiàn)頻率高于設(shè)定閾值的日志視為同一類.但是當(dāng)SLCT分割較大的數(shù)據(jù)集設(shè)置較低的閾值可能導(dǎo)致過度擬合,獲得的日志模板過于具體.Makanju等人在2011年提出IPLoM[6],該方法屬于分層聚類算法,分別通過消息長度、令牌位置和映射關(guān)系迭代地聚類日志,與SLCT不同,IPLoM不需要閾值,但對類別劃分提供了細(xì)粒度控制.2015年,Vaarandi R等人改進(jìn)SLCT方法,提出LogCluster[7],該算法允許一條日志模板內(nèi)的參數(shù)長度可變,有效避免解析結(jié)果擬合過度.崔元[8]等人提出了一種基于DBSCAN聚類的網(wǎng)絡(luò)日志模板提取方法,該算法需要確定單詞之間的密度、距離、半徑以及最少數(shù)點(diǎn)的值4個參數(shù).鐘雅[9]等人利用選取日志中具有代表性的簽名組成系統(tǒng)事件模板.王衛(wèi)華[10]等人利用凝聚層次聚類算法挖掘相日志模板.孫名松[11]等人采用密度聚類算法聚類日志.離線方法一直是學(xué)者們的研究熱點(diǎn),但隨著系統(tǒng)日志量爆炸式增長以及異常檢測要求的提高,采用離線方法解析日志存在局限性.一是由于離線方法是脫機(jī)解析日志,系統(tǒng)管理者無法及時(shí)發(fā)現(xiàn)系統(tǒng)異常行為.二是離線方法需將日志加載到內(nèi)存中訓(xùn)練,如果在訓(xùn)練后添加了新的日志類型就必須再次訓(xùn)練解析模型[14].因此,在線方法成為了新的研究方向.與離線方法不同的是,在線方法可以實(shí)時(shí)解析新生成日志,系統(tǒng)管理者能夠及時(shí)發(fā)現(xiàn)并處理系統(tǒng)異常.Du等人在2016年提出的Spell[13]基于最長公共子序在線聚類日志,其優(yōu)勢在于前綴樹和子序列匹配能夠提高搜索效率,其不足之處在于僅基于最長公共子序容易導(dǎo)致聚類不足.He等人在2017年提出的Drain[14]使用深度固定樹聚類日志,樹的第一層是根節(jié)點(diǎn),第二層是日志長度相同的日志分組,接下來的每層依次儲存日志內(nèi)容.當(dāng)前在線日志解析方法存在兩個缺點(diǎn).一是現(xiàn)有在線方法在準(zhǔn)確性和效率方面都有改進(jìn)空間.二是在反復(fù)試驗(yàn)之后,需要針對每個要解析的日志微調(diào)其參數(shù),例如固定樹深度,這使得這種方法既不可擴(kuò)展,也不高效[15].
針對現(xiàn)有的解析方法不能實(shí)時(shí)解析日志和解析不同系統(tǒng)日志參數(shù)不通用導(dǎo)致的解析效率低,準(zhǔn)確度差等問題.本文提出準(zhǔn)確且高效的在線日志解析方法LSC-TGT.本方法首先將日志按照長度分類,再計(jì)算日志字符串相似度,基于相似度對日志二次聚類,最后使用模板生成樹提取日志模板.本方法不需要分析源代碼和領(lǐng)域?qū)<业膮⑴c,對于每一條新生成的原始日志都能夠自動解析并快速提取模板.
R:i-j的路徑集合,路徑r=1,2,…,|R|,考慮到南沙港水上“巴士”及拖車運(yùn)輸與深圳港水上“巴士”有競爭關(guān)系,故主要路徑如下:
本文的貢獻(xiàn)主要有:
1)提出一種在線日志解析方法LSC-TGT,它能夠高效而準(zhǔn)確地從非結(jié)構(gòu)化日志中提取日志模板,為系統(tǒng)管理者提供簡潔直觀的信息和干凈規(guī)范的結(jié)構(gòu)化數(shù)據(jù),方便數(shù)據(jù)分析師對日志進(jìn)行更高級分析和處理.
2)提出日志字符串的概念,并計(jì)算日志字符串相似度,基于相似度對長度相同的系統(tǒng)日志在線聚類,減少日志模板提取時(shí)無效的比較步驟,提高LSC-TGT的日志解析效率.
3)提出了基于模板生成樹的模板提取方法.利用生成樹提取、更新模板,提高LSC-TGT的準(zhǔn)確度.
4)通過在5個真實(shí)數(shù)據(jù)集上與3個現(xiàn)有的日志解析方法的對比實(shí)驗(yàn),驗(yàn)證本文所提方法在日志解析效率和準(zhǔn)確度上都有明顯提升.
為了解決上述問題,我們引入一個新概念——日志字符串,它是由Tm中每個tm的首字母組成的字符串.與日志長度相比,日志字符串是對日志更具代表性的描述方式.如圖4(c)所示,雖然每條日志的長度都相同,但是其日志字符串都是唯一的,計(jì)算其相似度,基于相似度對每個GL中的日志再次聚類,能得到模板相似度更高的日志組,用Gs表示.
本文后續(xù)章節(jié)安排如下:第二節(jié)介紹了日志解析方法;第三節(jié)介紹基于字符串聚類和模板生成樹的在線日志解析方法LSC-TGT;第四節(jié)主要通過4組實(shí)驗(yàn)驗(yàn)證LSC-TGT的優(yōu)勢和有效性;第五節(jié)對本文方法進(jìn)行總結(jié)及進(jìn)一步的研究方向.
日志解析是通過高效且準(zhǔn)確的方法將非結(jié)構(gòu)化的日志轉(zhuǎn)化為結(jié)構(gòu)化的形式,可從海量的系統(tǒng)日志中獲取隱藏的信息,以指導(dǎo)后續(xù)操作.在日志解析過程中,每一條原始日志消息可以表示為:
m={mh,mc}
其中mh表示日志頭,mc表示日志內(nèi)容,如圖1所示.日志頭包括時(shí)間戳,定位,日志類型等瑣碎的信息,日志解析僅需要對mc進(jìn)行處理.因?yàn)閙h所包含的信息屬于結(jié)構(gòu)化的消息類型,非常直觀易于系統(tǒng)管理者理解,只需簡單的正則表達(dá)式就可以實(shí)現(xiàn)日志頭的識別和匹配.
我國歷史悠久,是世界四大文明古國之一,是東方文化的代表,如孔孟之道、孫子兵法、造紙術(shù)……中國文化有數(shù)千年的思想與經(jīng)驗(yàn),動漫專業(yè)學(xué)生應(yīng)當(dāng)學(xué)習(xí)中國古代文化,學(xué)習(xí)民族文化精神,弘揚(yáng)民族文化傳統(tǒng)。在學(xué)習(xí)我國古文明的同時(shí),吸收西方經(jīng)典文化,堅(jiān)持中學(xué)與西學(xué)并重,吸取東、西方文化精髓,拓寬學(xué)生見識,熔鑄調(diào)和創(chuàng)造出新文化。
全省區(qū)域中以瑞麗、紅河、永德、云縣、石屏、永平、墨江、耿馬、盈江、曲靖、保山、富民、東川、施甸、臨滄等地的多樣性較大。
圖1 系統(tǒng)日志示例
日志解析的過程就是在日志內(nèi)容中提取日志模板.一條日志由日志模板和參數(shù)值兩部分組成,舉個例子,一個日志輸出源代碼printf(“connected to%s successfully.”,ip),包括一個固定部分,connected to%s successfully;一個可變部分,組件 ip地址.日志解析的目標(biāo)就是抽取原始系統(tǒng)日志中的固定部分即日志模板 connected to * successfully,其中占位符*代表可變的參數(shù)部分.
圖2展示了在真實(shí)數(shù)據(jù)集BGL[12]上的日志解析過程.抽取原始日志數(shù)據(jù)中固定的部分,就得到了日志模板.
圖2 日志解析示例
LSC-TGT是基于字符串聚類和匹配樹的日志解析方法.聚類算法通常作為數(shù)據(jù)挖掘的預(yù)處理步驟,在對數(shù)據(jù)類別不了解的情況下,將數(shù)據(jù)條目分成多個類別,每一個類別稱之為簇.聚類旨在發(fā)現(xiàn)密切相關(guān)的數(shù)據(jù)條目,使得與屬于不同簇中的數(shù)據(jù)條目相比,同一簇中的數(shù)據(jù)條目盡可能相似.結(jié)合原始日志數(shù)據(jù)無類別標(biāo)記的特點(diǎn),聚類算法是解析日志的合理方法,它可以有效降低方法復(fù)雜度,提高解析效率.
自2000年以來,經(jīng)濟(jì)型雙相不銹鋼已成為雙相不銹鋼的發(fā)展方向.經(jīng)濟(jì)型雙相不銹鋼主要通過N,Mn代替Ni,Mo來降低成本,其中2101經(jīng)濟(jì)型雙相不銹鋼是典型代表[4].但已有的經(jīng)濟(jì)型雙相不銹鋼熱加工難度大、薄板延伸率低,基于此,一種具有相變誘導(dǎo)塑性(transformation induced plasticity,TRIP)效應(yīng)[5]的經(jīng)濟(jì)型雙相不銹鋼被開發(fā)出來,其熱加工性能優(yōu)于已有經(jīng)濟(jì)型雙相不銹鋼.本工作的研究對象Fe-21Cr-3Ni-1Mo-N便是上海寶鋼公司設(shè)計(jì)并開發(fā)的具有TRIP效應(yīng)的經(jīng)濟(jì)型雙相不銹鋼.
本文方法的基本思想是:首先基于日志長度將日志分類,接著獲取日志字符串并計(jì)算相似度,基于相似度對長度相同的日志聚類,實(shí)現(xiàn)日志類型的進(jìn)一步細(xì)分,最后基于前綴樹的思想構(gòu)建模板生成樹,完成日志模板提取和模板更新.整體框架如圖3所示.
目前,我國中小型企業(yè)的內(nèi)部審計(jì)基本上是賬目基礎(chǔ)上的手工測試,主要采用詳細(xì)審計(jì)或依賴于審計(jì)人員個人經(jīng)驗(yàn)判斷的抽樣審計(jì),審計(jì)內(nèi)容較少運(yùn)用統(tǒng)計(jì)抽樣和計(jì)算機(jī)輔助審計(jì)軟件,使得審計(jì)工作的風(fēng)險(xiǎn)無法量化。
圖3 LSC-TGT框架圖
日志解析是在日志內(nèi)容中提取模板,首先利用正則表達(dá)式識別日志頭mh中與之匹配的變量信息并刪除獲得日志內(nèi)容mc.此步驟中的正則表達(dá)式非常簡單,因?yàn)樗恍枧淦コ隼鐣r(shí)間戳、IP地址等簡單的標(biāo)記,最多只需兩個正則表達(dá)式就可以識別數(shù)據(jù)集中的所有日志頭.接著利用預(yù)先定義的分隔符對每一條原始日志內(nèi)容mc進(jìn)行劃分,空格分隔符通常能夠解決大部分系統(tǒng)日志的分割問題.分隔符將日志劃分成單詞的序列Tm:
Tm=[tm1,tm2,…,tmL]
每個單詞用tmi表示.Tm的大小稱之為日志的長度,用L表示.最后,將Tm分到不同組中,每個組包含所有擁有相同L的Tm,用GL表示這樣的組.實(shí)際上,在長度相同的日志組中也存在模板不同的日志,如圖4(a),圖4(b)所示,圖中數(shù)據(jù)來自BGL日志的日志內(nèi)容部分,日志集中每條日志長度都為4,但是日志的模板都不相同.所以如果僅僅在此步驟后對日志進(jìn)行模板提取會導(dǎo)致更高的復(fù)雜度.
“真是冤死我了。紅頭巾,本是我和老刀結(jié)婚時(shí),團(tuán)長老婆送的。開始是恨它不肯戴,后來是不舍得用沒戴。去照全家合影時(shí)用了一次,所以只洗一水,壓在箱子底。你來了,想著你遲早要有一條頭巾用,不如乘早送給你。我心想,我的日子過得還算幸福,你用了我這紅頭巾,日子也會幸福。哪知今天就這么趕巧,真是人算不如天算?!?/p>
圖4(a) 日志長度為4的日志集
圖4(b) 圖4(a)中日志對應(yīng)模板集
數(shù)學(xué)是一門運(yùn)動、變化著的科學(xué),其很多知識點(diǎn)都是發(fā)現(xiàn)一種運(yùn)動的數(shù)學(xué)規(guī)律,或者是用運(yùn)動規(guī)律來表示數(shù)字之間的關(guān)系,這也是對函數(shù)最簡單、直接的解釋。在傳統(tǒng)教學(xué)中,教師很難處理和展現(xiàn)數(shù)學(xué)的運(yùn)動性,只能簡單地給學(xué)生看靜態(tài)的數(shù)學(xué),導(dǎo)致在解決動態(tài)問題時(shí),非常吃力。信息技術(shù)的出現(xiàn),突破了這一教學(xué)方法所運(yùn)用技術(shù)的瓶頸,產(chǎn)生了新的教學(xué)方案。如學(xué)習(xí)“動點(diǎn)”的軌跡,原本教師只能在黑板上“笨拙”地畫出幾個點(diǎn),學(xué)生勉強(qiáng)明白?,F(xiàn)在,教師可以利用信息技術(shù)來處理數(shù)字信息,整合為圖像,畫出更多的軌跡變化,學(xué)生既能看到運(yùn)動的結(jié)果,也能看到運(yùn)動的過程。如此直觀的演示,對學(xué)生研究動態(tài)運(yùn)動方程非常有幫助。
圖4(c) 圖4(a)中日志對應(yīng)日志字符串集
3.2.1 獲得日志字符串
在Tm中每個tmi代表一個單詞,為了避免字符串提取算法過高的時(shí)間復(fù)雜度,我們提取每個tm的第一個字符作為其代表字符.為避免日志字符串種類數(shù)量爆炸,當(dāng)字符為數(shù)字或標(biāo)識符時(shí),則用“*”將之替代.最后將所有字符和“*”按所屬tmi在Tm中的位置組成一個字符串,稱之為該原始日志的日志字符串,用Sm表示.具體算法如算法1所示.
算法 1 .一種獲取日志字符串的算法
輸入:GL,長度相同日志的Tm的集合
在問題MPM中,式(1)、式(5)和式(6)為P-M模型的非線性擴(kuò)散方程問題;式(2)、式(3)和式(4)為達(dá)西滲流問題.
選取高硫鋁土礦試樣,分別考察了鹽酸(1+1)和水對試樣的溶樣效果,結(jié)果見表1。由表1可見,用鹽酸(1+1)溶樣的結(jié)果比用水的均高;隨著鹽酸(1+1)用量的增加,硫酸根的測定結(jié)果隨之增大后保持穩(wěn)定;當(dāng)鹽酸(1+1)用量為40~60mL時(shí),濾液的顏色最深,表明被硫酸根置換出的鉻酸根濃度最高,說明此時(shí)試樣中硫酸根可基本被提取完全。實(shí)驗(yàn)選擇40mL鹽酸(1+1)溶解試樣。
1.Sm←{ }
2. forGL中的每個Tm
3. forTm中的每個tmi
4. 確定第一個字符ui
5. ifui包含數(shù)字或標(biāo)識符 then
6.ui←′*′
14. for eachTminGs[1,n-1] do
1、灌溉渠道監(jiān)測。監(jiān)測結(jié)果顯示:江華水庫周邊為林地分布,溝渠分布較少,灌區(qū)的寧遠(yuǎn)縣內(nèi)耕地分布較多的地方溝渠分布較多,道縣、江永的耕地區(qū)有部分溝渠分布。由于擴(kuò)建后監(jiān)測采用的影像為2017年度9-11月,灌區(qū)的渠道建設(shè)工程到監(jiān)測時(shí)間還未全部完成,本監(jiān)測僅提取了影像上可明顯識別的灌溉渠道進(jìn)行分析。根據(jù)灌區(qū)規(guī)劃數(shù)據(jù)統(tǒng)計(jì),工程將新建干渠以上渠道240公里、支渠170公里,擴(kuò)建后的灌區(qū)將成為湖南省最大的灌區(qū),擴(kuò)建最大的效益就是灌溉效益。
8.Sm←Sm∪{ui}
企業(yè)保障安全生產(chǎn)的過程中,不僅要明確危險(xiǎn)源識別范圍和具體內(nèi)容,還應(yīng)當(dāng)準(zhǔn)確識別其危險(xiǎn)因素,這就要求科學(xué)采用危險(xiǎn)源識別方法來辨別,以強(qiáng)化危險(xiǎn)源管理和防范。
9. end for
10. end for
廣東盆距蘭發(fā)現(xiàn)于貴州榕江縣小丹江邊喀斯特樹林中,生境海拔766 m,生于潮濕朽木上,伴生種有馬尾松、茅栗、豆葉九里香等。僅發(fā)現(xiàn)5個相對獨(dú)立的植株,2株有花。2013年10月21日采集,憑證標(biāo)本:HXQ13102105HT,引種保存于貴陽藥用植物園。
3.2.2 基于相似度在線聚類
在每個GL中創(chuàng)建一個日志字符串集用于存儲字符串的種類,表示為S.將新生成日志的字符串與S中的字符串計(jì)算相似度.若存在相似度大于相似度閾值st的字符串,則將日志加入該字符串對應(yīng)的日志組Gs,若不存在則新建日志組Gs并更新S.相似度計(jì)算公式如公式(1)所示:
(1)
其中Sm1和Sm2代表兩條日志字符串,len(|Sm1|,|Sm2|)代表兩條日志字符串的長度,Ⅱf(x,y)定義如公式(2)所示:
(2)
x,y表示兩個字符.當(dāng)sim(Sm1,Sm2)大于st時(shí),表示Sm1和Sm2日志字符串相似.例如在圖2所示的日志中,因?yàn)閘og1,log2日志字符串都為icpec,log3的日志字符串為*dae.所以log1,log2被歸為一類,log3為另一類.我們用Gs表示該步驟的結(jié)果,表示擁有相似日志字符串的所有日志Tm的組.經(jīng)過此步驟后每個組內(nèi)日志數(shù)量減少,日志擁有同一模板的概率提高.在日志相似度高的Gs內(nèi)進(jìn)行后續(xù)模板提取可大大提高算法效率.
Trie樹又稱前綴樹或字典樹,是一種有序樹,其中的結(jié)點(diǎn)通常保存字符串.Trie樹是一種在字符串查找,前綴匹配等方面應(yīng)用廣泛的算法,每次匹配時(shí)只與被查詢的字符串長度有關(guān),時(shí)間復(fù)雜度只有O(1).標(biāo)準(zhǔn)Trie樹的結(jié)構(gòu):所有含有公共前綴的字符串將掛在Trie樹中同一個結(jié)點(diǎn)下,簡明的存儲了存在于字符串中的所有公共前綴.
轉(zhuǎn)染48 h后,MTT檢測各組SHG-44細(xì)胞增殖水平,結(jié)果顯示,miR-543 mimic組與mimic NC組相比細(xì)胞增殖水平明顯降低(P<0.01),miR-543 inhibitor組與inhibitor NC組相比細(xì)胞增殖水平明顯升高(P<0.01),見圖2;由此可見miR-543過表達(dá)可抑制SHG-44細(xì)胞增殖,抑制miR-543的表達(dá)可促進(jìn)SHG-44細(xì)胞增殖。
我們基于Trie樹的思想構(gòu)建每個Gs的模板生成樹,將新生成的日志作為查詢項(xiàng)與樹中模板匹配共同的節(jié)點(diǎn).Gs內(nèi)日志相似度高,模板種類少,模板生成樹空間復(fù)雜度低,有效提高了從日志中提取模板的效率和準(zhǔn)確性.
對于一條日志mc,經(jīng)上述步驟后已經(jīng)被分割成序列Tm,遍歷序列Tm,將其中的tm依次插入樹結(jié)構(gòu).將每條分支最后的節(jié)點(diǎn)標(biāo)記為特殊字符‘$’,那么從根節(jié)點(diǎn)到任意一個‘$’所經(jīng)過的路徑表示一條日志mc的匹配路徑,樹深度為L+1,L為日志長度.接下來生成的一條日志Tm中的tm作為L個詢問采用先深搜索遍歷每一條路徑.從根節(jié)點(diǎn)P開始搜索,取得要查找tmi的所在節(jié)點(diǎn),若不存在匹配節(jié)點(diǎn),則將該Tm插入樹結(jié)構(gòu)作為新分支;若存在匹配節(jié)點(diǎn),根據(jù)該節(jié)點(diǎn)選擇對應(yīng)的子樹并轉(zhuǎn)到該子樹繼續(xù)進(jìn)行搜索.設(shè)tmi與第i個節(jié)點(diǎn)Q存儲的tm相同,則P=Q,tmi變?yōu)閠m(i+1)繼續(xù)搜索.若tm(i+1)與第i+1個節(jié)點(diǎn)匹配失敗,那么記錄匹配失敗的節(jié)點(diǎn),更新根節(jié)點(diǎn)P為第i+2個節(jié)點(diǎn),tm(i+2)繼續(xù)匹配第i+2個節(jié)點(diǎn),直到完成L個詢問,對于一條日志的搜索結(jié)束.提取匹配成功節(jié)點(diǎn)存儲的tm,匹配失敗節(jié)點(diǎn)則返回通配符‘*’,以此獲得日志模板.模板生成過程如圖5所示.判斷模板是否生成成功,我們引入一個界定值X,如公式(3)所示:
圖5 日志模板生成過程
(3)
其中∑unmatch(tmi)表示匹配失敗的節(jié)點(diǎn)數(shù)量,L為日志長度,σ為該搜索路徑上通配符‘*’的數(shù)量.
當(dāng)X小于或等于閾值λ,表示模板生成成功,更新模板生成樹,將未匹配節(jié)點(diǎn)更新為通配符‘*’.當(dāng)X超過閾值λ,那么將該條日志作為新的分支插入模板生成樹.圖5展示了查詢?nèi)罩綯m:[connected ,to,7342,exactly]與模板生成樹匹配成功獲得模板并更新模板生成樹的過程.為了防止樹深度過大,定義了最大樹深度參數(shù)MaxDepth,如果葉子節(jié)點(diǎn)數(shù)量已經(jīng)達(dá)到MaxDepth,Tm所有未遍歷tmi的將不再插入樹,剩余tmi都將用通配符‘*’替代.具體日志模板提取算法如算法2所示.
算法 2.一個日志模板提取算法
輸入:Gs,字符串相同日志的Tm的集合
輸出:E,每條日志mc的模板
12. end if
2.λ
3. for eachTminGs[1,n-1] do
4.P=ROOT
5. fori=1 to |Tm|do
6. ifi 7. ifP→child(tmi)=NULLthen 8.P→addChild(tmi,newNode()) 輸出:Sm,每條日志的日志字符串 9. end if 10.P=P→child(tmi) 11.P→markEndPoint() 1.MaxDepth 13. end for 7. end if 15.P=ROOT 16. forj=1 to |Tm| do 17. ifP→child(tmi)=tmjthen 18.e←tmj 19. else 20.e←‘*’ 21.E=Ejoine 22. end if 23. calculateX 24. ifX>λthen 25. repeat line:5-14 26. else 29. end for 28. end if 27. returnE 30. end for 31. end for 為了驗(yàn)證LSC-TGT方法的有效性,分別在5個真實(shí)日志數(shù)據(jù)集上進(jìn)行解析效率和準(zhǔn)確性的實(shí)驗(yàn),為了進(jìn)一步驗(yàn)證LSC-TGT方法的效率,分別在不同大小和類型的20個數(shù)據(jù)集上進(jìn)行解析效率實(shí)驗(yàn),并于現(xiàn)有的解析方法比較.最后還驗(yàn)證了本文聚類算法的優(yōu)越性以及本文方法在實(shí)際異常檢測應(yīng)用中的效果. 本實(shí)驗(yàn)從文獻(xiàn)[16]提供數(shù)據(jù)集中選取了5個真實(shí)的日志數(shù)據(jù)集.數(shù)據(jù)集來自4個領(lǐng)域,分別是分布式系統(tǒng)(HDFS),超級計(jì)算機(jī)(BGL,HPC),手機(jī)系統(tǒng)(Android),操作系統(tǒng)(Linux).其中HDFS是從亞馬遜EC2平臺收集的日志數(shù)據(jù)集.BGL是從BlueGene/L超級計(jì)算機(jī)收集的日志數(shù)據(jù)集.HPC是從高性能計(jì)算集群收集的日志數(shù)據(jù)集.安卓是由谷歌開發(fā)的移動操作系統(tǒng),文獻(xiàn)[16]提供了一個安卓日志文件,該日志文件是作者在實(shí)驗(yàn)室中測試儀器化的安卓智能手機(jī)生成的.Linux包含Linux服務(wù)器260多天的運(yùn)行日志.5個數(shù)據(jù)集總結(jié)如表1所示. 表1 系統(tǒng)日志數(shù)據(jù)集 由2個重要指標(biāo)評定一個日志解析方法是否是優(yōu)秀的. 1)效率:測量一個方法基于上述數(shù)據(jù)集從接收系統(tǒng)日志到獲得所有日志模板所需要的時(shí)間.時(shí)間越短,方法的效率越高. 2)準(zhǔn)確性:評價(jià)一個日志解析方法獲得正確日志模板的能力.每個日志是否對應(yīng)正確的組,其中每個組是否對應(yīng)正確的模板.我們采用了之前研究中使用的指標(biāo)[16,17],F(xiàn)-measure: (4) 其中Precision和Recall分別定義如公式(5)、公式(6)所示: (5) (6) 其中TP表示擁有相同模板的日志被分到同一個組,F(xiàn)P表示擁有不同模板的日志被分到同一個組.FN表示擁有相同模板的日志被分到不同組. LSC-TGT參數(shù)都是憑經(jīng)驗(yàn)設(shè)置,但相似度閾值st除外.在設(shè)置st時(shí),通過更改其值并在HDFS數(shù)據(jù)集上運(yùn)行LSC-TGT測試,從而獲得使LSC-TGT解析效果達(dá)到最優(yōu)的值.根據(jù)表2所示,當(dāng)st為0.4時(shí),解析準(zhǔn)確性最高. 為了對比基于以上數(shù)據(jù)集的日志解析結(jié)果,我們選擇了3個現(xiàn)存的方法與本文方法比較.1個離線方法IPLoM[6],2個在線日志解析方法Spell[13]、Drain[14].IPLoM有三個參數(shù):集群良好閾值、上限距離、下限距離、創(chuàng)建新分區(qū)的最小支持.Spell有一個參數(shù):消息類型閾值.Drain有兩個參數(shù):相似度閾值、所有葉節(jié)點(diǎn)的深度.在所有實(shí)驗(yàn)中,我們使用[16]給定的每個日志解析方法在解析表1各個數(shù)據(jù)集時(shí)使用的最優(yōu)參數(shù). 對于一個日志解析方法解析日志的效率,方法本身的時(shí)間復(fù)雜度是重要影響因素.Spell計(jì)算的是每兩條原始日志的最長公共子序,時(shí)間復(fù)雜度為O(L1·L2).Drain的時(shí)間復(fù)雜度為O((d+gL)N),其中d表示解析樹的深度,g表示葉節(jié)點(diǎn)中候選日志組的數(shù)量,L表示日志消息長度,N表示系統(tǒng)日志的數(shù)量[14].Drain在大型數(shù)據(jù)集上或者生成的日志模板數(shù)量過多都會導(dǎo)致較低的效率.IPLoM復(fù)雜度與Drain相似,但I(xiàn)PLoM是離線方法,需要將所有數(shù)據(jù)加載到內(nèi)存中,這一步驟導(dǎo)致IPLoM在解析較大數(shù)據(jù)集時(shí)將十分耗時(shí),如表2中HDFS數(shù)據(jù)集含有2.55GB日志數(shù)據(jù),IPLoM解析時(shí)間遠(yuǎn)遠(yuǎn)高于其他解析方法.本文提出的方法在結(jié)果在線聚類步驟后,同一組中的日志模板數(shù)量大大減少,比較次數(shù)隨之減少.每次比較的時(shí)間復(fù)雜度是O(L1+L2),L1,L2分別表示被比較對象的長度,相較與其他方法的O(L1·L2),大大提高了解析效率.從圖6中可以看出,本文方法的效率更勝于其他方法,效率至少提高了22%,在HPC數(shù)據(jù)集上更是提高了68.8%. 圖6 日志解析方法的解析效率 隨著系統(tǒng)的擴(kuò)大和更新,系統(tǒng)日志越來越龐大,日志種類越來越多.一個健壯的日志解析方法需要有能力處理不同大小,不同樣式的數(shù)據(jù)集.我們從真實(shí)數(shù)據(jù)集中隨機(jī)抽取數(shù)據(jù),組成20個各種大小的數(shù)據(jù)集用于實(shí)驗(yàn),結(jié)果如圖7所示. 從圖7中可以看到,在Linux_21.6k數(shù)據(jù)集上LSC-TGT低于IPLoM算法,離線算法在小數(shù)據(jù)集上有一定優(yōu)勢,但在實(shí)際操作中解析過程十分消耗內(nèi)存,對硬件性能要求較高,局限了算法使用范圍.在大數(shù)據(jù)集HDFS_2m、BGL_2m等上,LSC-TGT解析速度都優(yōu)于其他解析方法.總體上看,LSC-TGT更穩(wěn)定,在不同大小不同種類的數(shù)據(jù)集上都能保持非??斓慕馕鏊俣? 圖7 日志解析方法在不同大小數(shù)據(jù)集上的運(yùn)行時(shí)間 由于缺少日志對應(yīng)的真實(shí)模板,我們從表1各數(shù)據(jù)集分別隨機(jī)選擇了2000條日志,并手動標(biāo)記其真實(shí)的日志模板用于實(shí)驗(yàn).各個日志解析方法的準(zhǔn)確性如表3所示. 表3 日志解析方法的解析準(zhǔn)確性 注:表中加粗?jǐn)?shù)字為準(zhǔn)確性最高結(jié)果,數(shù)字越大準(zhǔn)確性越高 根據(jù)表3可知,LSC-TGT在5個數(shù)據(jù)集上都獲得了最高的準(zhǔn)確性.離線日志解析方法IPLoM在高效率的數(shù)據(jù)集上不能同時(shí)保證相符的準(zhǔn)確性.Spell是基于最長公共子序的解析方法,對比每條日志與現(xiàn)有模板的獲得最長公共子序作為日志模板,如果現(xiàn)有模板長度比實(shí)際模板小,可能導(dǎo)致匹配不足的情況,在日志長度較長的數(shù)據(jù)集上準(zhǔn)確性相對較低.Drain結(jié)合日志長度和前幾個字符串,也能確保較高準(zhǔn)確性.通過解析準(zhǔn)確度進(jìn)一步驗(yàn)證了LSC-TGT方法在不同數(shù)據(jù)集上的有效性. 4.5.1 聚類算法選擇 聚類問題歷經(jīng)長期的研究與發(fā)展,產(chǎn)生出一系列聚類算法,如劃分方法、層次聚類、基于密度等.基于劃分的方法,如K-Means算法,需要創(chuàng)建一個初始聚類簇?cái)?shù)k,日志數(shù)據(jù)龐大復(fù)雜且更新快,無法提前得知類別數(shù),因此基于劃分的方法不適用于在線日志解析.層次聚類方法不需要預(yù)先定義聚類數(shù),但是計(jì)算復(fù)雜度相對較高,通常為O(n2)[18],無法實(shí)現(xiàn)高效率解析.基于密度的聚類如DBSCAN 算法,需要定義兩個重要參數(shù):半徑eps和密度閾值MinPts,針對日志解析問題,不同系統(tǒng)日志差異性大,過多參數(shù)設(shè)置不利于方法擴(kuò)展.各個聚類算法都存在應(yīng)用限制,很少有算法能同時(shí)滿足在線日志聚類的要求.本文基于字符串聚類與傳統(tǒng)方法不同,不需要提前設(shè)置聚類數(shù);基于單個字符計(jì)算相似度,復(fù)雜度為O(k·n),其中k為類別數(shù),n為日志條目數(shù),k通常為常數(shù),復(fù)雜度可近似于O(n),復(fù)雜度相對較低;無需標(biāo)記數(shù)據(jù),無需訓(xùn)練模型,聚類邊界整齊,能夠?qū)崿F(xiàn)在線聚類,在在線日志解析問題上具有優(yōu)越性. 基于聚類思想的日志解析方法,最終聚類簇?cái)?shù)等于日志模板數(shù).為了證明字符串聚類可行性,從HDFS數(shù)據(jù)集挑選300條日志用于實(shí)驗(yàn).從圖8中可以看出,簇內(nèi)數(shù)據(jù)點(diǎn)密集,簇間邊界分明,一共識別4個聚類數(shù),分別正確對應(yīng)實(shí)際模板.即使“倒三角形”簇間相對距離較大,基于字符串相似度聚類仍可實(shí)現(xiàn)正確劃分,相應(yīng)日志能正確獲取其模板.由此說明將字符串聚類應(yīng)用于本文方法是可行的. 圖8 基于日志字符串聚類結(jié)果 4.5.2 字符串聚類效果 為了證明基于日志字符串相似度聚類方法的有效性,我們在HDFS數(shù)據(jù)集中隨機(jī)挑選了1000條原始日志,并手動標(biāo)記日志的真實(shí)模板,用唯一的數(shù)字分別表示不同的日志長度,日志字符串和日志模板,再基于日志長度、日志字符串劃分日志模板,如圖9和圖10所示.從圖9中可以看出,日志長度4對應(yīng)兩個日志模板3.0、4.0;日志長度6也對應(yīng)兩個日志模板7.0、7.5.而在圖10中,日志字符串3,4;7,7.5能區(qū)分日志模板3.0、4.0;7.0、7.5.由此可說明,長度相同的日志,模板可能不同.如果僅僅在長度相同的日志組中提取日志模板,會導(dǎo)致復(fù)雜度較高或者模板提取不充分的問題.而日志字符串能更加明確劃分出不同模板的日志,一個日志字符串對應(yīng)一個日志模板.利用日志字符串相似度聚類后的各組內(nèi)的日志相似度更高,可降低后續(xù)日志模板提取步驟的復(fù)雜度. 圖9 基于日志長度劃分日志模板 圖10 基于日志字符串劃分日志模板 一個好的日志解析方法不僅需要高效率和高準(zhǔn)確性,還需要能保證后續(xù)異常檢測任務(wù)有良好的性能.為了評估LSC-TGT在異常檢測任務(wù)的有效性,我們在HDFS數(shù)據(jù)集上與4.3節(jié)提到的3個方法對比實(shí)驗(yàn).HDFS數(shù)據(jù)集的原始日志消息記錄了575061個HDFS塊上的操作信息,共有29種日志模板.在這些區(qū)塊中,有16838個被標(biāo)記為異常.異常檢測包括日志解析和日志挖掘兩個步驟[14].在日志解析步驟中,將所有日志解析為結(jié)構(gòu)化的日志消息,每個結(jié)構(gòu)化的日志消息均包含相應(yīng)的HDFS塊id和日志模板.在日志挖掘步驟中,首先使用解析后的日志生成模板計(jì)數(shù)矩陣,其中每一行代表一個HDFS塊,每列代表一種日志模板,數(shù)字代表該模板的在對應(yīng)塊內(nèi)的計(jì)數(shù).然后,我們使用詞頻-逆向文本頻率(term frequency-inverse document frequency,TF-IDF)預(yù)處理模板計(jì)數(shù)矩陣.最后,將模板計(jì)數(shù)矩陣傳入主成分分析模型(principal components analysis,PCA),自動將塊標(biāo)記為正?;虍惓19].得到異常檢測結(jié)果如表4所示.從表中可以看出LSC-TGT不僅擁有最高解析準(zhǔn)確性,而且能成功檢測11270個塊異常,誤報(bào)也是最低.與其他方法相比,具有最優(yōu)的異常檢測效果. 表4 日志解析方法的異常檢測效果 在本文中,我們提出了一種最新的日志解析方法LSC-TGT.傳統(tǒng)方法都是離線日志解析方法,本文方法是能夠及時(shí)解析日志的在線方法.首先將日志按照長度分類,再獲取日志字符串,計(jì)算日志字符串相似度,基于相似度進(jìn)行二次聚類,最后使用模板生成樹提取模板.我們用Python實(shí)現(xiàn)了該方法,在五個真實(shí)日志數(shù)據(jù)集上與現(xiàn)有的解析方法進(jìn)行對比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果表明,本文方法的效率和準(zhǔn)確性都優(yōu)于目前最新的日志解析方法.另外我們將研究如何在在線自動解析的基礎(chǔ)上提取日志語義信息,進(jìn)一步提高基于日志異常檢測方法的效率和準(zhǔn)確性.4 實(shí)驗(yàn)與分析
4.1 數(shù)據(jù)集介紹
4.2 評價(jià)標(biāo)準(zhǔn)和參數(shù)設(shè)置
4.3 日志解析效率實(shí)驗(yàn)
4.4 日志解析準(zhǔn)確性實(shí)驗(yàn)
4.5 字符串聚類分析
4.6 實(shí)際異常檢測效果
5 結(jié) 論