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

?

基于決策樹的日志分析方法

2020-07-14 00:27樊建昌余粟
軟件導(dǎo)刊 2020年1期
關(guān)鍵詞:大數(shù)據(jù)

樊建昌 余粟

摘 要:為了解決服務(wù)器運(yùn)行過(guò)程中由于性能故障造成服務(wù)質(zhì)量下降的問(wèn)題,提出一種基于決策樹的日志分析方法,以服務(wù)器日志文件中記錄服務(wù)器關(guān)鍵性能指標(biāo)的數(shù)據(jù)為研究對(duì)象,利用決策樹中常用的ID3、C4.5和CART 3種算法預(yù)測(cè)服務(wù)器未來(lái)性能指標(biāo)發(fā)展趨勢(shì)。實(shí)驗(yàn)結(jié)果表明,在實(shí)際運(yùn)行過(guò)程中,C4.5算法對(duì)服務(wù)器性能指標(biāo)數(shù)據(jù)預(yù)測(cè)的準(zhǔn)確率和召回率最好,分別達(dá)到了92.23%和95.37%,在3種決策樹算法中擁有最高的準(zhǔn)確率與召回率,且相比傳統(tǒng)開發(fā)人員從日志文件中尋找故障的方法,準(zhǔn)確率提高了20%左右,因此能夠更好地預(yù)測(cè)服務(wù)器系統(tǒng)性能指標(biāo)發(fā)展趨勢(shì)。通過(guò)該方法可提前感知系統(tǒng)運(yùn)行狀況,并及時(shí)作出調(diào)整,從而有效降低實(shí)際生產(chǎn)過(guò)程中服務(wù)器故障發(fā)生概率,提高服務(wù)質(zhì)量。

關(guān)鍵詞:決策樹算法;日志分析;Spark;大數(shù)據(jù)

DOI: 10. 11907/rjdk.191343

開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):

中圖分類號(hào):TP301

文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1672-7800(2020)001-0099-04

0 引言

隨著互聯(lián)網(wǎng)的快速發(fā)展,信息系統(tǒng)在人們?nèi)粘I钪邪l(fā)揮著越來(lái)越重要的作用。信息系統(tǒng)服務(wù)器一旦發(fā)生故障,將會(huì)嚴(yán)重影響公司日常業(yè)務(wù)的開展。因此,對(duì)運(yùn)行中的服務(wù)器定期進(jìn)行安全檢查,確定服務(wù)器當(dāng)前運(yùn)行狀況以及可能存在的安全隱患顯得尤為重要[1]。

在軟件系統(tǒng)運(yùn)行過(guò)程中,軟件系統(tǒng)各部分運(yùn)行狀態(tài)以及運(yùn)行過(guò)程數(shù)據(jù)都會(huì)以日志形式保存下來(lái)[2]。根據(jù)統(tǒng)計(jì),在Cithub等常用開源平臺(tái)上,絕大部分開源項(xiàng)目文件的每30行代碼中,就有一行用來(lái)記錄項(xiàng)目運(yùn)行過(guò)程中產(chǎn)生的日志[3]。此外,在實(shí)際生產(chǎn)領(lǐng)域,若重新創(chuàng)建與生產(chǎn)環(huán)境完全一致的開發(fā)環(huán)境,成本非常高昂,所以生產(chǎn)環(huán)境中打印的日志文件往往成為研究人員進(jìn)行服務(wù)器故障診斷預(yù)測(cè)的唯一數(shù)據(jù)來(lái)源[4]。

