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

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

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

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

介紹LOGPREIN
LogReallyPython軟件透明地實(shí)現(xiàn)了這個(gè)過程。的最初目標(biāo)是協(xié)助祖爾CI使用構(gòu)建數(shù)據(jù)庫進(jìn)行作業(yè)失敗分析,現(xiàn)在將其集成到軟件廠發(fā)展鍛造的工作日志過程。
最簡單的是,LogReduce比較文件或目錄,并刪除類似的行。Log冷水為每個(gè)源文件構(gòu)建一個(gè)模型,并使用以下語法輸出距離超過定義閾值的任何目標(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使用可以將模型離線訓(xùn)練成可重用的模型?;€的許多變體可以用來適應(yīng)k-NN搜索樹
$ 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)建歷史記錄的基線。它還可以生成HTML報(bào)告,在一個(gè)簡單的接口中發(fā)現(xiàn)多個(gè)文件中的組異常。

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

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

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

