使用Python機器學(xué)習(xí)降低靜態(tài)日志噪聲
持續(xù)集成(CI)作業(yè)可以產(chǎn)生大量的數(shù)據(jù)。當(dāng)作業(yè)失敗時,找出了什么問題可能是一個繁瑣的過程,需要對日志進行調(diào)查以發(fā)現(xiàn)根本原因-這通常是在作業(yè)總輸出的一小部分中發(fā)現(xiàn)的。為了更容易地將最相關(guān)的數(shù)據(jù)從其他數(shù)據(jù)中分離出來,日志還原機器學(xué)習(xí)模型使用以前成功的作業(yè)運行來訓(xùn)練,以從失敗的運行日志中提取異常。
此原則也可應(yīng)用于其他用例,例如,從期刊或其他系統(tǒng)范圍的常規(guī)日志文件。
利用機器學(xué)習(xí)降低噪聲
一個典型的日志文件包含許多名義事件(“基線”)以及一些與開發(fā)人員相關(guān)的異常?;€可能包含難以檢測和刪除的隨機元素,如時間戳或唯一標識符。要刪除基線事件,我們可以使用k最近鄰模式識別算法 (k-NN)。
的日志事件必須轉(zhuǎn)換為數(shù)值。k-NN回歸。使用通用特征提取工具HashingVectorizer允許將該進程應(yīng)用于任何類型的日志。它對每個單詞進行散列,并在稀疏矩陣中對每個事件進行編碼。為了進一步減少搜索空間,令牌化將刪除已知的隨機單詞,例如日期或IP地址。
一旦模型被訓(xùn)練,k-NN搜索告訴我們每個新事件與基線之間的距離。
Jupyter notebook演示了稀疏矩陣向量的過程,并繪制了稀疏矩陣向量圖。
介紹LOGPREIN
LogReallyPython軟件透明地實現(xiàn)了這個過程。的最初目標是協(xié)助祖爾CI使用構(gòu)建數(shù)據(jù)庫進行作業(yè)失敗分析,現(xiàn)在將其集成到軟件廠發(fā)展鍛造的工作日志過程。
最簡單的是,LogReduce比較文件或目錄,并刪除類似的行。Log冷水為每個源文件構(gòu)建一個模型,并使用以下語法輸出距離超過定義閾值的任何目標行:距離文件名:行號:行內(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
更高級的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還實現(xiàn)了接口,以發(fā)現(xiàn)日志時間范圍(天/周/月)和Zuul CI作業(yè)構(gòu)建歷史記錄的基線。它還可以生成HTML報告,在一個簡單的接口中發(fā)現(xiàn)多個文件中的組異常。
管理基線
使用的關(guān)鍵k-神經(jīng)網(wǎng)絡(luò)回歸異常檢測是有一個已知的良好基線的數(shù)據(jù)庫,該模型用于檢測偏離過遠的線。該方法依賴于包含所有標稱事件的基線,因為基線中沒有發(fā)現(xiàn)的任何事件都將被報告為異常。
Ci工作是我們的主要目標。k-NN回歸,因為作業(yè)輸出通常是確定性的,以前的運行可以自動用作基線。Log還原功能可以將Zuul作業(yè)角色用作失敗的作業(yè)發(fā)布任務(wù)的一部分,以便發(fā)布簡明的報告(而不是完整的作業(yè)日志)。這一原則可適用于其他情況,只要可以事先建立基線。例如,一個標稱系統(tǒng)的SOS報告可用于查找有缺陷的部署中的問題。
異常分類服務(wù)
下一個版本的Logreduce引入了一種服務(wù)器模式,用于將日志處理卸載到外部服務(wù),在該服務(wù)中可以進一步分析報表。它還支持導(dǎo)入現(xiàn)有的報告和請求來分析Zuul構(gòu)建。服務(wù)運行異步地進行分析,并提供一個Web界面來調(diào)整分數(shù)和刪除假陽性。
評審報告可以作為獨立的數(shù)據(jù)集存檔,目標日志文件和記錄在平面JSON文件中的異常行的分數(shù)。
項目路線圖
LogReduce已經(jīng)被有效地使用了,但是有很多改進工具的機會。今后的計劃包括:
- 管理日志文件中發(fā)現(xiàn)的許多帶注釋的異常,并生成公共域數(shù)據(jù)集,以便進一步研究。日志文件中的異常檢測是一個具有挑戰(zhàn)性的主題,擁有一個通用的數(shù)據(jù)集來測試新的模型將有助于確定新的解決方案。
- 使用模型重用帶注釋的異常,以細化所報告的距離。例如,當(dāng)用戶通過將其距離設(shè)置為零將行標記為假陽性時,該模型可以減少這些行在未來報告中的得分。
- 指紋歸檔異常以檢測新的報告何時包含已知的異常。因此,服務(wù)可以通知用戶作業(yè)遇到了已知的問題,而不是報告異常的內(nèi)容。解決問題后,服務(wù)可以自動重新啟動作業(yè)。
- 支持更多的目標基線發(fā)現(xiàn)接口,如SOS報告、Jenkins構(gòu)建、Travis CI等。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
python實現(xiàn)信號時域統(tǒng)計特征提取代碼
今天小編就為大家分享一篇python實現(xiàn)信號時域統(tǒng)計特征提取代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02淺談keras 的抽象后端(from keras import backend as K)
這篇文章主要介紹了淺談keras 的抽象后端(from keras import backend as K),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06Python解析命令行讀取參數(shù)之a(chǎn)rgparse模塊
這篇文章主要介紹了Python解析命令行讀取參數(shù)之a(chǎn)rgparse模塊,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Python使用pylab庫實現(xiàn)畫線功能的方法詳解
這篇文章主要介紹了Python使用pylab庫實現(xiàn)畫線功能的方法,結(jié)合具體實例分析了Python使用pylab庫的相關(guān)函數(shù)實現(xiàn)畫線功能的操作技巧,并附帶說明了相關(guān)函數(shù)與參數(shù)功能,需要的朋友可以參考下2017-06-06解決pip安裝tensorflow中出現(xiàn)的no module named tensorflow.python 問題方法
這篇文章主要介紹了解決pip安裝tensorflow中出現(xiàn)的no module named tensorflow.python 問題方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02