自從有學(xué)者提出利用日志文件進(jìn)行服務(wù)器故障診斷預(yù)測(cè)以來(lái),基于日志文件分析系統(tǒng)故障的方法開始受到越來(lái)越多人重視。傳統(tǒng)由資深開發(fā)人員基于系統(tǒng)產(chǎn)生的日志文件查找系統(tǒng)潛在故障的準(zhǔn)確率一般在70% - 80%之間[5-6],通過(guò)該方式進(jìn)行故障分析,不僅費(fèi)時(shí)費(fèi)力,而且準(zhǔn)確率不高。PREWETT[7]將專家知識(shí)表示為一系列規(guī)則進(jìn)行故障診斷,規(guī)則可以人為擴(kuò)展,并且是可解釋的,但該技術(shù)的缺點(diǎn)是不能診斷未知錯(cuò)誤,知識(shí)庫(kù)也不易維護(hù);Zhu等[8]將系統(tǒng)定義為數(shù)學(xué)表示,通過(guò)測(cè)試觀察到的行為驗(yàn)證其是否滿足模型,該技術(shù)適合診斷應(yīng)用級(jí)別問(wèn)題,但模型構(gòu)建需要對(duì)系統(tǒng)有深刻理解;韓凱等[9]利用經(jīng)驗(yàn)數(shù)據(jù)結(jié)合日志文件進(jìn)行關(guān)聯(lián)分析,同時(shí)結(jié)合統(tǒng)計(jì)理論對(duì)網(wǎng)絡(luò)系統(tǒng)進(jìn)行故障診斷,而不需要對(duì)系統(tǒng)內(nèi)部或模型有深入了解,但其難以診斷系統(tǒng)的非穩(wěn)態(tài)性故障。還有部分學(xué)者采用聚類方法分析日志文件,使用訓(xùn)練數(shù)據(jù)確定系統(tǒng)狀態(tài)是否健康,找出故障潛在原因,該技術(shù)可以自動(dòng)學(xué)習(xí)系統(tǒng)行為,但當(dāng)數(shù)據(jù)特征維度變大時(shí),精確度會(huì)下降[10-12]。如李剛等[13]將動(dòng)態(tài)時(shí)間閾值和屬性相異度相結(jié)合對(duì)日志文件進(jìn)行分析,診斷出系統(tǒng)運(yùn)行過(guò)程中的短暫與間歇性錯(cuò)誤,但該方法很大程度上依賴于參數(shù)校正;宋永生等[14]利用可視化數(shù)據(jù)生成圖表,由圖表進(jìn)一步分析故障發(fā)生位置,該方法便于解釋與評(píng)估,但該方法最大的問(wèn)題在于不能自動(dòng)識(shí)別故障具體位置。

本文基于Spark分布式計(jì)算引擎[15],采用決策樹中常用的3種算法對(duì)系統(tǒng)產(chǎn)生的日志文件進(jìn)行分析,并從召回率、準(zhǔn)確率等方面進(jìn)行對(duì)比,選擇準(zhǔn)確率和召回率最佳的C4.5算法作為日志分析方法。該方法可以自動(dòng)從原始日志文件中提取關(guān)鍵性能指標(biāo)進(jìn)行日志分析,對(duì)服務(wù)器運(yùn)行狀態(tài)進(jìn)行及時(shí)診斷,并對(duì)服務(wù)器可能發(fā)生的故障進(jìn)行預(yù)測(cè),具有良好的實(shí)時(shí)性和準(zhǔn)確性。

1 決策樹算法

決策樹算法[16]是一種典型分類方法,首先對(duì)原始數(shù)據(jù)進(jìn)行處理,并歸納生成可讀規(guī)則,該規(guī)則一般以樹的結(jié)構(gòu)體現(xiàn),所以稱為決策樹。當(dāng)需要對(duì)新數(shù)據(jù)進(jìn)行分類時(shí),只需利用決策樹對(duì)新數(shù)據(jù)進(jìn)行分析,即可得到分類結(jié)果,該方法已在大數(shù)據(jù)挖掘中得到廣泛應(yīng)用。

決策樹是一個(gè)有向無(wú)環(huán)樹,樹的每個(gè)非葉節(jié)點(diǎn)對(duì)應(yīng)訓(xùn)練樣本集中的一個(gè)屬性,非葉節(jié)點(diǎn)的分支對(duì)應(yīng)屬性的一個(gè)數(shù)值劃分,每個(gè)葉節(jié)點(diǎn)代表一個(gè)類,從根節(jié)點(diǎn)到葉節(jié)點(diǎn)的路徑稱為一個(gè)分類規(guī)則。決策樹構(gòu)建主要通過(guò)對(duì)屬性選擇進(jìn)行度量,目前屬性度量方式主要有3種:信息增益、信息增益率和Gini指標(biāo)。

