999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

系統日志模板提取方法研究①

2019-10-18 06:41:26劉洪歧陳遠平馬建化
計算機系統應用 2019年10期
關鍵詞:文本方法

劉洪歧,陳遠平,馬建化

1(中國科學院 計算機網絡信息中心,北京 100190)2(中國科學院大學,北京 100190)

3(福建省龍巖煙草工業有限責任公司,龍巖 364021)

系統日志(syslog)是應用系統記錄的,蘊含著大量的信息,可以記錄系統已經發生的行為,并按照某種規范表達出來.Syslog可以用于系統異常的診斷、建立系統工作流程等,然而直接針對海量的非結構化日志進行分析計算是不可行,應對其做適當的處理,以加快后續的分析效率.現有研究工作證明,提取日志模板是十分有效的日志處理方法,很多日志分析的相關研究都是依賴于日志模板的.其相關概念最初是由許巍[1]在其有關于日志分析的文章中提到的,一條日志模板可以代表一類系統事件,一個系統產生的海量日志數據都是由少數的日志模板擴展出來的,日志模板的提取工作是進行其他日志分析工作的基礎,是十分重要且有研究意義的.日志記錄通常由常量和變量組成,也可稱為模板詞和參數詞,提取日志模板的工作就是提取其中的模板詞,構建模板.日志模板通常為程序中的print定義的語句,因此基于程序源碼解析的日志模板提取方法被廣泛的使用,該方法一般是通過構建程序的抽象語法樹AST,獲取日志輸出的相關語句來實現的.但對于大型系統,通常包含第三方軟件維護的日志,因此通過源碼解析的方式提取日志模板的適應性較差,且需要具有相關的領域知識[2],因此本文采用只針對于日志文件的日志模板提取方法.考慮到已有的實驗證明基于標簽識別樹的方法在準確度和可應用性上都明顯優于該領域其余兩種常見算法Statistical Templete Extraction (STE)[3]和LogSim-ilarity[4],因此本文選擇基于標簽識別樹的模板提取方法作為具體方法.該方法應用于實際數據中存在諸多難點:一是如何對自由形式文本的syslog[5,6]進行預處理,使其適合于后續基于標簽識別樹的模板提取算法;二是如何在現有模板提取算法的基礎上完善模板表達式生成方法,并提高模板匹配度.為解決上述問題,在對syslog本身特點和現有領域方法作充分研究后,本文采用了基于文本相似度的方法對原始日志進行預處理,并采用模板最大匹配的方法完善了模板表達式生成.實驗證明,本次采用的日志模板提取方法具有較高的準確度和模板匹配度.

1 系統日志結構分析

系統日志可以記錄下系統所產生的所有行為,并按照某種規范表達出來.系統日志在安全、信息統計、調試等領域有很重要的作用.系統日志可以分為操作系統日志、應用系統日志、安全系統日志等等,由于其服務類型和日志管理方法的不同,其日志文本形式及其語義語法也存在很大區別.以Java 應用系統日志為例,它有多種可選的日志操作插件,常見的有log4j、slf4j、logback 等,對于大型的 web 應用,不同功能的日志生成通常是由不同人員管理的,且通常會含有第三方插件管理的日志模塊,因此日志格式是不統一的.以使用log4j格式的某Web應用的系統日志為例,除開發人員代碼中指定的輸出內容外,還有多個可選的打印參數,如日志優先級、日志輸出時間、日志所屬時間線程等.表1展示了日志優先級為INFO的不同格式的系統日志.

表1 優先級為INFO的系統日志

由表1可見日志的文本形式是復雜多樣的,要覆蓋所有日志格式情況,提取出用戶關心的內容,需要提前了解日志結構,本文使用正則表達式的方法將日志內容從每條日志記錄中分割出來.提取表1中日志詳細內容的對應正則表達式集合如表2所示.

表2 提取日志內容正則表達式

日志中的詳細信息一般是由模板詞和參數詞兩部分組成的,模板詞內容不隨輸出時所處的運行狀態而改變,參數詞則會根據輸出時程序的運行狀態進行動態改變,日志模板可以表征一類系統事件.雖然日志數據是海量的,但對應的日志模板通常是很少的,提取日志模板,可以從海量的數據中歸類出少數的系統運行事件,能夠十分有效的縮減日志分析的維度,幫助用戶更好的理解系統行為.

2 基于Edit Distance的日志預處理

