使用Python機(jī)器學(xué)習(xí)降低靜態(tài)日志噪聲
持續(xù)集成(CI)作業(yè)可以產(chǎn)生大量的數(shù)據(jù)。當(dāng)作業(yè)失敗時(shí),找出了什么問(wèn)題可能是一個(gè)繁瑣的過(guò)程,需要對(duì)日志進(jìn)行調(diào)查以發(fā)現(xiàn)根本原因-這通常是在作業(yè)總輸出的一小部分中發(fā)現(xiàn)的。為了更容易地將最相關(guān)的數(shù)據(jù)從其他數(shù)據(jù)中分離出來(lái),日志還原機(jī)器學(xué)習(xí)模型使用以前成功的作業(yè)運(yùn)行來(lái)訓(xùn)練,以從失敗的運(yùn)行日志中提取異常。
此原則也可應(yīng)用于其他用例,例如,從期刊或其他系統(tǒng)范圍的常規(guī)日志文件。
利用機(jī)器學(xué)習(xí)降低噪聲
一個(gè)典型的日志文件包含許多名義事件(“基線(xiàn)”)以及一些與開(kāi)發(fā)人員相關(guān)的異常?;€(xiàn)可能包含難以檢測(cè)和刪除的隨機(jī)元素,如時(shí)間戳或唯一標(biāo)識(shí)符。要?jiǎng)h除基線(xiàn)事件,我們可以使用k最近鄰模式識(shí)別算法 (k-NN)。

的日志事件必須轉(zhuǎn)換為數(shù)值。k-NN回歸。使用通用特征提取工具HashingVectorizer允許將該進(jìn)程應(yīng)用于任何類(lèi)型的日志。它對(duì)每個(gè)單詞進(jìn)行散列,并在稀疏矩陣中對(duì)每個(gè)事件進(jìn)行編碼。為了進(jìn)一步減少搜索空間,令牌化將刪除已知的隨機(jī)單詞,例如日期或IP地址。

一旦模型被訓(xùn)練,k-NN搜索告訴我們每個(gè)新事件與基線(xiàn)之間的距離。

Jupyter notebook演示了稀疏矩陣向量的過(guò)程,并繪制了稀疏矩陣向量圖。

介紹LOGPREIN
LogReallyPython軟件透明地實(shí)現(xiàn)了這個(gè)過(guò)程。的最初目標(biāo)是協(xié)助祖爾CI使用構(gòu)建數(shù)據(jù)庫(kù)進(jìn)行作業(yè)失敗分析,現(xiàn)在將其集成到軟件廠發(fā)展鍛造的工作日志過(guò)程。
最簡(jiǎn)單的是,LogReduce比較文件或目錄,并刪除類(lèi)似的行。Log冷水為每個(gè)源文件構(gòu)建一個(gè)模型,并使用以下語(yǔ)法輸出距離超過(guò)定義閾值的任何目標(biāo)行:距離文件名:行號(hào):行內(nèi)容.
$ logreduce varlogauditaudit.log.1 varlogauditaudit.log INFO logreduce.Classifier - Training took 21.982s at 0.364MBs 1.314kls 8.000 MB - 28.884 kilo-lines 0.244 audit.log:19963: =USER_AUTH ="root" ="/usr/bin/su" hostname=managesf.sftests.com INFO logreduce.Classifier - Testing took 18.297s at 0.306MBs 1.094kls 5.607 MB - 20.015 kilo-lines 99.99 reduction from 20015 lines to
更高級(jí)的LogReduce使用可以將模型離線(xiàn)訓(xùn)練成可重用的模型?;€(xiàn)的許多變體可以用來(lái)適應(yīng)k-NN搜索樹(shù)
$ logreduce dir-train audit.clf varlogauditaudit.log. INFO logreduce.Classifier - Training took 80.883s at 0.396MBs 1.397kls 32.001 MB - 112.977 kilo-lines DEBUG logreduce.Classifier - audit.clf: written $ logreduce dir-run audit.clf varlogauditaudit.log
LogReduce還實(shí)現(xiàn)了接口,以發(fā)現(xiàn)日志時(shí)間范圍(天/周/月)和Zuul CI作業(yè)構(gòu)建歷史記錄的基線(xiàn)。它還可以生成HTML報(bào)告,在一個(gè)簡(jiǎn)單的接口中發(fā)現(xiàn)多個(gè)文件中的組異常。

管理基線(xiàn)
使用的關(guān)鍵k-神經(jīng)網(wǎng)絡(luò)回歸異常檢測(cè)是有一個(gè)已知的良好基線(xiàn)的數(shù)據(jù)庫(kù),該模型用于檢測(cè)偏離過(guò)遠(yuǎn)的線(xiàn)。該方法依賴(lài)于包含所有標(biāo)稱(chēng)事件的基線(xiàn),因?yàn)榛€(xiàn)中沒(méi)有發(fā)現(xiàn)的任何事件都將被報(bào)告為異常。
Ci工作是我們的主要目標(biāo)。k-NN回歸,因?yàn)樽鳂I(yè)輸出通常是確定性的,以前的運(yùn)行可以自動(dòng)用作基線(xiàn)。Log還原功能可以將Zuul作業(yè)角色用作失敗的作業(yè)發(fā)布任務(wù)的一部分,以便發(fā)布簡(jiǎn)明的報(bào)告(而不是完整的作業(yè)日志)。這一原則可適用于其他情況,只要可以事先建立基線(xiàn)。例如,一個(gè)標(biāo)稱(chēng)系統(tǒng)的SOS報(bào)告可用于查找有缺陷的部署中的問(wèn)題。