1.1信息熵

熵是物理學(xué)和信息論中的一個(gè)重要概念[17],用來(lái)衡量一個(gè)數(shù)據(jù)分布的無(wú)序程度。對(duì)于一個(gè)訓(xùn)練樣本而言,其熵越小,則訓(xùn)練樣本的無(wú)序度越小,即訓(xùn)練樣本越有可能屬于同一類。信息增益即是一種通過(guò)樣本信息熵進(jìn)行度量的方法,集合D中某個(gè)樣本屬于第k類樣本的概率為第k

1.3 C4.5算法

在ID3算法中,信息增益對(duì)取值數(shù)目較多的屬性有所偏好,當(dāng)所有分支均只包含一個(gè)樣本時(shí),分支純度最大,但該決策樹有一個(gè)明顯缺點(diǎn),即不具備泛化能力,無(wú)法對(duì)新樣本進(jìn)行預(yù)測(cè)。C4.5決策樹算法即是為了提高決策樹泛化能力而提出的[19],其采用信息增益率進(jìn)行特征選擇。其中,增益率定義為:

其中,IV(a)稱為屬性a的固有值,當(dāng)屬性a的潛在值數(shù)目越多,屬性a的固有值則越大。在具體算法實(shí)現(xiàn)過(guò)程中,首先從候選劃分屬性中找出信息增益率高于平均水平的屬性,再?gòu)闹羞x擇增益率最高的屬性作為最終數(shù)據(jù)分類依據(jù)。

1.4 CART算法

CART決策樹算法采用Gini指數(shù)選擇屬性劃分,具體定義為:

Gini(D)反映了從數(shù)據(jù)集D中隨機(jī)抽取兩個(gè)樣本標(biāo)記類別不一致的概率。Gini(D)越小,數(shù)據(jù)集D的純度越高[20]。

2 實(shí)驗(yàn)平臺(tái)及數(shù)據(jù)準(zhǔn)備

2.1 實(shí)驗(yàn)平臺(tái)

圖1為實(shí)驗(yàn)環(huán)境拓?fù)鋱D,其中客戶端使用Dell 7567筆記本,Liberty服務(wù)器與4臺(tái)Spark集群均使用宏碁Veriton臺(tái)式機(jī),硬件配置為:雙核CPU,16G內(nèi)存,2T硬盤。Liber-ty服務(wù)器部署WebSphere Application ServerV8.5服務(wù)器,提供Web服務(wù)。同時(shí),Libertv服務(wù)器和4臺(tái)Spark集群都通過(guò)docker安裝Spark-2.2.0 -Hadoop-2.7與Hive 2.2.0,配置Master節(jié)點(diǎn)和Worker節(jié)點(diǎn)。

2.2 數(shù)據(jù)準(zhǔn)備與數(shù)據(jù)清洗

本文選取某電商網(wǎng)站一年的交易服務(wù)器日志數(shù)據(jù)作為訓(xùn)練數(shù)據(jù)。以Smin為時(shí)間間隔進(jìn)行數(shù)據(jù)統(tǒng)計(jì),共有105 120個(gè)實(shí)例,每個(gè)實(shí)例都有其標(biāo)記數(shù)據(jù),根據(jù)當(dāng)天的系統(tǒng)性能狀況,由專業(yè)工程師進(jìn)行標(biāo)注。對(duì)于每個(gè)實(shí)例,選出32 000個(gè)能夠體現(xiàn)系統(tǒng)性能的屬性。由于日志分析系統(tǒng)是根據(jù)性能指標(biāo)的歷史趨勢(shì)進(jìn)行預(yù)測(cè)的,對(duì)105 120個(gè)實(shí)例以7天為周期向前回溯,可以重疊,最終生成103 392個(gè)實(shí)例。

