AIOps挑戰賽亞軍新華三團隊方案分享
作者|H3C: 李富 葛帥 曹海峰
編輯|Vicky
摘要
傳統對於監控KPI數據監控通常是基於規則,根據預先設定的閾值來報警, 這種方法雖然簡單,但適應性不好,容易出現大量誤告漏告,給實際運維工作帶來巨大的挑戰。為此,本文開發了基於機器學習的KPI異常檢測新方法。該方法以邏輯回歸模型、小波分析模型、隨機森林模型和BiLSTM模型為基礎模型,通過加權綜合的方式對異常點進行識別。最終在第一屆AIOps競賽中,該方法以F1-Score為0.771397的得分,位列決賽第二。
關鍵字
異常檢測, 序列數據,流數據,實時檢測,KPI
1.簡介
1.1 背景介紹
隨著互聯網,特別是移動互聯網的發展,WEB服務已經深入到各個領域,WEB服務的穩定性主要靠運維來保障,運維人員通過監控各種各樣的運維KPI指標來判斷服務是否穩定。然而,實際應用中的運維指標如CPU使用率、內存使用率、磁碟IO等這些指標有成百上千條,單靠人的力量已經無法進行手動監控,因而需要藉助於一些自動化的工具或者程式來輔助進行運維監控。本文提出的基於機器學習的KPI異常檢測模型的具有模塊化,普適及高效的特點,適用於在線實時的KPI異常檢測,可有效地降低運維人員的工作量。
1.2 數據探索
對於AIOps官方提供的預賽數據集,本文對數據進行了KPI日均值分析、KPI相似性分析、宏觀趨勢分析、異常細節分析以及多尺度小波分析。通過對比,可以發現部分KPI具有一些相似的形態和異常點特性,不同KPI之間差異可以非常大。單一的模型不能一勞永逸地適用於所有KPI的異常檢測。
圖1.1 數據探索
2.總體設計
圖2.1是基於加權綜合的異常檢測演算法的基本框架,主要分為離線模型訓練和在線檢測兩部分。本文嘗試了多種異常檢測模型,權衡比賽時間和模型的有效性後,最終選取了邏輯回歸模型、小波分析模型、隨機森林模型和雙向LSTM神經網路模型作為加權模型的基本模型,在實時單點檢測時,通過加權投票的方式來進行異常點的確定。
圖2.1 演算法框架
3.詳細設計
3.1 數據預處理
數據預處理主要進行三項內容:
(1)異常數據剔除。使用Grubbs準則,異常點並不一定是官方標記的異常點。
(2)數據標準化處理。為生成不同的特徵,本文有選擇地使用Z-score和Min-Max方法對數據進行標準化和歸一化。
(3)缺失值處理。在嘗試了剔除方法、均值方法、插值方法等補全方法後,最終選擇均值進行補全。
3.2 特徵提取
特徵提取是模型訓練前最關鍵的一個內容,特徵提取的好壞決定了機器學習的上限。本文參考了裴丹教授在Opprentice框架中提出的特徵提取方法,同時借鑒時序特徵提取方法,最終選擇了原始值特徵、統計特徵、擬合特徵和小波分析特徵。通過調整時間窗大小以及提取方法的參數,本模型共提取了61個時序特徵。部分特徵的提取效果見圖3.2。
圖3.1 特徵提取匯總
圖3.2 特徵示例
對於訓練集,每個數據點都有61維度的特徵可被用於模型訓練,在線檢測階段,每獲取到一個數據點需要利用歷史窗口數據計算當前點的61維度特徵。
3.3 數據均衡
本賽題的KPI異常檢測的樣本數據中,正負樣本極度不均衡,對模型的訓練效果會產生較大影響,因此在進行神經網路模型等模型的訓練前,需要對樣本數據進行均衡處理。
本文同時採取了兩種數據均衡方案,一是對非異常數據進行欠採樣(隨機抽樣方法),二是對異常點數據進行過採樣,主要使用了SMOTE和ADASYN方法。這樣確保了輸入模型的樣本數據的正負樣本比例為1:1。
在過採樣方案中,本文並不是對所有的異常樣本作為過採樣的初始樣本,而是剔除了特徵不明顯的異常數據點,比如圖3.3中水平段的異常數據點,按照比賽要求,只要異常區段的前7個點中有一個異常點被正常識別,則整個區段將被識別,而如果僅僅識別了第7個點以後的數據點,區段將被標記為未識別,第7個點之後的異常識別對於f-score的提升是不起作用的,反而可能因為加入了新的特徵導致錯誤率的上升。所以本文在訓練時,異常區段的第8個點及以後的樣本數據點不納入模型訓練。
圖3.3 異常點數據示例
3.4 基於邏輯回歸的異常檢測
邏輯回歸是在線性回歸的基礎上,套用了sigmoid函數完成線性到非線性的轉變,被廣泛的應用於擬合和分類。從判斷結果看KPI異常檢測也是一個二分類問題,事實表明,只要特徵提取準確,使用邏輯回歸模型也能達到很好的效果,並且簡單高效容易理解。
本文調用了R語言中的廣義線性模型GLM進行模型訓練和預測。在閾值的選擇問題上,常見的是通過ROC(Receiver Operating Characteristic)曲線或者PRC(precision-recall curve)曲線確定閾值。ROC曲線可以在正負樣本分布變換的時候保持曲線不變,但是ROC曲線關注的準確率,與本賽題F1-Score最大的目標不相符。PRC曲線關注的是F1-score,準確率和召回率越接近,對應的F1-score最大,但在樣本分布極不均衡的情況下,PRC曲線無法很好反映出分類器的性能。最終,本文使用網格搜索方法確定分類閾值。本文利用決賽數據,對邏輯回歸模型的表現進行了回溯,模型在訓練集和測試集上的表現如圖3.4。按照官方標準,其在測試集的總得分是0.693049243。
圖3.4 決賽數據集上邏輯回歸異常檢測的得分
3.5 基於小波分析的異常檢測
小波分析在信號處理、圖像壓縮、模式識別等非線性科學領域得到了廣泛的應用。在時間序列研究中,主要用於消噪和濾波,並能將序列數據在常規尺度上無法被觀測到的特徵體現出來。與傅里葉分析不同,小波分析具有時-頻多解析度分析的功能。基於此,本文通過離散小波變換(DWT)將原始KPI序列分解成多個信號序列,並對分解後的序列進行重建。如圖3.5a,對原始序列進行5級小波分解,左邊為低頻信號(近似部分),右邊高頻信號(細節部分)。
圖3.5.a 小波5級分解
圖3.5.b 小波分解異常點分布
從圖3.5b中可以看出,異常點的分布在細節序列中分布較明顯,異常點以較大概率落在了細節部分的高頻成分。從而,可以將KPI時間序列的異常點檢測轉化為細節序列的異常點檢測。
比賽要求實現的是KPI在線異常檢測,因此本文通過選取合適時間窗,對時間窗內的數據進行小波分解和重構,提取細節部分序列,並採用Grubbs準則對時間窗內的異常點進行識別,如果當前時刻點在異常點集合中,就認為當前時刻檢測異常。
在小波分析過程中,小波基函數、信號擴展模式、小波分解的層數以及時間窗的大小選擇將會影響最終的異常檢測效果。為此,本文在KPI訓練中,以訓練集得分最高為目標,通過網格搜索的方法對每條KPI提取最佳的小波分析參數,並用於在線檢測。
圖3.6 小波分析參數優化
圖3.7 決賽數據集上小波分析異常檢測的得分
3.6 基於隨機森林的異常檢測演算法
隨機森林是一種組合分類器,其基本構成是決策樹,不僅可以用於數據清洗,也可以拓展到分類與識別,並且能有效地解決數據不平衡問題。本文使用python提供隨機森林分類器RandomForestClassifier進行異常點檢測。數據輸入源是由特徵提取演算法提取的部分特徵,由於比賽時間限制,我們並沒有對隨機森林的樹數目、最大深度、最大特徵數進行過多的優化,隨機森林還有很大的提升空間。
圖3.8 決賽數據集上隨機森林異常檢測的得分
3.7 基於BiLSTM神經網路的異常檢測演算法
本文使用雙向LSTM神經網路進行異常檢測, LSTM是循環神經網路的一個優秀的變種,繼承了大部分循環模型的特性,同時解決了梯度消失問題。神經網路可以自動學習特徵與目標之間的關聯關係,LSTM非常適合用於處理與時間序列高度相關的問題;
雙向LSTM有更好的性能表現,我們使用其構建異常檢測模型,難點在於超參數的有效選擇,由於計算資源的問題,我們選擇了人工優化方法,在數據覆蓋較全的場景下訓練和測試有較好的表現。
圖3.9 BiLSTM神經網路結構
圖3.9 決賽數據集上BiLSTM異常檢測的得分
4.模型綜合
以上四個模型在不同KPI上表現各異,為了獲取更加準確的異常檢測,本文採用加權投票模型對四個模型進行了綜合。
其中:
為各模型權重,取值0~1,為模型訓練集得分
各模型異常檢測結果,取值0或1
綜合預測結果,如果P
對於權重確認,分兩種情形考慮:
(1)存在得分大於0.5的模型的條件下,若某個模型的訓練集得分小於0.5,則對應的權重置為0
(2)若所有模型的得分小於0.5,則取4個模型中得分最高的作為預測模型,對應的其他模型的權重置為0
回溯決賽結果,四個模型的單模型得分都在00.64~0.66,但是綜合得分卻達到了0.771397,可見,模型綜合取得了一定的成效,能顯著減少誤判。
表4.1 模型得分對比
5.總結與評價
本文在進行大量異常檢測模型嘗試後,最終選擇了邏輯回歸模型、小波分析模型、隨機森林模型和雙向LSTM神經網路模型這四種模型進行初步的異常檢測,由於KPI的多樣性,這四種模型的表現不一,最終我們使用綜合加權方法對四個模型進行集成,從結果看,模型的集成取得了顯著的效果。KPI異常檢測模型多種多樣,在實際應用場景中,很難找到或者開發出一種普適的異常檢測解決方案,因而,本文綜合了當前效果較好的異常檢測方法,得到了一種比較通用的異常檢測方案。
本檢測模型的各子模型也可以單獨工作或協作工作,亦可以可插拔方式增加或減少;另外比賽時間有限,很多工作還未完全展開,本檢測模型還有不少提升潛力,如通過自動化進行特徵優選,通過神經網路優化選擇超參數等進而優化模型,通過改進模型集成策略優化集成表現。
※清華AIOps新作:蒙特卡洛樹搜索定位多維指標異常
※錯誤日誌不規範?聚類可以幫上你
TAG:智能運維前沿 |