封神-運維大腦 | 日誌檢測工具

簡介: 封神-運維大腦 | 日誌檢測工具前端

0.png

1. 背景目標

阿里雲應用業務有問題,雲平臺監控能夠發現問題,但並不能定位到問題根本緣由,運維大腦監控底層日誌,可快速定位問題緣由,幫助現場運維同窗解決問題。
運維大腦融合SRE方法,專一於深度運維的技術服務領域,幫助客戶與現場,加強租戶視角運維監控能力、提高平臺視角問題定位效率、增強雙維度容量性能運營能力。濃縮TAM現場運維經驗,多樣化地、標準化地、智能化地向客戶輸出運維能力與技術服務。算法

2. 開發設計

1-1.png
圖1:流程圖數據庫

2.1 日誌配置

如圖2所示,可經過運維大腦前端頁面配置須要監控的日誌,可單獨新增也可批量導入。配置信息包括產品、服務、服務角色、日誌類型(DOCKER 物理機 VM)、日誌路徑、監控週期、算法(ML-TOP ML-CP ML-KEY)、狀態(開啓關閉)。運維

2.jpg
圖2:日誌配置ssh

2.2 日誌訓練

前端配置日誌信息存儲到後臺數據庫,後臺程序經過產品、服務、服務角色等條件查詢相應的主機名。機器學習

3.jpg
圖3:數據庫工具

定時任務啓動,根據獲取到的主機名經過PSSH命令下發訓練腳本到各個機器上。下發前判斷各臺機器是否已存在訓練腳本,若是腳本已存在,則中止下發命令。性能

4.jpg
圖4:pssh學習

訓練腳本開始工做:首先讀取日誌,經過正則進行英文分詞(英文文本可經過NLTK庫分詞,中文文本可經過JIEBA分詞進行切分,在這裏選擇最簡單的PYTHON自帶的RE模塊根據特殊符號進行切分),統計總詞數,並計算每一個單詞的詞頻。按詞頻排序將單詞以二進制形式寫入TOP模型文件,詞頻寫入CP模型文件,如圖5所示。
警告:文件命名最好以服務角色+文件路徑的方式命令,不然在後續讀取的時候可能會衝突。優化

5.jpg
圖5:文件命名

2.3 日誌分析

定時任務啓動,同訓練過程初始化同樣,首先判斷各臺機器是否存在分析腳本,如若不存在,進行下發命令。
分析腳本開始工做:首先讀取日誌,區別於日誌訓練,分析腳本會根據前端配置的監控週期進行選取(好比監控週期爲30分鐘,則分析腳本會選取當前時間至30分鐘以前的日誌進行分析)。同訓練腳本同樣,讀取日誌後,進行文本分詞,計算詞數,統計詞頻。讀取模型文件,根據不一樣的算法(算法這塊在文章第三部分會單獨進行講述),計算算法權重值。對算法權重值進行閾值判斷,超過閾值,會判斷日誌異常信息並從日誌文件獲取。分析結束,最後把產品、服務、服務角色、日誌文件、日誌級別(ERRORINFO)、算法值、日誌錯誤詳情、監控時間等監控數據進行入庫,並在前端頁面進行展現,如圖6所示。

6.jpg
圖6:日誌分析

2.4 模型優化

訓練模型初始化的弊端在於沒法手動去打標籤(正常異常),因此對於初始化後的模型文件確定不能是一個徹底正常的模型,須要後續不斷的去優化。
定時任務啓動:仍是同樣的流程,完成讀取文件、分詞等工做後,生成的模型文件與源模型文件對比,對比方法與算法相同,閾值比分析閾值更低,低於閾值後,單詞詞頻字典進行合併,按次序排序後分別寫入源模型文件。至此,整個日誌過程完成閉環操做。

2.5 日誌巡檢

日誌巡檢是對自身系統運行情況的監控,環繞整個閉環操做。日誌訓練、分析、模型優化經過定時任務去驅動,日誌巡檢對每一步操做過程進行成功判斷,並對異常的操做進行緣由分析,相關數據存儲入庫,並在前端進行展現,如圖7所示。

7.jpg
圖7:日誌巡檢

3. 算法邏輯

運維大腦所開發的算法借鑑了貝葉斯和文本類似度兩大算法,以傳統的天然語言處理方式對文本進行分析。

3.1 分詞方式兩種經常使用方式:結巴分詞 和 nltk庫分詞