在日志提取過(guò)程中,對(duì)于未提取出來(lái)的數(shù)據(jù),本文將以null的形式展現(xiàn)出來(lái)。在進(jìn)行機(jī)器學(xué)習(xí)之前,以不影響總體數(shù)據(jù)分布為前提,對(duì)未提取出來(lái)的日志數(shù)據(jù)作殘缺值處理。由于日志數(shù)據(jù)所有屬性均為數(shù)值類型,在實(shí)際操作中以7天為一個(gè)周期,在7天內(nèi)某個(gè)數(shù)據(jù)屬性的殘缺值出現(xiàn)次數(shù)在3以下,則將當(dāng)前屬性其它數(shù)值的平均值作為該屬性殘缺值,如果當(dāng)前屬性的殘缺值數(shù)量在4個(gè)以上,則將其它相關(guān)屬性平均值作為當(dāng)前屬性的殘缺值。在機(jī)器學(xué)習(xí)中,由于無(wú)關(guān)屬性會(huì)在很大程度上影響分類器性能,所以在機(jī)器學(xué)習(xí)之前進(jìn)行屬性選擇是非常必要的,保留一些最相關(guān)的屬性,而將其它不相關(guān)或相關(guān)性非常小的屬性去除。

本文利用主成分分析法對(duì)日志數(shù)據(jù)進(jìn)行清洗,通過(guò)旋轉(zhuǎn)變換對(duì)線性空間中的原始數(shù)據(jù)進(jìn)行基變化,使變換后的數(shù)據(jù)投影在新坐標(biāo)軸上,并使其方差最大化。剔除變換后方差最小的坐標(biāo)軸,新坐標(biāo)軸即為主成分[21]。主成分分析法是一種比較常見的降維方法,廣泛應(yīng)用于機(jī)器學(xué)習(xí)的數(shù)據(jù)降維問(wèn)題中。利用Spark MLlib工具箱對(duì)主成分分析法加以實(shí)現(xiàn),對(duì)32 000個(gè)屬性進(jìn)行降維操作,最終選取28 000個(gè)屬性進(jìn)行最后的機(jī)器學(xué)習(xí)模型訓(xùn)練。

3 實(shí)驗(yàn)方法及結(jié)果

3.1 實(shí)驗(yàn)流程

在日志分析模塊,所有性能指標(biāo)都標(biāo)注了是否有故障以及故障類型。由日志提取模塊生成的系統(tǒng)性能指標(biāo),可以根據(jù)歷史標(biāo)注數(shù)據(jù)形成的訓(xùn)練模塊判斷出當(dāng)前系統(tǒng)是否有故障以及故障類型,所以日志分析模塊所采用的機(jī)器學(xué)習(xí)算法是監(jiān)督學(xué)習(xí)。日志分析預(yù)測(cè)結(jié)果為當(dāng)前CICS交易服務(wù)器在未來(lái)發(fā)生性能故障的概率,在實(shí)際訓(xùn)練預(yù)測(cè)模型時(shí),將原始數(shù)據(jù)集保留一部分作為測(cè)試集,剩余部分作為訓(xùn)練集,在隨機(jī)選取訓(xùn)練樣本過(guò)程中保證測(cè)試集和訓(xùn)練集中每個(gè)樣本比例大致相同,以減小取樣造成的誤差。本文使用十折交叉驗(yàn)證法生成預(yù)測(cè)模型,將原始數(shù)據(jù)源分成10份,進(jìn)行10次訓(xùn)練,每次選取其中1份作為測(cè)試樣本,其余9份作為訓(xùn)練樣本。該方法既能夠保證每個(gè)樣本都有一次機(jī)會(huì)用于測(cè)試,又沒有樣本進(jìn)行重復(fù)測(cè)試,因此試驗(yàn)結(jié)果較好。