基于標簽識別樹的日志模板提取方法關注的重點是從每一消息類型中提取子類型,消息類型可以理解為一組消息特征相近的日志記錄,例如“某服務的狀態信息”,“數據的某種操作”等,雖然這些大的消息類型也可以表征一類日志事件,但以此來做日志模板的粒度過大,假設“服務”和“操作”的取值范圍很小時,將消息類型繼續細分為“具體服務的狀態”和“數據的具體操作”這些子類型,將可以幫助用戶更好的理解系統運行的過程.日志消息是由模板詞和參數詞構成的,考慮到海量日志消息的都是由多個消息類型分別改動少數的參數詞擴展而來的,因此屬于同一消息類型的眾多日志消息間的文本變動是很小的,應該具有很高的文本相似度,而屬于不同消息類型的日志記錄其之間的模板詞和參數詞都是大不相同的,因此彼此之間的文本相似度是很低的.只有先將海量日志消息進行初步的消息分類,才能通過基于標簽識別樹的方法進一步提取日志模板.本文采用基于Edit Distance (文本編輯距離)來衡量日志消息的相似度,該方法僅在字面層面上進行文本比較[7],其原理簡單且易于實現.

設SA、SB為兩個不同的字符串A、B,A、B之間的文本編輯距離即為由SA轉換到SB所需要的最少的編輯操作次數,可選的操作類型有刪除、插入、替換3種.假設計算得到的A、B的編輯距離為Dis(SA,SB),A與B的字符串長度分別為Len(SA)、Len(SB),則A、B之間的文本相似度

Sim(SA,SB)的值越大,則A,B間的文本相似度越高.

海量日志中包含的日志模板數是未知的,要對其進行基于Edit Distance的分類,需要提前確定參照日志.本文使用日志記錄中的第一行日志內容作為基準,計算其與剩余日志數據的文本相似度,將結果大于閾值的記錄從原數據集中歸類并分離出來,對剩余的日志數據集如此重復迭代計算,直到數據集為空為止.這樣就能把離線海量的日志數據高效的分類出來.完整的日志預處理流程如圖1所示,假設文本相似度閾值為τ.

3 基于標簽識別樹的日志模板提取

基于標簽識別樹的模板提取方法主要關注從每一消息類型中繼續細分出子模板,它的計算思想來源于關聯規則中的FP-Growth算法[8],該算法具有較高的計算效率,且支持數據的增量更新.該方法針對上一步日志預處理后得到的日志消息類型簇,分別提取其子類型模板.同一消息類型中的日志消息彼此間的文本相似度是很高的,無法繼續通過文本相似度來區分子類型,但是同一消息類型中屬于子模板詞的部分應該是高頻出現的單詞組合,且可變化范圍較小,參數詞則出現頻率較低且變化范圍廣,這種算法思想正可以映射為FP-Growth算法中的頻繁項計算,支持度高的單詞組合可以視為子模板詞組.現有的基于標簽識別樹的模板提取算法主要有模板樹的構建和模板樹的剪枝兩個步驟,通過這兩個步驟可從每一消息類型中分類出具體的子模板詞組.然而要使海量日志數據能夠精確匹配日志模板,需通過提取的模板詞組進一步生成模板表達式.因此本文在原算法的基礎上重點針對由于日志格式多樣性及文本切詞方法等導致的模板匹配度低的問題進行了算法改進,大幅提升了日志模板匹配度.下面詳細介紹本文采用的日志模板提取方法中的3個步驟:模板樹的構建、模板樹的剪枝和模板表達式的生成.

圖1 離線日志預處理流程圖

3.1 模板樹的構建

模板樹的建樹過程主要有3個步驟:

(1)切詞:確定特定分隔符,以此將每條日志記錄分割為若干個單詞;

(2)計算詞頻:統計在該數據集中每個單詞的出現次數;

(3)按詞頻建樹:將每條日志中的單詞按詞頻從大到小依次排列,以“Root”為根節點,以單詞作為其余節點建FP-Tree;

在原算法中,簡單將空格作為分隔符,這種方法對于僅以空格分割的特定格式的日志是有效的,然而對于多人員開發的日志系統,其日志格式是復雜的,不能完全滿足這種特定格式,單以空格作為分隔符,會導致切詞的粒度過大,計算的準確率下降.因此本文針對待處理日志本身特點,依據需要增加分隔符,改進切詞粒度過大的問題.以表3所示的日志記錄為例,使用“ ”、“:”、“;”作為分隔符執行模板樹的構建,構建模板樹如圖2所示.

表3 模板構建實例

圖2 日志模板樹

3.2 模板樹的剪枝