結巴分詞適用於中文分詞,分詞原理爲:
①基於Trie樹結構實現高效的詞圖掃描,生成句子中漢字全部可能成詞狀況所構成的有向無環圖(DAG)。
②採用動態規劃查找最大機率路徑, 找出基於詞頻的最大切分組合。
③對於未登陸詞,採用了基於漢字成詞能力的HMM模型,使用了Viterbi算法
nltk庫只能用於英文分詞,除此之外還可用於詞性標註和文本分析。
我的認爲英文分詞以空格或部分特殊符號進行切分便可:re.split()。

3.2 TF-IDF

TF-IDF是Term Frequency-Inverse Document Frequency的縮寫,即詞頻-逆文檔頻率,用來刻畫一個詞語在某篇文檔中重要程度,也就是說是否能夠用該詞語來表明某篇文檔的主要內容。

  • TF表示詞頻。給定幾個關鍵詞,在某篇文檔中出現的次數最高者,則說明該文檔與出現次數最高的詞語關係最密切。用詞語出現的次數除以文檔的總詞彙數,就是TF,固然此處在統計文檔總詞彙時,把相似於「了」、「的」、「地」、「即」等詞語排除在外不予考慮。引入詞頻後,則某個詞的詞頻越高,該文檔與其關係也就越大。

    TF計算公式爲: TF = 詞語在文檔中出現的次數 / 文檔詞語次數

  • IDF表示逆文檔頻率。若是一個詞語在某篇文檔中出現的TF高,可是在語料庫的其它文檔中出現的次數少,則說明該詞語對於文檔分類具備重要做用,所以引入IDF來刻畫此項數據,其值越大,說明該詞語對於語料庫來講具備越好的區分能力。若是某個詞語在每篇文檔裏均出現,且出現的次數很接近,則該詞語用來區分文檔時效果便很差。

    IDF計算公式爲: IDF = log(語料庫文檔總數/包含某詞語的文檔數+1)

  • TF-IDF 值越大說明某個詞語用類識別文檔的區分度便越大。
  • TF-IDF計算公式爲: TF * IDF

3.3 文本類似度

Latent Semantic Indexing(LSI)從文本潛在的主題進行分析。LSI是機率主題模型的一種,另外一種常見的是LDA,核心思想是:每篇文本中有多個機率分佈不一樣的主題;每一個主題中都包含全部已知詞,可是這些詞在不一樣主題中的機率分佈不一樣。LSI經過奇異值分解的方法計算出文本中各個主題的機率分佈,嚴格的數學證實須要看相關論文。假設有5個主題,那麼經過LSI模型,文本向量就能夠降到5維,每一個份量表示對應主題的權重。
可參考文後資料[1]瞭解詳情。

總結下文本類似度和貝葉斯算法的處理過程:

  1. ML-LSI
    ①使用nltk庫分詞將日誌文本切割。
    ②創建詞袋模型。
    ③創建TF-IDF模型。
    ④構建一個query文本,確認主題,利用詞袋模型的字典將其映射到向量空間。
    ⑤構建LSI模型,設置主題數爲2(ERROR、INFO)。
    ⑥計算文本類似度。
  2. ML-BAYES
    ①使用nltk庫分詞將日誌文本切割。
    ②對處理以後的文本開始用TF-IDF算法進行單詞權值的計算。
    ③去掉停用詞。
    ④貝葉斯預測種類。

運維大腦日誌分析算法包括:

  1. ML-TOP
    weight = x * w
    x : 驗證集top10新出現個數
    w : 單個詞權重值 0.1
  2. ML-CP
    weight = x / w
    x : 詞頻變化超過0.02數
    w : 詞頻變化總數
  3. ML-KEY
    weight = x / w
    x:關鍵詞日誌行數
    w:日誌總行數
  4. ML-NUM
    weight = x * w
    x:異常日誌行數
    w:0.1
    開發思路:
    ①獲取日誌k:v 求v平均值 報錯num模型。
    ②對比新日誌v值。

4. 總結

本期給你們介紹了封神系統運維大腦模塊的相關知識,分享了機器學習中兩個經常使用的文本分析算法。目前運維大腦所能達到的效果是能夠把日誌中報錯進行識別並展現,可是咱們的最終目標是能夠識別出故障,雖然普通的報錯可能對平臺並無太大的影響,可是頻繁的報警並不利於運維工做的開展。
關於運維大腦暫時就介紹這麼多,當前也確實存在必定問題,待後續完善後會再跟你們介紹,而後若是同窗有更好的算法或者思路,歡迎討論!
接下來的文章會陸續給你們介紹封神的其餘模塊,包括實時告警、運維大盤、報表分析、數據網關、妲己紂王、時序數據庫等相關知識,敬請期待!

原文連接本文爲阿里雲原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索