異常分類(lèi)服務(wù)
下一個(gè)版本的Logreduce引入了一種服務(wù)器模式,用于將日志處理卸載到外部服務(wù),在該服務(wù)中可以進(jìn)一步分析報(bào)表。它還支持導(dǎo)入現(xiàn)有的報(bào)告和請(qǐng)求來(lái)分析Zuul構(gòu)建。服務(wù)運(yùn)行異步地進(jìn)行分析,并提供一個(gè)Web界面來(lái)調(diào)整分?jǐn)?shù)和刪除假陽(yáng)性。

評(píng)審報(bào)告可以作為獨(dú)立的數(shù)據(jù)集存檔,目標(biāo)日志文件和記錄在平面JSON文件中的異常行的分?jǐn)?shù)。
項(xiàng)目路線(xiàn)圖
LogReduce已經(jīng)被有效地使用了,但是有很多改進(jìn)工具的機(jī)會(huì)。今后的計(jì)劃包括:
- 管理日志文件中發(fā)現(xiàn)的許多帶注釋的異常,并生成公共域數(shù)據(jù)集,以便進(jìn)一步研究。日志文件中的異常檢測(cè)是一個(gè)具有挑戰(zhàn)性的主題,擁有一個(gè)通用的數(shù)據(jù)集來(lái)測(cè)試新的模型將有助于確定新的解決方案。
- 使用模型重用帶注釋的異常,以細(xì)化所報(bào)告的距離。例如,當(dāng)用戶(hù)通過(guò)將其距離設(shè)置為零將行標(biāo)記為假陽(yáng)性時(shí),該模型可以減少這些行在未來(lái)報(bào)告中的得分。
- 指紋歸檔異常以檢測(cè)新的報(bào)告何時(shí)包含已知的異常。因此,服務(wù)可以通知用戶(hù)作業(yè)遇到了已知的問(wèn)題,而不是報(bào)告異常的內(nèi)容。解決問(wèn)題后,服務(wù)可以自動(dòng)重新啟動(dòng)作業(yè)。
- 支持更多的目標(biāo)基線(xiàn)發(fā)現(xiàn)接口,如SOS報(bào)告、Jenkins構(gòu)建、Travis CI等。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
python實(shí)現(xiàn)信號(hào)時(shí)域統(tǒng)計(jì)特征提取代碼
今天小編就為大家分享一篇python實(shí)現(xiàn)信號(hào)時(shí)域統(tǒng)計(jì)特征提取代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02
淺談keras 的抽象后端(from keras import backend as K)
這篇文章主要介紹了淺談keras 的抽象后端(from keras import backend as K),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06
Python解析命令行讀取參數(shù)之a(chǎn)rgparse模塊
這篇文章主要介紹了Python解析命令行讀取參數(shù)之a(chǎn)rgparse模塊,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Python使用pylab庫(kù)實(shí)現(xiàn)畫(huà)線(xiàn)功能的方法詳解
這篇文章主要介紹了Python使用pylab庫(kù)實(shí)現(xiàn)畫(huà)線(xiàn)功能的方法,結(jié)合具體實(shí)例分析了Python使用pylab庫(kù)的相關(guān)函數(shù)實(shí)現(xiàn)畫(huà)線(xiàn)功能的操作技巧,并附帶說(shuō)明了相關(guān)函數(shù)與參數(shù)功能,需要的朋友可以參考下2017-06-06
Python 私有屬性和私有方法應(yīng)用場(chǎng)景分析
這篇文章主要介紹了Python 私有屬性和私有方法應(yīng)用場(chǎng)景分析,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06
Python編程實(shí)現(xiàn)的圖片識(shí)別功能示例
這篇文章主要介紹了Python編程實(shí)現(xiàn)的圖片識(shí)別功能,涉及Python PIL模塊的安裝與使用技巧,需要的朋友可以參考下2017-08-08
解決pip安裝tensorflow中出現(xiàn)的no module named tensorflow.python 問(wèn)題方法
這篇文章主要介紹了解決pip安裝tensorflow中出現(xiàn)的no module named tensorflow.python 問(wèn)題方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
python實(shí)現(xiàn)用戶(hù)登陸郵件通知的方法
這篇文章主要介紹了python實(shí)現(xiàn)用戶(hù)登陸郵件通知的方法,實(shí)例分析了Python計(jì)劃任務(wù)與郵件發(fā)送的使用技巧,需要的朋友可以參考下2015-07-07
python 信息同時(shí)輸出到控制臺(tái)與文件的實(shí)例講解
今天小編就為大家分享一篇python 信息同時(shí)輸出到控制臺(tái)與文件的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05

