背景介紹
日誌的預處理
日誌資料千差萬別,對於絕大部分演算法日誌資料無法直接用於演算法訓練,需要通過日誌解析、特徵提取將日誌轉換為特徵矩陣,特徵矩陣作為演算法的輸入。
日誌資料雖不易區分,但總體上可分為可變部分和不變部分,日誌解析就是就是將日誌的可變部分與不變部分進行區分,並將原始日誌轉換為日誌事件。
異常檢測演算法
日誌異常檢測演算法主要根據有監督與無監督分為兩大類。我們將分別介紹這二類演算法。
3.1 有監督演算法
a.邏輯回歸
邏輯回歸是簡單的二分類模型,具有較強的解釋性,被廣泛的應用於分類任務。邏輯回歸模型計算輸入為正例的概率,概率高的判為正例。通過結合多個邏輯回歸模型可以將二分類任務擴充套件為多分類任務。邏輯回歸的圖形如下:
圖a 邏輯回歸模型
邏輯回歸是有監督的模型,將處理後的特徵矩陣以及標記作為模型的輸入,得到訓練後的模型,用此模型**新出現的特徵向量,以此判斷特徵向量是否為異常的,進而判斷日誌異常。
b.決策樹
決策樹是乙個樹狀結構,符合人一般的判斷的過程,根據事項的重要次序依次判斷決策。其每個非葉節點表示乙個特徵屬性上的測試,每個分支代表這個特徵屬性在某個值域上的輸出,而每個葉節點存放乙個類別。決策樹圖形如下:
圖b 決策樹模型
特徵矩陣每一列作為乙個屬性,事件次數作為屬性值,特徵矩陣和標示列作為決策樹模型的輸入,決策樹可以根據多種指標進行屬性分類的次序判斷。得到的決策樹模型即可用來日誌異常的判斷。
c.svm
支援向量機是一類監督學習方式對資料進行二元分類的廣義線性分類器,其決策邊界是對學習樣本求解的最大邊距超平面。
圖c 支援向量機模型
支援向量機就是找到乙個將樣本分開的乙個超平面,平面的二側分別對應各自的類別。
以上三種都為監督演算法,監督演算法需要對資料進行標註,標註需要進行大量的人力勞動,往往在實際的使用中具有侷限,不太容易廣泛的應用於日誌檢測,因此無監督的學習方法具有一定的優勢,接下來繼續介紹二種無監督的演算法。
3.2 無監督演算法
a. 聚類
聚類試圖將資料集中的樣本劃分為若干個不相交的子集,每個子集對應於乙個潛在的子集。聚類的結果應盡量簇內盡量相似,簇間相似性低。聚類有二類指標,一是外部指標,另一種是內部指標。我們可以根據實際問題,合理選擇具體的指標來進行訓練任務。當選取好了指標,我們就可以根據指標計算對應的「距離」,完成對應的分類任務。
b. pca
主成分分析是一種常用的降維方法。通過pca對高維的資料進行降維,將高維的資料投影到低維的k個分量,變換後的低維分量可以保留高維資料的特徵。通過pca獲得二個子空間,即正常空間和異常空間,正常空間又pca計算後得到的k維構成,異常空間由捨棄的的維度構成。對於新的特徵向量,計算此向量到異常空間的距離,距離過長即判斷異常。
其他
以上方式都是基於將日誌轉換為事件計數再通過機器學習進行檢測,事件計數一方面需要對日誌進行大量的預處理工作,另一方面事件計數也只是包含了事件見關聯的資訊,對於其他異常不能進行檢測。接下來我們將介紹二種不基於事件計數方式處理的日誌異常檢測演算法。
a.word2vec和som演算法
word2vec是乙個可以將詞語轉換為詞向量的工具,即將文字進行向量化同時很好的保持文字之間的語義。word2vec基於詞進行向量轉換,提供了更細粒度的日誌分析基礎,提供不同的日誌預處理方式。
將文字進行了向量化就可以進行下一步的檢測演算法的應用。自組織網路(som)是一種無監督的學習方法,是一種基於神經網路的聚類演算法。som是一種單層的神經網路,僅包含輸入層和輸出層。som網路接收外界輸入模式時,將會分為不同的對應區域,各區域對輸入模式有不同的響應特徵,而這個過程是自動完成的。其特點與人腦的自組織特性類似。som的目標是用低維(通常是二維或三維)目標空間的點來表示高維空間中的所有點,盡可能地保持點間的距離和鄰近關係(拓撲關係)。
圖d 自組織網路模型
b. lstm
長短期記憶是一種特殊的rnn,主要是為了解決長序列訓練過程中的梯度消失和梯度**問題。簡單來說,就是相比普通的rnn,lstm能夠在更長的序列中有更好的表現。
圖e lstm網路模型
deeplog是一種基於lstm網路的日誌異常檢測演算法,deeplog發表於2023年。deeplog同樣不是基於事件計數的日誌異常檢測,deeplog訓練的過程基於不包含異常的日誌資料進行訓練。deeplog首先識別日誌的不變部分作為key,和可變部分作為引數,deeplog會對不變部分和可變部分都進行學習,作為後續異常檢測的基礎。同時deeplog還會通過日誌對系統的實際工作流進行學習,同樣作為後續日誌異常檢測的參考。deeplog日誌檢測就是通過模式檢測、引數檢測以及工作流檢測三種方式,相比於以上的幾種演算法要更加強大,適應的範圍要更廣泛。
總結
本文總結了七種用於日誌異常檢測的方式,大體上可以分為二類,一類是基於預處理後得到的日誌事件計數進行檢測的方式,另一類是以日誌原本狀態的直接處理的方式。這七種方式既有監督學習也有無監督學習演算法,既有經典的機器學習演算法也有深度網路,希望介紹的這七種演算法能幫助你解決遇到的問題,啟發新的日誌檢測方式。
作者介紹
李旭光 中國農業銀行研發中心
為更高效運維的研發人員,及時響應一線運維需求,積極探索ai應用於運維,不懈追求運維研發的更高境界。
一文了解Flink State Backends
當我們使用flink進行流式計算時,通常會產生各種形式的中間結果,我們稱之為state。有狀態產生,就必然涉及到狀態的儲存,那麼flink中定義了哪些形式的狀態儲存呢,下面一一給大家介紹一下。顧名思義,memorystatebackend狀態後端是將狀態資料以object的形式存放於j a heap...
一文了解Perl語言
perl,一種功能豐富的計算機程式語言,執行在超過100種計算機平台上,適用廣泛,從大型機到便攜裝置,從快速原型建立到大規模可擴充套件開發。1 perl最初的設計者為拉里 沃爾 larry wall 於1987年12月18日發表。現在的版本為perl 6,於2015年12月25日更新。perl借取了...
一文了解Perl語言
perl,一種功能豐富的計算機程式語言,執行在超過100種計算機平台上,適用廣泛,從大型機到便攜裝置,從快速原型建立到大規模可擴充套件開發。1 perl最初的設計者為拉里 沃爾 larry wall 於1987年12月18日發表。現在的版本為perl 6,於2015年12月25日更新。perl借取了...