封神系统-运维大脑的日志检测
1. 背景目標
阿里云應用業(yè)務有問題,云平臺監(jiān)控可以發(fā)現(xiàn)問題,但并不能定位到問題根本原因,運維大腦監(jiān)控底層日志,可快速定位問題原因,幫助現(xiàn)場運維同學解決問題。
運維大腦融合SRE方法,專注于深度運維的技術服務領域,幫助客戶與現(xiàn)場,增強租戶視角運維監(jiān)控能力、提升平臺視角問題定位效率、加強雙維度容量性能運營能力。濃縮TAM現(xiàn)場運維經(jīng)驗,多樣化地、標準化地、智能化地向客戶輸出運維能力與技術服務。
2. 開發(fā)設計
圖1:流程圖
2.1 日志配置
如圖2所示,可通過運維大腦前端頁面配置需要監(jiān)控的日志,可單獨新增也可批量導入。配置信息包括產(chǎn)品、服務、服務角色、日志類型(DOCKER 物理機 VM)、日志路徑、監(jiān)控周期、算法(ML-TOP ML-CP ML-KEY)、狀態(tài)(開啟\關閉)。
圖2:日志配置
2.2 日志訓練
前端配置日志信息存儲到后臺數(shù)據(jù)庫,后臺程序通過產(chǎn)品、服務、服務角色等條件查詢相應的主機名。
圖3:數(shù)據(jù)庫
定時任務啟動,根據(jù)獲取到的主機名通過PSSH命令下發(fā)訓練腳本到各個機器上。下發(fā)前判斷各臺機器是否已存在訓練腳本,如果腳本已存在,則停止下發(fā)命令。
圖4:pssh
訓練腳本開始工作:首先讀取日志,通過正則進行英文分詞(英文文本可通過NLTK庫分詞,中文文本可通過JIEBA分詞進行切分,在這里選擇最簡單的PYTHON自帶的RE模塊根據(jù)特殊符號進行切分),統(tǒng)計總詞數(shù),并計算每個單詞的詞頻。按詞頻排序將單詞以二進制形式寫入TOP模型文件,詞頻寫入CP模型文件,如圖5所示。
警告:文件命名最好以服務角色+文件路徑的方式命令,否則在后續(xù)讀取的時候可能會沖突。
圖5:文件命名
2.3 日志分析
定時任務啟動,同訓練過程初始化一樣,首先判斷各臺機器是否存在分析腳本,如若不存在,進行下發(fā)命令。
分析腳本開始工作:首先讀取日志,區(qū)別于日志訓練,分析腳本會根據(jù)前端配置的監(jiān)控周期進行選取(比如監(jiān)控周期為30分鐘,則分析腳本會選取當前時間至30分鐘之前的日志進行分析)。同訓練腳本一樣,讀取日志后,進行文本分詞,計算詞數(shù),統(tǒng)計詞頻。讀取模型文件,根據(jù)不同的算法(算法這塊在文章第三部分會單獨進行講述),計算算法權重值。對算法權重值進行閾值判斷,超過閾值,會判斷日志異常信息并從日志文件獲取。分析結束,最后把產(chǎn)品、服務、服務角色、日志文件、日志級別(ERROR\INFO)、算法值、日志錯誤詳情、監(jiān)控時間等監(jiān)控數(shù)據(jù)進行入庫,并在前端頁面進行展示,如圖6所示。
圖6:日志分析
2.4 模型優(yōu)化
訓練模型初始化的弊端在于無法手動去打標簽(正常\異常),所以對于初始化后的模型文件肯定不能是一個完全正常的模型,需要后續(xù)不斷的去優(yōu)化。
定時任務啟動:還是一樣的流程,完成讀取文件、分詞等工作后,生成的模型文件與源模型文件對比,對比方法與算法相同,閾值比分析閾值更低,低于閾值后,單詞詞頻字典進行合并,按次序排序后分別寫入源模型文件。至此,整個日志過程完成閉環(huán)操作。
2.5 日志巡檢
日志巡檢是對自身系統(tǒng)運行狀況的監(jiān)控,環(huán)繞整個閉環(huán)操作。日志訓練、分析、模型優(yōu)化通過定時任務去驅動,日志巡檢對每一步操作過程進行成功判斷,并對異常的操作進行原因分析,相關數(shù)據(jù)存儲入庫,并在前端進行展示,如圖7所示。
圖7:日志巡檢
3. 算法邏輯
運維大腦所開發(fā)的算法借鑒了貝葉斯和文本相似度兩大算法,以傳統(tǒng)的自然語言處理方式對文本進行分析。
3.1 分詞方式兩種常用方式:結巴分詞 和 nltk庫分詞
結巴分詞適用于中文分詞,分詞原理為:
①基于Trie樹結構實現(xiàn)高效的詞圖掃描,生成句子中漢字所有可能成詞情況所構成的有向無環(huán)圖(DAG)。
②采用動態(tài)規(guī)劃查找最大概率路徑, 找出基于詞頻的最大切分組合。
③對于未登錄詞,采用了基于漢字成詞能力的HMM模型,使用了Viterbi算法
nltk庫只能用于英文分詞,除此以外還可用于詞性標注和文本分析。
個人認為英文分詞以空格或部分特殊符號進行切分即可:re.split()。
3.2 TF-IDF
TF-IDF是Term Frequency-Inverse Document Frequency的縮寫,即詞頻-逆文檔頻率,用來刻畫一個詞語在某篇文檔中重要程度,也就是說是否可以用該詞語來代表某篇文檔的主要內(nèi)容。
- TF表示詞頻。給定幾個關鍵詞,在某篇文檔中出現(xiàn)的次數(shù)最高者,則說明該文檔與出現(xiàn)次數(shù)最高的詞語關系最密切。用詞語出現(xiàn)的次數(shù)除以文檔的總詞匯數(shù),就是TF,當然此處在統(tǒng)計文檔總詞匯時,把類似于“了”、“的”、“地”、“即”等詞語排除在外不予考慮。引入詞頻后,則某個詞的詞頻越高,該文檔與其關系也就越大。
TF計算公式為: TF = 詞語在文檔中出現(xiàn)的次數(shù) / 文檔詞語次數(shù)
- IDF表示逆文檔頻率。如果一個詞語在某篇文檔中出現(xiàn)的TF高,但是在語料庫的其它文檔中出現(xiàn)的次數(shù)少,則說明該詞語對于文檔分類具有重要作用,因此引入IDF來刻畫此項數(shù)據(jù),其值越大,說明該詞語對于語料庫來說具有越好的區(qū)分能力。如果某個詞語在每篇文檔里均出現(xiàn),且出現(xiàn)的次數(shù)很接近,則該詞語用來區(qū)分文檔時效果便不好。
IDF計算公式為: IDF = log(語料庫文檔總數(shù)/包含某詞語的文檔數(shù)+1)
- TF-IDF 值越大說明某個詞語用類識別文檔的區(qū)分度便越大。
- TF-IDF計算公式為: TF * IDF
3.3 文本相似度
Latent Semantic Indexing(LSI)從文本潛在的主題進行分析。LSI是概率主題模型的一種,另一種常見的是LDA,核心思想是:每篇文本中有多個概率分布不同的主題;每個主題中都包含所有已知詞,但是這些詞在不同主題中的概率分布不同。LSI通過奇異值分解的方法計算出文本中各個主題的概率分布,嚴格的數(shù)學證明需要看相關論文。假設有5個主題,那么通過LSI模型,文本向量就可以降到5維,每個分量表示對應主題的權重。
可參考文后資料[1]了解詳情。
總結下文本相似度和貝葉斯算法的處理過程:
①使用nltk庫分詞將日志文本切割。
②建立詞袋模型。
③建立TF-IDF模型。
④構建一個query文本,確認主題,利用詞袋模型的字典將其映射到向量空間。
⑤構建LSI模型,設置主題數(shù)為2(ERROR、INFO)。
⑥計算文本相似度。
①使用nltk庫分詞將日志文本切割。
②對處理之后的文本開始用TF-IDF算法進行單詞權值的計算。
③去掉停用詞。
④貝葉斯預測種類。
運維大腦日志分析算法包括:
weight = x * w
x : 驗證集top10新出現(xiàn)個數(shù)
w : 單個詞權重值 0.1
weight = x / w
x : 詞頻變化超過0.02數(shù)
w : 詞頻變化總數(shù)
weight = x / w
x:關鍵詞日志行數(shù)
w:日志總行數(shù)
weight = x * w
x:異常日志行數(shù)
w:0.1
開發(fā)思路:
①獲取日志k:v 求v平均值 報錯num模型。
②對比新日志v值。
4. 總結
本期給大家介紹了封神系統(tǒng)運維大腦模塊的相關知識,分享了機器學習中兩個常用的文本分析算法。目前運維大腦所能達到的效果是可以把日志中報錯進行識別并展示,但是我們的最終目標是可以識別出故障,雖然普通的報錯可能對平臺并沒有太大的影響,但是頻繁的報警并不利于運維工作的開展。
關于運維大腦暫時就介紹這么多,當前也確實存在一定問題,待后續(xù)完善后會再跟大家介紹,然后如果同學有更好的算法或者思路,歡迎討論!
接下來的文章會陸續(xù)給大家介紹封神的其他模塊,包括實時告警、運維大盤、報表分析、數(shù)據(jù)網(wǎng)關、妲己紂王、時序數(shù)據(jù)庫等相關知識,敬請期待!
參考文章
[1] python文本相似度計算:https://www.jianshu.com/p/edf666d3995f
我們是阿里云智能全球技術服務-SRE團隊,我們致力成為一個以技術為基礎、面向服務、保障業(yè)務系統(tǒng)高可用的工程師團隊;提供專業(yè)、體系化的SRE服務,幫助廣大客戶更好地使用云、基于云構建更加穩(wěn)定可靠的業(yè)務系統(tǒng),提升業(yè)務穩(wěn)定性。我們期望能夠分享更多幫助企業(yè)客戶上云、用好云,讓客戶云上業(yè)務運行更加穩(wěn)定可靠的技術,您可用釘釘掃描下方二維碼,加入阿里云SRE技術學院釘釘圈子,和更多云上人交流關于云平臺的那些事。
原文鏈接:https://developer.aliyun.com/article/783233?
版權聲明:本文內(nèi)容由阿里云實名注冊用戶自發(fā)貢獻,版權歸原作者所有,阿里云開發(fā)者社區(qū)不擁有其著作權,亦不承擔相應法律責任。具體規(guī)則請查看《阿里云開發(fā)者社區(qū)用戶服務協(xié)議》和《阿里云開發(fā)者社區(qū)知識產(chǎn)權保護指引》。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,填寫侵權投訴表單進行舉報,一經(jīng)查實,本社區(qū)將立刻刪除涉嫌侵權內(nèi)容。總結
以上是生活随笔為你收集整理的封神系统-运维大脑的日志检测的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 云原生是企业数字创新的最短路径
- 下一篇: 爱奇艺大数据生态的实时化建设