當(dāng)模型建立之后,需要制定預(yù)測(cè)模型性能評(píng)估標(biāo)準(zhǔn),本文使用誤差率衡量預(yù)測(cè)模型的預(yù)測(cè)效果,誤差率是指不正確分類在整個(gè)實(shí)例集中所占比例。在模型實(shí)際訓(xùn)練過(guò)程中,可能產(chǎn)生4種結(jié)果,如表1所示。其中,數(shù)據(jù)集標(biāo)簽有Yes和No兩種,分別表示服務(wù)器有性能故障與無(wú)性能故障;預(yù)測(cè)結(jié)果也有Yes和No兩種,分別表示服務(wù)器會(huì)產(chǎn)生性能故障和不會(huì)產(chǎn)生性能故障。因此,模型預(yù)測(cè)結(jié)果有4種:正確的肯定TP( True Positive)表示數(shù)據(jù)標(biāo)簽是Yes,預(yù)測(cè)結(jié)果也是Yes的情況;正確的否定TN( True Negative)表示數(shù)據(jù)標(biāo)簽是No,預(yù)測(cè)結(jié)果也是No的情況;錯(cuò)誤的肯定FP( False Positive)表示數(shù)據(jù)標(biāo)簽是No,預(yù)測(cè)結(jié)果是Yes的情況;錯(cuò)誤的否定FN( False Negative)表示數(shù)據(jù)標(biāo)簽是Yes,預(yù)測(cè)結(jié)果是No的情況。其中,正確的肯定和正確的否定都是正確的預(yù)測(cè)結(jié)果。另外,一般稱錯(cuò)誤的否定為漏報(bào),而稱錯(cuò)誤的肯定為誤報(bào)。在日志分析系統(tǒng)中,漏報(bào)的代價(jià)大于誤報(bào)的代價(jià),因?yàn)檎`報(bào)只會(huì)浪費(fèi)工程師時(shí)間以確認(rèn)是否會(huì)產(chǎn)生性能故障,而漏報(bào)則會(huì)使工程師忽略問(wèn)題,導(dǎo)致問(wèn)題真實(shí)發(fā)生,產(chǎn)生嚴(yán)重后果。

3.2 實(shí)驗(yàn)結(jié)果

本文使用Spark的MLlib工具箱,借助十折交叉驗(yàn)證法對(duì)訓(xùn)練數(shù)據(jù)集進(jìn)行驗(yàn)證,分別利用ID3、C4.5和CART 3種不同算法對(duì)數(shù)據(jù)進(jìn)行訓(xùn)練。結(jié)果如表2所示,從中可看出3種算法的準(zhǔn)確率都高于85%,其中,C4.5算法的召回率最高,即能查出性能故障的概率更高。圖2為3種算法實(shí)驗(yàn)結(jié)果的ROC曲線對(duì)比結(jié)果,從中可以看出C4.5算法在FPR較高時(shí)準(zhǔn)確率更高,ID3算法在FPR較低時(shí)準(zhǔn)確率更高。日志分析系統(tǒng)需要盡可能提高模型召回率,因此可以相應(yīng)降低對(duì)準(zhǔn)確率的要求,本文最終選取C4.5算法進(jìn)行系統(tǒng)日志分析。

4 結(jié)語(yǔ)

由實(shí)驗(yàn)結(jié)果可以看出,本文設(shè)計(jì)的日志分析方法可以自動(dòng)對(duì)原始日志文件進(jìn)行分析,從而解決了軟件工程師手動(dòng)查取日志文件進(jìn)行系統(tǒng)故障判斷較為費(fèi)時(shí)費(fèi)力的問(wèn)題。相比傳統(tǒng)手工方法,其故障判斷的準(zhǔn)確率及效率都提高了20%左右。使用分布式計(jì)算引擎進(jìn)行日志分析,相對(duì)于傳統(tǒng)的串行查詢,提高了日志分析速度,而且易于擴(kuò)展。未來(lái)可根據(jù)具體日志業(yè)務(wù)特點(diǎn)進(jìn)行更加精準(zhǔn)的建模,以進(jìn)一步提高模型預(yù)測(cè)準(zhǔn)確率,避免服務(wù)器故障的發(fā)生。

參考文獻(xiàn):

[1]YUAN D,PARK S,ZHOU Y.Characterizing logging practices inopen-source software[C].Proceedings of the 34th International Con-ference on Software Engineering. IEEE Press, 2012: 102-112.

[2]SHARMA C, JHAPATE A.A survey: analytics of web log file throughmap reduce and Hadoop [Jl. International Journal of Scientific Re-search&Engineering Trends, 2016,2:2395-566X.

[3] LIN X,WANG P,WU B.Log analysis in cloud computing environ-mentWith Hadoop and Spark[C].Broadband Network&MultimediaTechnology (IC-BNMT), 2013 Sth lEEE International Conference omIEEE, 2013:273-276.

[4]SHUSHUAI Z H U,AKALI H,RUSSELL J,et al.Method and systemfor implementing collection-wise cessing in a log analytics system[ P].U.S. Patent Application 15/089, 129, 2017-1-5.

[5]廖湘科,李?yuàn)檴櫍?,?大規(guī)模軟件系統(tǒng)日志研究綜述[J].軟件學(xué)報(bào),2016, 27(8):1934-1947.

[6]VULYA S P. JOSHI K, DI GIANDOMENICO F, et al. Failure diag-nosis of complex systems[M].Heidelberg: Springer, 2012: 239-261.

[7]PREWETT J E.Analyzing cluster log files using Logsurfer[C]. Pro-ceedings of the 4th Annual Linux Showcase& Conference. 2003:169-176.

[8]ZHU J,HE P, FU Q, et al. Learning to log: helping developers makeinformed logging decisions[C].Proceedings of the 37th InternationalConference on Software Engineering, 2015: 415-425.

[9] 韓凱,趙國(guó)慶,胡天宇,等,基于日志分析的虛擬機(jī)智能運(yùn)維[J].信息與電腦:理論版,2018( 20):7-10.

[10]鐘雅,郭淵博.基于機(jī)器學(xué)習(xí)的日志解析系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[Jl.計(jì)算機(jī)應(yīng)用,2018,38(2):352-356.

[11] 馬文,朱志祥,吳晨,等.基于FP-Growth算法的安全日志分析系統(tǒng)[J].電子科技,2016.29(9):94-97.

[12] 張日如.聚類分析在Web日志中的應(yīng)用[J].信息與電腦:理論版.2019(2):116-117.

[13]李剛,陳怡瀟,黃沛爍,等.基于日志分析的信息通信網(wǎng)絡(luò)安全預(yù)警研究[J].電力信息與通信技術(shù),2018,16(12):1-8.

[14] 宋永生,吳新華.基于Pvthon的Moodle學(xué)習(xí)平臺(tái)日志分析[Jl.計(jì)算機(jī)時(shí)代,2018( lO):19-21,25.

[15]ZAHARIA M. CHOWDHURY M, FRANKLIN M J,et al. Spark:cluster computing with working sets[J].HotCloud, 2010, 10: 95.

[16]周志華機(jī)器學(xué)習(xí)[M].北京:清華大學(xué)出版社,2016.

[17]葉韻.深度學(xué)習(xí)與計(jì)算機(jī)視覺[M].北京:機(jī)械工業(yè)出版社,2017.

[18]張小軒.ID3算法的研究及優(yōu)化[D].青島:山東科技大學(xué),2017.

[19]沈亮亮,蒙祖強(qiáng),張兵,等.面向不完備數(shù)據(jù)的改進(jìn)C4.5算法研究[J].軟件導(dǎo)刊,2018.17(6):95-99.

[20]史選民,史達(dá)偉,郝玲,等.基于數(shù)據(jù)挖掘CART算法的區(qū)域夏季降水日數(shù)分類與預(yù)測(cè)模型研究[J].南京信息工程大學(xué)學(xué)報(bào):自然科學(xué)版,2018,10(6):760-765.

[21]MENG X. BRADLEY J,YAVUZ B. et al. Mllib: machine learningin Apache spark[Jl. The Journal of Machine Learning Research,2016, 17(1):1235-1241.

(責(zé)任編輯:黃?。?/p>

基金項(xiàng)目:上海市科委創(chuàng)新行動(dòng)計(jì)劃項(xiàng)目( 17511110204)

作者簡(jiǎn)介:樊建昌(1994-),男,上海工程技術(shù)大學(xué)機(jī)械與汽車工程學(xué)院碩士研究生,研究方向?yàn)橛?jì)算機(jī)視覺及數(shù)據(jù)挖掘。

猜你喜歡
大數(shù)據(jù)
淺談大數(shù)據(jù)在出版業(yè)的應(yīng)用
“互聯(lián)網(wǎng)+”對(duì)傳統(tǒng)圖書出版的影響和推動(dòng)作用
大數(shù)據(jù)環(huán)境下基于移動(dòng)客戶端的傳統(tǒng)媒體轉(zhuǎn)型思路