程世文,裴 丹,王長進(jìn)
1(清華大學(xué) 計(jì)算機(jī)系,北京 100084)2(北京小桔科技(滴滴出行)有限公司,北京 100193)
互聯(lián)網(wǎng)服務(wù)已經(jīng)深入到用戶生活的方方面面,用戶對(duì)互聯(lián)網(wǎng)服務(wù)體驗(yàn)的要求越來越高,這正是互聯(lián)網(wǎng)內(nèi)容提供商所面臨著的巨大的挑戰(zhàn).互聯(lián)網(wǎng)內(nèi)容提供商在實(shí)際運(yùn)營過程中,所維護(hù)的各項(xiàng)服務(wù)業(yè)務(wù)隨時(shí)可能會(huì)遇到各種各樣的問題,這就需要收集相應(yīng)的日志,并對(duì)錯(cuò)誤日志進(jìn)行分析和處理.因此,將問題對(duì)應(yīng)的錯(cuò)誤日志及時(shí)反饋給相應(yīng)的研發(fā)人員是排除問題的首要因素.
在互聯(lián)網(wǎng)內(nèi)容提供商收集日志的過程中,即使采用采樣的方式,收集到的日志的數(shù)量也是十分巨大的,往往也是以TB甚至PB為單位.并且,很多錯(cuò)誤日志是完全相同或者相似的,錯(cuò)誤日志的不同種類僅占極少數(shù).僅以錯(cuò)誤日志舉例,本文研究的某互聯(lián)網(wǎng)公司每天采樣收集到的錯(cuò)誤日志量約10-20TB,但其中錯(cuò)誤日志的不同種類只占到了400-800種左右.將如此巨大數(shù)量的錯(cuò)誤日志直接反饋給研發(fā)人員進(jìn)行逐條人工排錯(cuò),顯然是不可行的.因此,對(duì)海量錯(cuò)誤日志進(jìn)行預(yù)先聚類則顯得非常重要.
在實(shí)際收集的錯(cuò)誤日志中,往往具有如下挑戰(zhàn):
1)日志數(shù)量巨大;
2)格式不規(guī)范,變量較多,無法全部清洗;
3)干擾數(shù)據(jù)較多,較難提取特征信息;
4)聚類效果、性能要求較高,難度較大.
在日志聚類方面,國內(nèi)外的一些研究學(xué)者也進(jìn)行了不少的研究與應(yīng)用.Xu[1]等人提出了對(duì)控制臺(tái)日志(Console logs)的預(yù)處理,但這些日志是形如“starting:xact (.*)is (.*)”的模板日志,非常規(guī)范且種類有限,通過相應(yīng)的正則表達(dá)式即可匹配識(shí)別.Qiu[2]等人設(shè)計(jì)并實(shí)現(xiàn)了SyslogDigest系統(tǒng),提出了對(duì)路由設(shè)備的syslog的壓縮和提取算法,通過進(jìn)行詞頻統(tǒng)計(jì)分析構(gòu)建出syslog的模板樹,模板樹中根節(jié)點(diǎn)到葉節(jié)點(diǎn)的所有路徑就是syslog的模板,也即所有syslog的種類.但syslog詞數(shù)有限、日志規(guī)范、易模板化,不適應(yīng)中文,且同一類型下不同形式的日志不能通過該算法區(qū)分.
在特征提取方面,目前常用的方法是基于統(tǒng)計(jì)的特征選擇方法,包括信息增益方法(IG)、互信息方法(MI)、開方擬合檢驗(yàn)方法(CHI)、文檔頻率方法(DF)等[3,4].文檔頻率方法與其它方法比較,算法實(shí)現(xiàn)簡單、復(fù)雜度低,且效果、性能相差不多[5].楊凱峰等[6]實(shí)驗(yàn)結(jié)果表明,在進(jìn)行特征選擇時(shí),高詞頻特征詞對(duì)類別的貢獻(xiàn)可提高傳統(tǒng)DF方法的分類性能.
針對(duì)以上提到的問題,本文提出互聯(lián)網(wǎng)軟件錯(cuò)誤日志聚類方法.該方法通過引入日志模板提取、日志壓縮方法降低日志規(guī)模;通過引入計(jì)算文檔頻率提取特征詞方法提高聚類準(zhǔn)確性并降低數(shù)據(jù)維度;結(jié)合Canopy聚類和K-means聚類算法提升聚類效果.本文的聚類方法有效地解決了實(shí)際運(yùn)維中海量非規(guī)范日志的聚類問題,并在某互聯(lián)網(wǎng)公司中進(jìn)行了實(shí)際驗(yàn)證.
互聯(lián)網(wǎng)公司運(yùn)維部門一般需要將從各個(gè)業(yè)務(wù)收集上來的海量錯(cuò)誤日志進(jìn)行聚類處理,將聚類結(jié)果及時(shí)反饋給相應(yīng)業(yè)務(wù)的研發(fā)人員,用于排除業(yè)務(wù)中存在的問題,從而及時(shí)止損.本文研究的公司為一個(gè)在中國領(lǐng)先的移動(dòng)出行公司,日訂單量1000萬以上.
該公司中的日志格式示例如下:
[日志級(jí)別][時(shí)間戳][擴(kuò)展區(qū)域] 日志信息
其中日志級(jí)別用于區(qū)分不同的日志類別(嚴(yán)重程度),包括FATAL、ERROR、WARNING、INFO、DEBUG,錯(cuò)誤日志則是日志級(jí)別為FATAL、ERROR或WARNING的日志.擴(kuò)展區(qū)域用于自定義,作為擴(kuò)展字段,可以打印一些用于調(diào)試的必要信息等.日志信息記錄了日志的具體信息,如運(yùn)行時(shí)信息、參數(shù)信息、狀態(tài)信息等.
本文中,錯(cuò)誤日志的日志信息簡稱為錯(cuò)誤日志信息,因此,對(duì)錯(cuò)誤日志聚類即是對(duì)錯(cuò)誤日志信息聚類.錯(cuò)誤日志信息舉例如表1所示.
由于實(shí)際研發(fā)過程中并沒有完全統(tǒng)一日志信息規(guī)范,所以收集的日志信息形式可能千差萬別并且無法預(yù)期.由表1示例,錯(cuò)誤日志主要分為三類:
1)常量型,如編號(hào)1、2、3;
2)變量型,如編號(hào)4、5,含少數(shù)不重要的變量,比如進(jìn)程號(hào);
3)任意型,如編號(hào)6、7、8、9,常為非規(guī)范的、無法預(yù)期的結(jié)構(gòu)形式.
由于公司業(yè)務(wù)的快速發(fā)展,帶來日志量急速增長,同時(shí)相應(yīng)的日志規(guī)范沒有跟上,以及研發(fā)人員素質(zhì)參差不齊,導(dǎo)致收集的錯(cuò)誤日志不規(guī)范、干擾數(shù)據(jù)較多.這些都給錯(cuò)誤日志聚類帶了巨大的挑戰(zhàn):
1)日志數(shù)量巨大
某互聯(lián)網(wǎng)公司某運(yùn)維場景下錯(cuò)誤日志的收集數(shù)量約為150萬條每分鐘,大小約3.3GB每分鐘;以此推算,相應(yīng)的數(shù)據(jù)為9000萬條每小時(shí),200GB每小時(shí);21.6億條每天,2.4TB每天.
2)變量較多,無法全部清洗
錯(cuò)誤日志信息中的變量名、變量名與變量間的格式無法預(yù)知,且變量較多,無法通過清洗變量來分析出所有的錯(cuò)誤日志模板.
表1 某互聯(lián)網(wǎng)公司某運(yùn)維系統(tǒng)下的錯(cuò)誤日志信息示例Table 1 Error log message examples in an operation system of an Internet company
3)干擾數(shù)據(jù)較多,難以提取特征信息
錯(cuò)誤日志信息可能包含如token、id、key、ticket、等md5、base64編碼的干擾數(shù)據(jù),此外還有中文、Unicode等干擾,對(duì)提取錯(cuò)誤日志的特征信息造成了很大的難度.
4)聚類效果、性能要求較高,難度較大
對(duì)海量非規(guī)范的錯(cuò)誤日志進(jìn)行聚類,要達(dá)到聚類效果較好、性能較高,并且需要經(jīng)得起公司運(yùn)維系統(tǒng)的實(shí)際驗(yàn)證,難度較高.
本文提出,對(duì)幾個(gè)不同時(shí)間段內(nèi)的錯(cuò)誤日志數(shù)據(jù)(每個(gè)時(shí)間段時(shí)間跨度約30分鐘,數(shù)量約4500萬條,大小約100GB),分別進(jìn)行聚類分析,對(duì)所有聚類結(jié)果計(jì)算平均頻度占比,可以得到如下結(jié)果:
1)錯(cuò)誤類別總數(shù)約270個(gè);
2)將錯(cuò)誤類別的頻度由高到低排序,前80個(gè)錯(cuò)誤類別的頻度較高,高于100,長尾的是頻度較低的錯(cuò)誤類別;
3)前5個(gè)錯(cuò)誤類別的平均占比總和約為57.1%,前10個(gè)錯(cuò)誤類別的平均占比總和約為68.5%,前15個(gè)錯(cuò)誤類別的平均占比總和約為74.2%,如圖1所示.
因此,在短時(shí)間內(nèi)出現(xiàn)的錯(cuò)誤類別總數(shù)較少,同時(shí)容易出現(xiàn)大量相同類別的錯(cuò)誤日志,且頻度較高.
針對(duì)前述挑戰(zhàn)和以上錯(cuò)誤日志特點(diǎn),本文提出解決思路如下:
1)日志數(shù)量巨大
由于錯(cuò)誤類別總數(shù)較少,可以將完全相同或較為相似的錯(cuò)誤日志進(jìn)行壓縮合并.常量型的日志可以直接壓縮合并,而變量型和任意型的日志則需要進(jìn)一步進(jìn)行清洗處理,提取出日志模板后才能繼續(xù)壓縮合并.
圖1 前15個(gè)錯(cuò)誤類別平均頻度占比圖Fig.1 Average frequency ratio of the top 15 error categories
2)變量較多,無法全部清洗
通過對(duì)錯(cuò)誤日志中的變量進(jìn)行清洗替換處理,可以提取相應(yīng)的日志模板.提取模板可以大大減少變量對(duì)聚類的干擾,但模板中仍然可能存在著無法預(yù)期的變量,這個(gè)問題可以通過后續(xù)特征詞提取來減少甚至避免這類變量造成的聚類干擾.模板提取后再進(jìn)行日志壓縮,將會(huì)得到更好的壓縮效果.
3)干擾數(shù)據(jù)較多,難以提取特征信息
由于同種類別的錯(cuò)誤日志在某些特征信息上表現(xiàn)相同或者較為相似,而不同類別的錯(cuò)誤日志的特征信息則表現(xiàn)完全不同或者相差較大.因此,可以根據(jù)特征信息來對(duì)錯(cuò)誤日志進(jìn)行聚類.由于一條錯(cuò)誤日志中可能包含干擾的數(shù)據(jù)項(xiàng),如變量,它們并不能表征錯(cuò)誤日志的特征信息,所以不能采用日志的所有信息作為它的特征信息.
本文采用基于文檔頻率的統(tǒng)計(jì)方法,來提取日志模板中的特征詞,并用特征詞來表征錯(cuò)誤日志的特征.其核心思想為:在所有日志中出現(xiàn)頻率越高的詞,越能表征該詞所在日志的類別特征;而在所有日志中出現(xiàn)頻率越低的詞,如變量,則表征日志的類別特征的可能性越低.
然后使用提取的特征詞來建立向量空間模型(Vector Space Model,VSM)[7],從而確定特征向量,并用特征向量來表征錯(cuò)誤日志的特征.提取特征詞可以有效地減少建立向量空間模型的維度,從而降低計(jì)算復(fù)雜度.
4)聚類效果、性能要求較高,難度較大
通過日志模板提取、日志壓縮,可以大大減少日志的數(shù)據(jù)規(guī)模.通過文檔頻率的方法來提取日志模板的特征詞,建立特征向量,不但能很好地表征錯(cuò)誤日志的特征,而且降低了數(shù)據(jù)維度.
對(duì)特征向量進(jìn)行聚類,采用經(jīng)典的K-means聚類算法[8],其原理簡單,計(jì)算時(shí)間短,速度快,聚類效果較好,但需要確定K值和K個(gè)初始質(zhì)心,這里事先采用Canopy聚類算法[9].Canopy聚類算法是無監(jiān)督的預(yù)聚類算法,通常用于K-means算法或?qū)哟尉垲愃惴ㄖ暗奶幚黼A段.相對(duì)于傳統(tǒng)的聚類算法,Canopy聚類算法不需要事先指定聚類的個(gè)數(shù)(如K-means的K值),并且在大規(guī)模的高維度數(shù)據(jù)上速度較快,在實(shí)際工程中有很大的價(jià)值及優(yōu)勢.其缺點(diǎn)是聚類精度較低,準(zhǔn)確度不高.
因此,可以使用Canopy聚類算法進(jìn)行粗聚類,得到的聚類數(shù)和聚類中心作為K-means的K值和初始質(zhì)心.這樣可以有效地確定合理的K值,同時(shí)可以避免K個(gè)初始質(zhì)心選擇的不合理導(dǎo)致對(duì)聚類結(jié)果產(chǎn)生較大的影響.
通過上述方法,錯(cuò)誤日志聚類可以很好地達(dá)到聚類效果較好、性能較高的要求.
錯(cuò)誤日志聚類系統(tǒng)架構(gòu)如圖2所示.
圖2 錯(cuò)誤日志聚類系統(tǒng)架構(gòu)圖Fig.2 System architecture of the error log clustering
該系統(tǒng)架構(gòu)由錯(cuò)誤日志(數(shù)據(jù)輸入)、模板提取、日志壓縮、計(jì)算文檔頻率提取特征詞、建立特征向量、Canopy粗聚類、K-means細(xì)聚類、錯(cuò)誤類別(結(jié)果輸出)組成,各個(gè)功能如下:
1)錯(cuò)誤日志:錯(cuò)誤日志數(shù)據(jù)輸入端,每條數(shù)據(jù)為一條錯(cuò)誤日志信息.
2)模板提取:根據(jù)替換規(guī)則,清洗替換掉錯(cuò)誤日志中不相關(guān)、不重要的變量和干擾項(xiàng),進(jìn)而提取出日志模板.替換規(guī)則可由人工進(jìn)行配置.
3)日志壓縮:對(duì)提取后的日志模板中大量完全相同的模板進(jìn)行去重壓縮,輸出相應(yīng)的日志模板條數(shù).
4)計(jì)算文檔頻率提取特征詞:使用文檔頻率方法提取出每條錯(cuò)誤日志模板的一些特征詞,用來表征相應(yīng)錯(cuò)誤日志的特征信息.
5)建立特征向量:將所有錯(cuò)誤日志模板提取出來的特征詞合并成一個(gè)集合,其中每一個(gè)元素構(gòu)成向量空間的一個(gè)維度,建立向量空間模型,從而每條錯(cuò)誤日志可以由提取出來的特征詞確定相應(yīng)的特征向量.
6)Canopy粗聚類:使用Canopy聚類算法先對(duì)數(shù)據(jù)進(jìn)行粗聚類,得到聚類數(shù)和聚類中心后再使用K-means聚類算法進(jìn)行進(jìn)一步細(xì)聚類.
7)K-means細(xì)聚類:取K=Canopy聚類數(shù),并且選擇Canopy粗聚類后的K個(gè)中心點(diǎn)作為K個(gè)初始質(zhì)心,使用K-means聚類算法進(jìn)行細(xì)聚類.
8)錯(cuò)誤類別:錯(cuò)誤類別數(shù)據(jù)輸出端,每條數(shù)據(jù)為一種聚類類別,及其對(duì)應(yīng)的原錯(cuò)誤日志樣本和錯(cuò)誤日志數(shù)量.
4.2.1 模板提取
根據(jù)給定的替換規(guī)則,對(duì)錯(cuò)誤日志進(jìn)行清洗替換,提取出日志模板.替換規(guī)則越多,則提取后的錯(cuò)誤日志模板的質(zhì)量更好,干擾項(xiàng)數(shù)據(jù)更少.以下給出部分初始的替換規(guī)則,基于正則表達(dá)式進(jìn)行依次替換,如表2所示.
表2 部分初始的替換規(guī)則Table 2 Part of the initial replacement rule
例如,“the request url is http://example.com/test”提取的日志模板為“the request url is
4.2.2 日志壓縮
本文采用的壓縮條件為提取后的日志模板完全相同,日志壓縮的實(shí)現(xiàn)算法如下:
算法1.日志壓縮算法
輸入:提取后的日志模板列表LOGS
輸出:壓縮后的日志、統(tǒng)計(jì)條數(shù)鍵值對(duì)MLOGS,其中每個(gè)條目為
1)MLOGS= HashMap()
2)for log in LOGS:
3)if MLOGS has key log:
4)MLOGS.set(log,MLOGS.get(log)+ 1)
5)else:
6)MLOGS.set(log,1)
4.2.3 計(jì)算文檔頻率提取特征詞
本文中,每條錯(cuò)誤日志模板都視作一篇文檔,每篇文檔進(jìn)行分詞后都會(huì)得到若干詞,其中一些詞可以表征類別特征,它們對(duì)聚類有貢獻(xiàn);另外一些詞,則不能表征類別特征,它們會(huì)干擾聚類.因此,應(yīng)對(duì)這些分詞根據(jù)一定特征進(jìn)行選擇,選擇的分詞作為特征詞來表征錯(cuò)誤日志的類別特征,即從原始的分詞中選取一個(gè)子集,將干擾大、表征信息少、不重要的分詞移除,從而得到特征詞集合.對(duì)一個(gè)特征詞,統(tǒng)計(jì)該詞的文檔頻率,即包含該詞的文檔數(shù),則文檔頻率越大,說明該詞越能表征某種類別特征.所以,出現(xiàn)的文檔數(shù)越多的分詞被留作特征詞的可能性越大.在文檔頻率方法中,將每篇文檔進(jìn)行分詞,根據(jù)分詞的文檔頻率對(duì)分詞進(jìn)行排序,保留文檔頻率高的前若干個(gè)分詞構(gòu)成特征詞集合.
實(shí)際聚類過程中,可能遇到一類詞,其出現(xiàn)次數(shù)較多,可能在一部分類別中都會(huì)出現(xiàn),但對(duì)聚類幾乎無貢獻(xiàn)、沒有較大的表征意義,如“a”“X”“2”等,其被稱作為停用詞(Stop Words)[10].在提取特征詞過程中,需要對(duì)停用詞進(jìn)行過濾.停用詞支持運(yùn)維人員調(diào)整修改,初始的停用詞為數(shù)詞和單字母詞.
計(jì)算文檔頻率提取特征詞算法如下:
算法2.計(jì)算文檔頻率提取特征詞
輸入:壓縮后的日志、統(tǒng)計(jì)條數(shù)鍵值對(duì)MLOGS
輸出:日志、特征詞鍵值對(duì)FWS,其中每個(gè)條目為
1)// 分詞、過濾停用詞
2)SWS = HashMap()// Split Words
3)for
4)words = split_words(log)
5)words = unique(words)
6)words = remove_stop_words(words)
7)SWS.set(log,words)
8)// 計(jì)算文檔頻率
9)DF = HashMap()// Document Frequency
10)for
11)words = SWS.get(log)
12)for word in words:
13)if DF has key word:
14)DF.set(word,DF.get(word)+num)
15)else:
16)DF.set(word,num)
17)// 提取特征詞
18)FWS = HashMap()// Feature Words
19)for
20)words = SWS.get(log)
21)features = calc_top10_df_words(words)
22)SWS.set(log,features)
4.2.4 建立特征向量
提取出所有錯(cuò)誤日志模板的特征詞后,設(shè)所有特征詞的集合為S={fw1,fw2,…,fwn},并依次構(gòu)成n維向量空間的各個(gè)維度,則對(duì)于錯(cuò)誤日志L及其特征詞集合FWL,其特征向量定義為
VL=[v1,v2,…,vn],其中
所有錯(cuò)誤日志的特征向量構(gòu)成特征向量集合D.
4.2.5 Canopy聚類
Canopy聚類算法需要首先設(shè)定兩個(gè)閾值T1(松散距離),T2(緊湊距離),要求T1 > T2;然后計(jì)算數(shù)據(jù)點(diǎn)之間的距離,會(huì)將距離相接近的數(shù)據(jù)點(diǎn)放入到一個(gè)子集中,這個(gè)子集被稱作Canopy;最后通過一系列計(jì)算得到若干個(gè)Canopy,Canopy之間可以重疊,但不會(huì)存在某個(gè)數(shù)據(jù)點(diǎn)不屬于任何Canopy的情況.
使用Canopy算法聚類后,結(jié)果如圖3所示.
圖3 Canopy聚類結(jié)果圖Fig.3 Result of Canopy clustering
其中,T1過大,則會(huì)導(dǎo)致較多的迭代次數(shù),形成較多的Canopy;T1過小則效果相反.T2過大,則會(huì)導(dǎo)致一個(gè)Canopy中的數(shù)據(jù)較多;T2過小則相反.由于本文使用Canopy聚類算法僅進(jìn)行粗聚類,即計(jì)算出Canopy聚類數(shù),用作下游K-means聚類算法的K值,所以聚類精度要求不高,實(shí)際工程中設(shè)定T1=2*T2,T2初始值為2.
4.2.6 K-means聚類
K-means聚類算法需要首先設(shè)定K值,從數(shù)據(jù)集中選定K個(gè)點(diǎn)作為最初的質(zhì)心;然后將D中的每個(gè)數(shù)據(jù)劃分到離質(zhì)心最近的簇中,形成K個(gè)簇,并重新計(jì)算每個(gè)簇的質(zhì)心;重復(fù)上述過程,直到簇不發(fā)生變化.
在K-means聚類算法中,取K=Canopy聚類數(shù),并且選擇Canopy粗聚類后的K個(gè)中心點(diǎn)作為K個(gè)初始質(zhì)心.
由于聚類沒有統(tǒng)一的評(píng)價(jià)指標(biāo),并且錯(cuò)誤日志數(shù)據(jù)量巨大,無法事先人工標(biāo)注,目前只能根據(jù)實(shí)際問題和場景,由相應(yīng)的領(lǐng)域?qū)<液凸こ處煂?duì)聚類之后的結(jié)果進(jìn)行確定和評(píng)價(jià).
表3 聚類效果部分結(jié)果Table 3 Part results of clustering effect
本文經(jīng)過一段時(shí)間對(duì)聚類類型和相應(yīng)的樣本進(jìn)行了評(píng)估,合作的領(lǐng)域?qū)<液凸こ處熣J(rèn)為聚類有效且達(dá)到比較理想的效果.某個(gè)時(shí)間段里聚類效果部分結(jié)果如表3所示.
其中類別是聚類類別的編號(hào),總數(shù)是這一時(shí)間段中相應(yīng)的錯(cuò)誤日志總數(shù),日志模板即為提取的日志模板信息.例如,錯(cuò)誤類別11、日志模板為“stop pay fail ret_info errno errmsg”的一個(gè)日志樣例為“errno:80051 errmsg:stop pay fail | ret_info:{″e(cuò)rrno″:″80051″,″e(cuò)rrmsg″:″\u5173\u5355\u5931\u8d25″}”;錯(cuò)誤類別12、日志模板為“Warning getBillInfo empty orderId passengerId”的一個(gè)日志樣例為“Warning:getBillInfo empty|orderId:3267678|passengerId:159631166”.
本地測試所用硬件環(huán)境為一臺(tái)雙核i5-3337U,1.80GHz,4GB內(nèi)存的筆記本電腦,操作系統(tǒng)為Windows 10,所使用的語言為Java和Python2.7.
5.2.1 模板提取性能
語言為Java,部分測試結(jié)果如表4所示,在幾個(gè)不同場景下的測試結(jié)果中,處理速度達(dá)到7.31-9.91萬條每秒.處理速度跟日志信息具體內(nèi)容有較大關(guān)系,每條日志信息越長則處理速度較慢,每條日志信息越短則處理速度較快.
表4 模板提取性能Table 4 Performance of template extraction
5.2.2 日志壓縮性能
語言為Java,部分測試結(jié)果如表5所示,在幾個(gè)不同場景下的測試結(jié)果中,壓縮比達(dá)到342.1-1095.8,處理速度達(dá)到40.33-85.47萬條每秒.壓縮比跟日志條數(shù)大致呈現(xiàn)正相關(guān),即壓縮比隨著日志條數(shù)增加而增大.這表明在短時(shí)間內(nèi)錯(cuò)誤類別數(shù)量維持在一定水平,日志條數(shù)大幅增加不會(huì)使得錯(cuò)誤類別數(shù)量急劇上升.
表5 日志壓縮性能Table 5 Performance of log compression
5.2.3 Canopy粗聚類性能
語言為Python2.7,部分測試結(jié)果如表6所示,其反映了不同壓縮條數(shù)和向量維度下Canopy的處理時(shí)間.壓縮條數(shù)越大、向量維度越高,處理時(shí)間越長.
5.2.4 K-means細(xì)聚類性能
語言為Python2.7,使用scikit-learn機(jī)器學(xué)習(xí)庫中的K-means聚類算法,部分測試結(jié)果如表7所示,其反映了不同壓縮條數(shù)和向量維度下K-means的處理時(shí)間.壓縮條數(shù)越大、向量維度越高,處理時(shí)間越長,但遠(yuǎn)遠(yuǎn)優(yōu)于Canopy粗聚類處理時(shí)間.
表6 Canopy粗聚類性能Table 6 Performance of Canopy clustering
表7 K-means細(xì)聚類性能Table 7 Performance of K-means clustering
5.2.5 整體系統(tǒng)性能
實(shí)際生產(chǎn)環(huán)境中的性能要遠(yuǎn)優(yōu)于本地單機(jī)硬件環(huán)境.在某互聯(lián)網(wǎng)公司某子系統(tǒng)下錯(cuò)誤日志量產(chǎn)生速度約為2萬條每秒,壓縮后處理時(shí)間完全滿足性能要求.
在互聯(lián)網(wǎng)公司對(duì)海量非規(guī)范的錯(cuò)誤日志進(jìn)行聚類的過程中,往往會(huì)遇到幾大挑戰(zhàn):
1)日志數(shù)量巨大;
2)變量較多,無法全部清洗;
3)干擾數(shù)據(jù)較多,難以提取特征信息;
4)聚類效果、性能要求較高,難度較大.
針對(duì)上述挑戰(zhàn),本文提出了互聯(lián)網(wǎng)軟件錯(cuò)誤日志聚類方法,通過引入日志模板提取、日志壓縮方法降低日志規(guī)模;通過引入計(jì)算文檔頻率提取特征詞方法提高聚類準(zhǔn)確性并降低數(shù)據(jù)維度;結(jié)合Canopy聚類和K-means聚類算法提升聚類效果.通過在某互聯(lián)網(wǎng)公司運(yùn)維中實(shí)際系統(tǒng)的檢驗(yàn),本文提出的錯(cuò)誤日志聚類方法,不但具有比較理想的聚類效果,而且滿足生產(chǎn)環(huán)境中的性能要求.
:
[1] Xu W,Huang L,Fox A,et al.Detecting large-scale system problems by mining console logs[C].Proceedings of the ACM SIGOPS 22nd Symposium on Operating Systems Principles,ACM,2009:117-132.
[2] Qiu T,Ge Z,Pei D,et al.What happened in my network:mining network events from router syslogs[C].Proceedings of the 10th ACM SIGCOMM Conference on Internet Measurement,ACM,2010:472-484.
[3] Galavotti L,Sebastiani F,Simi M.Experiments on the use of feature selection and negative evidence in automated text categorization[C].European Conference on Research and Advanced Technology for Digital Libraries,Springer-Verlag,2000:59-68.
[5] Shan Song-wei,Feng Shi-cong,Li Xiao-ming.A comparative study on several typical feature selection methods for Chinese web page categorization [J].Computer Engineering and Applications,2003,39(22):146-148.
[6] Yang Kai-feng,Zhang Yi-kun,Li Yan.Feature selection method based on document frequency[J].Computer Engineering,2010,36(17):33-35.
[7] Salton G,Wong A,Yang C S.A vector space model for automatic indexing[J].Communications of the ACM,1975,18(11):613-620.
[8] MacKay,David.Chapter 20.an example inference task:clustering[M].Information Theory,Inference and Learning Algorithms,Cambridge University Press,2003:284-292.
[9] McCallum A,Nigam K,Ungar L H.Efficient clustering of high-dimensional data sets with application to reference matching[C].Proceedings of the Sixth ACM SIGKDD International Conference on Knowledge Discovery and Data Mining,ACM,2000:169-178.
[10] Rajaraman A,Ullman,J D.Data mining[M].Mining of Massive Datasets,2011:1-17.
附中文參考文獻(xiàn):
[5] 單松巍,馮是聰,李曉明.幾種典型特征選取方法在中文網(wǎng)頁分類上的效果比較[J].計(jì)算機(jī)工程與應(yīng)用,2003,39(22):146-148.
[6] 楊凱峰,張毅坤,李 燕.基于文檔頻率的特征選擇方法[J].計(jì)算機(jī)工程,2010,36(17):33-35.