對于每組日志類型,應當只有很少數量的子類型,而每種類型的參數形式可以是多樣的.對應于日志模板樹,分支較少的節點應為子類型的模板詞,若一個節點的分支數較多,則該節點的孩子節點很大概率屬于參數詞,因此,該算法中對于構建樹中孩子節點數超過設定閾值k的節點,將其所有的子孫節點去除,將該節點作為模板樹的葉子節點,剪枝后的模板樹從根節點到樹中葉子節點的每條路徑則為子類型模板.如圖2中所建的樹,對“參與者”節點的子孫節點進行剪枝,剩余節點生成的模板組合為“流程實例id、工作項id、參與者”,為子類型模板所包含的關鍵字.

3.3 模板表達式的生成

初始獲得的子類型模板的單詞組合是亂序的,要將原始的日志對應于日志模板,需要生成模板的正則表達式.本文采用將獲得的單詞組合一一對應于所屬的原始日志的方式生成日志模板,注意作為分隔符的字符是不參與對比的,會在日志模板中以原字符表示,剩余單詞如果屬于日志模板則以原字符表示,否則以任意字符最小匹配的方式——如java中以“.*?”表示.上例中日志索引[1,2,3,4,5,6,7,8,9]都包含模板單詞組合“流程實例id、工作項id、參與者”,選取其中一條日志(如日志索引1),按照如上方法,可生成日志模板表達式:“流程實例 id:.*?;工作項 id:.*?;參與者:.*?.*?.*?”.

可以發現該模板是不合理的,因為它不能使屬于同一模板的所有日志完全與之匹配,觀察模板樹可以發現這是由于日志格式不統一和切詞導致的.要獲得更通用的模板表達式,要將分隔符對連續參數組合的影響程度最小,即參數個數盡可能少,反映到初始建立的模板樹上,應當選取所屬日志中單詞個數最少的原始日志作為生成模板表達式的參考文本.上例中應該選取日志索引3,對應生成的模板表達式為:“流程實例id:.*?;工作項id:.*?;參與者:.*?”,它可使屬于同一模板的日志與之完全匹配.

日志模板提取的完整算法結構如下所示:

算法1.日志模板提取算法輸入:歸類的一組日志數據集DM={M1,M2,…,Mn}、分隔符集合Sep、剪枝閾值k.輸出:日志模板表達式.1 Divide each log from DM into a collection of words with separators in Sep 2 Scan the message set DM once.3 Calculate the support for each word I in DM,let L=map(I,I.support)4 Create new FP-tree T and the root of T “Root 5 Creat ModelList 6 for each message in DM do 7 Sort its words according to their order in L 8 Let the sorted word list be [p|P],p is the first word in P 9 for each word in P do 10 Call insertNode(p)11 end for 12 end for 13 for child C in T do 14 if C.child.length > k 15 Delete all the children of C 16 Let the path form C to Root be the list model={Node1,Node2,…,Noden}17 form the list∈DM that contain C choose Mi that has the Minimum number of words 18 for word in Mi do 19 If word model 20 Replace the word with.?*21 end if 22 end for 23 ModelList.add(Mi)images/BZ_247_469_2846_490_2880.png

24 end if 25 end for 26 Return ModelList

4 實驗與評估

本文使用中國科學院某大型分布式信息管理Web系統產生的58萬條Apach服務器真實日志記錄作為數據集,使用如上方法進行了日志模板的提取.實驗以Windows系統為實驗平臺,Java為程序設計語言,MySQL為數據庫進行開發.

4.1 閾值選取

隨機選取數據集中的兩萬條日志記錄,計算其與剩余記錄的文本相似度值,圖3為其關系折線圖.從圖中可以看出,文本的相似度值從某一點開始驟然下降至非常小的數值,分析可得該點以后的數據可視為與參考日志屬于不同消息類型.在對大量日志計算轉折點后,發現將文本相似度閾值取為0.3較為合適.對于模板剪枝閾值的選取,k值過大,會提取出多余不必要的日志模板,k值過小則會將本不屬于同類的多個子類型歸為一類事件.多次實驗證明針對本文的數據集k取5具有較高準確性,但隨這數據集內容的增加,k可能需要依實際情況增大取值.

圖3 文本相似度折線圖

4.2 實驗評估

本次實驗從58萬條Apache服務器真實日志數據中提取了551條日志模板,數據源所屬Web應用的開發人員對于日志消息的分類是十分熟悉的,具有高可信度,通過開發人員對日志的手動分類,獲得真實的日志模板.本文采用Rand index方法進行評估,Rand index[9]方法可用于評估兩種數據聚類方法之間的相似性,將開發人員手動分類的日志模板與實驗提取的模板作為Rand index算法的輸入進行計算,以此來評估本次實驗的準確度.評估的具體方法為,從原數據集中預先隨機抽取100條數據,重復在這100條數據中隨機抽取兩條x和y,定義4個評價指標A、B、C、D如下:

A:x和y被手動分為一類且實驗也被歸為一類.

B:x和y被手動分為不同類且實驗也被分為不同類.

C:x和y被手動分為不同類但實驗被歸為一類.

D:x和y被手動分為一類但實驗被分為不同類.

使用上述指標,Rand index定義為:實驗隨機抽取了10個數據組進行實驗,計算Rand index值,實驗結果如圖4所示.

圖4 結果Rand index計算結果

本實驗提取日志模板的準確率平均值達到了96.4%,證明基于標簽識別樹的日志模板提取方法具有較高的可信度和穩定性.此外,將實驗數據集與提取的模板表達式進行正則匹配,匹配度為100%,證明本文采用的模板表達式的生成方法是合理有效的.

5 結束語

本文實現了基于歷史日志文件的日志模板提取方法.首先根據日志文本特性,從原始日志中使用基于文本相似度的方法進行迭代計算,批量完成分類預處理;然后對分類的日志數據使用基于標簽識別樹的日志模板提取方法進行模板提取;最后自主研究并實現了基于上述成果的模板表達式生成工作,完善日志模板提取算法,精準的生成模板表達式.該方法不依賴于源程序相關知識,具有很好的普適性,且實驗證明該方法同時具有很高的準確性.本次研究對于基于日志的分析計算具有很重要的意義.

猜你喜歡
文本方法
初中群文閱讀的文本選擇及組織
甘肅教育(2020年8期)2020-06-11 06:10:02
在808DA上文本顯示的改善
學習方法
基于doc2vec和TF-IDF的相似文本識別
電子制作(2018年18期)2018-11-14 01:48:06
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
文本之中·文本之外·文本之上——童話故事《坐井觀天》的教學隱喻
論《柳毅傳》對前代文本的繼承與轉化
人間(2015年20期)2016-01-04 12:47:10
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
主站蜘蛛池模板: 在线日韩日本国产亚洲| 免费在线成人网| 日韩欧美综合在线制服| 亚洲综合一区国产精品| 婷婷色中文| 久久精品无码国产一区二区三区| 免费一级毛片完整版在线看| 九九免费观看全部免费视频| 国产网站免费看| 人妻丰满熟妇AV无码区| 亚洲精品国产精品乱码不卞| 国产麻豆aⅴ精品无码| 亚洲精品午夜无码电影网| 欧美激情视频二区| 91午夜福利在线观看| 亚洲欧美成人在线视频| 一区二区理伦视频| 思思99热精品在线| 婷婷色一区二区三区| 午夜视频免费一区二区在线看| 精品伊人久久久香线蕉 | 亚洲三级网站| 91免费片| 特级毛片8级毛片免费观看| 国产精品永久在线| 国产精品视频免费网站| 久久黄色免费电影| 波多野结衣久久精品| 蜜臀av性久久久久蜜臀aⅴ麻豆| 久久精品国产999大香线焦| 精品久久久久久成人AV| 无码粉嫩虎白一线天在线观看| 亚洲视频三级| 丁香亚洲综合五月天婷婷| 国产精品第一区| a网站在线观看| 1级黄色毛片| 日韩中文无码av超清| 鲁鲁鲁爽爽爽在线视频观看| 国产精品jizz在线观看软件| 国产靠逼视频| 亚洲天堂网在线观看视频| 国产第一页屁屁影院| 日韩精品无码不卡无码| 92午夜福利影院一区二区三区| 亚洲手机在线| 99中文字幕亚洲一区二区| 国产精品第一区在线观看| 国产成人91精品免费网址在线| 国产又黄又硬又粗| 亚洲日韩AV无码一区二区三区人| 这里只有精品免费视频| 天天综合色天天综合网| 国产激爽爽爽大片在线观看| 伊在人亚洲香蕉精品播放| 9久久伊人精品综合| 亚洲三级电影在线播放| 国产在线精彩视频二区| 欧美色亚洲| 欧美a在线| 99这里只有精品6| 尤物亚洲最大AV无码网站| 国产麻豆91网在线看| 久久香蕉国产线看精品| 国国产a国产片免费麻豆| 亚洲成人一区二区三区| 久久一本精品久久久ー99| 国产免费高清无需播放器| 亚洲精品无码专区在线观看| 无码精品福利一区二区三区| 在线观看精品国产入口| 国内精品久久久久久久久久影视| 综合色天天| 欧美亚洲网| 国产成人h在线观看网站站| 91在线视频福利| 欧美a级在线| 国产欧美日韩在线一区| 91热爆在线| 综合色婷婷| a色毛片免费视频| 久久久久国产一级毛片高清板|