呂垚 向華偉 王林 何映軍
摘 要:云南電網有限責任公司信息中心(以下簡稱云南電網公司)擁有多個不同廠商IT監控系統,由于運維監控數據沒有統一的標準和規范,導致監控數據的利用率不高,尤其是各種硬件設備、網絡、中間件和數據庫等指標數據存在時間序列異常等問題,對監控告警和分析服務造成了很大的影響,通過基于有監督學習算法和無監督學習算法相結合的運維監控數據治理技術研究,實現IT運維監控數據的標準化和規范化,提高了IT運維監控數據的質量,為運維監控數據的關聯分析、根因分析和告警提供有力的支撐,從而實現云南電網公司IT端到端的全鏈路監控能力。
關鍵詞:有監督算法;無監督算法;運維監控;數據治理
中圖分類號:TP311.13 文獻標識碼:A 文章編號:1671-2064(2019)02-0040-02
0 引言
云南電網公司IT運維監控有多個IT監控系統。但每個系統相對獨立,并且數據種類繁多和數據格式不統一,存在網絡數據、應用性能數據、機房數據、服務器數據、平臺性能數據、數據庫性能數據和終端數據等,存在著數據分散、數據量大和數據標準和規范不統一等特點,造成數據共享困難等實際問題,導致運維監控數據的開發利用滿足不了運維監控業務的需要。通過基于有監督學習算法和無監督學習算法相結合的運維監控數據治理技術研究,從數據采集、治理、存儲和分析服務四個步驟分析處理監控數據,重點闡述了結合了機器學習算法的數據治理技術和方法,實現了數據質量的提高。
1 機器學習算法
本文涉及到的機器學習算法分為有監督學習算法和無監督學習算法,根據運維監控數據的特點,采用One Class SVM算法和Random Forest相結合的方法來處理數據,One Class SVM算法特點是不需要人工干預,但是可能導致和實際不匹配的結果,Random Forest可以不斷標注樣本,使得結果更加準確,需要人工干預,所以結合兩種算法的優點來實現數據的處理,具體兩種算法如下:
1.1 One Class SVM算法
One Class SVM由SVM算法演化而來,為了正確應用One Class SVM,簡單介紹SVM的主要原理:在線性可分條件下直接進行分箱,如果是在線性無法分解的情況,通過非線性關系映射,從低維線性不可分解的樣本變為輸出空間的高維特征空間,進而達到使其線性可分的目的,最后對高維特征空間采用線性算法,并且對所有樣本的非線性特征樣本進行線性分析[1]。
One Class SVM屬于無監督算法使用了超平面的思想,適用于連續數據的異常檢測和對樣本進行一定比例的篩選,可以尋找高維平面區分正常點與異常點。本文利用One Class SVM異常值檢測、解決極度不平衡數據,公式如下:
min||w||2+ εi-ρ subject to
(w*Φ(xi))≥ρ-εi i=1,2,…,1εi≥0
1.2 Random Forest
隨機森林由多棵CART(Classification And Regression Tree)構成的。對于CART每一棵樹,存在訓練集中的樣本頻繁多次出現在一棵樹的訓練集中,當然也存在從未出現在一棵樹的訓練集中。當訓練某一棵樹的節點時,選用特征值是從所有特征中根據預先設定比例隨機地無放回的抽取的,設總的特征數量為M,占比分別是sqrt(M),1/2sqrt(M),2sqrt(M),隨機森林(Random Forest)的訓練過程如下:
(1)訓練集S,測試集T,特征維數F。首先確定各個參數:即將用到的CART的數量t,每一棵的深度d,每個節點特征數量f,停止前提:節點上最少樣本數s,節點上最少的信息增益m,相對于序號為1-t棵樹,i=1-t。(2)從訓練集S中取出放回的抽取大小和S一樣的訓練集S(i),以此作為根節點的樣本,從根節點開始訓練。(3)假如在當前節點上滿足終止條件,就把當前節點設置為葉子節點,假如是分類問題,該葉子節點的可能輸出為當前節點樣本集合中數量最多一類c(j),概率P為c(j)當前樣本集的占比比;假如是回歸分析問題,可能輸出為當前節點樣本集各個樣本值的平均值。隨后不斷訓練其他節點。假如當前節點不能滿足終止條件,可以從F維特征中無放回的隨機選取f維特征向量。從f維特征向量,查找出分類效果最好的一維特征k及其閾值th,目前節點上樣本值的第k維特征小于th的樣本,劃分到左節點,另外劃分到右節點,不斷訓練其它剩余節點。(4)重復(2)(3)直到所有節點都訓練(標記為葉子節點不訓練)。(5)重復(2)、(3)、(4)直到所有CART都被訓練過。
2 整體實現
2.1 數據采集
數據來源于開源監控工具zabbix和其它廠家的監控數據以及各類日志數據,鑒于數據源和數據格式的多樣性,制定了數據采集的方法和步驟,支持結構化和非結構化數據的采集。對于非結構化數據、結構化數據及半結構化數據,通過選擇不同的采集模型,建立合適的數據采集策略[2]。下面介紹了兩種數據采集方法,一種是對各監控指標數據進行采集,另外一種對日志數據進行采集。
2.1.1 各監控指標數據源采集
對于監控數據根據數據源的格式,采用相應的分析方法,建立相應的數據模型,制定出合適的數據采集策略,硬件指標數據、網絡數據、中間件數據、數據庫性能數據和應用業務質量數據等。
2.1.2 日志采集
日志采集采用Flume和kafka相結合的方法進行日志采集,flume的數據采集模塊功能強大,兼容大多數的數據源,能夠減少開發量,kafka可以作為日志緩存的中間件,對flume起到補充作用。Flume是一個可靠性高和分布式的海量日志采集的系統,Flume支持在日志系統中定制各類數據發送方,用于收集數據;同時,Flume提供對數據進行簡單處理,并寫到各種數據接受方(可定制)的能力。由于flume采集數據的速度和數據處理的速度不一定同步,利用kafka作為數據緩沖中間件處理flume動作流數據。
2.2 數據治理
運維系統中通常是兩大類監控數據源是:指標數據和日志文本數據。指標數據大多數是時序數據,包括指標采集時間和對應指標的值;日志文本數據大多數是半結構化文本格式,如程序日志、中間件日志等。隨著運維系統規模的變大和數據格式復雜度的變高,各個運維監控系統產生數據量越來越大,運維人員很難從大量監控數據中查找數據質量問題。通過有監督學習算法和無監督學習算法相結合的運維監控數據治理技術的實現,可以自動、實時和精準地從監控數據中發現數據異常,并對異常數據進行處理,為后續的數據存儲和數據服務打下堅實的基礎[3]。
2.2.1 分析問題
運維監控數據的分析通常分為指標數據和日志數據,指標數據通常為時序數據,日志數據通常是結構化和半結構化的數據。運維監控數據異常通常分為數據源異常、單指標異常、多指標異常和日志數據異常。數據源有時會出現難以預測的結果,產生異常數據,這些異常數據往往會引起整個指標統計值的頻繁波動,使得統計結果不準確和用戶體驗不好。通常的運維監控系統會時常出現兩種情況:(1)單指標異常:如果時間閾值設置過高,會導致遺漏告警增多,如果時間閾值設置太低,告警太多引發告警風暴。(2)多指標異常:在運維過程中,單獨分析某個指標是正常,但是綜合多個指標來分析,往往就是異常的數據。有時單獨分析某個指標異常的,但是綜合多個指標來分析往往是正常的。
日志數據通常是在特定條件下觸發生成的(比如中間件停止服務、重新啟動服務和啟動服務),并符合一定的格式(半結構化文本)。傳統的日志檢測有兩種方式:根據日志級別(如一般、警告、重要)進行報警,往往告警級別設置不合適,不能夠滿足實際需求,導致數據準確性差;通過設置規則引擎,匹配日志中預先已經規定好的字符串進行匹配并報警,但該方法的局限性依賴人工經驗,只可以發現既定模式的異常,無法發現未知的異常。
2.2.2 處理問題
鑒于上述監控數據的問題,采取以下措施:針對單指標數據和日志數據,使用統計算法3-sigma和EWMA(指數加權移動平均)和機器學習結合方法處理這兩類數據,機器學習方法用到了上述有監督學習算法Random Forest和無監督學習算法One Class SVM。
2.2.3 解決問題
首先針對數據源的特點進行分類,先用統計算法3-sigma和EWMA(指數加權移動平均)模型實現數據的分類。3σ準則又稱為拉依達準則,如果一組檢測數據僅僅含有隨機誤差,計算處理并得出標準偏差,按既定概率統計,并指定一個區間在正態分布中σ代表標準差,μ代表均值。x=μ是坐標圖像的對稱軸。如果3σ分布在(μ-σ,μ+σ)中,概率為0.6827;如果3σ在(μ-2σ,μ+2σ)中,概率為0.9545;如果3σ分布在(μ-3σ,μ+3σ)中,概率為0.9973,結論:Y軸取值范圍幾乎全部集中在(μ-3σ,μ+3σ)區間內。
EWMA是指數加權移動平均值的控制圖。每個EWMA點都結合來自3-sigma分組。定制EWMA控制圖進而檢測過程中大小的偏移,每個EWMA點都根據自定義的加權因子結合了以前所有信息數據。通過更改使用的權重以及限制的s數量,構建該控制圖,控制圖可以檢測過程中所有數據大小的偏移。鑒于此,使用EWMA來監控正態3-sigma過程中的數據,得出偏離目標的較小偏移。算法表示:設計權重系數λ,0<λ<1,如果λ越大,則Y(t)越大,t-1時刻相應就越小。
EWMA(t)=λY(t)+(1-λ)EWMA(t-1) for t=1,2,…,n.
利用機器學習算法和統計算法相結合的方法去分類處理數據,使用統計算法和One Class SVM無監督算法過濾掉大量正樣本,為了使結果更加準確,對樣本庫進行人工標注,人工標注正負樣本,然后通過特征工程提取特征值,通過設置有監督算法Random Forest的參數進行訓練,從而實現數據質量的提高。
2.3 數據存儲與數據服務
數據存儲分為指標數據和日志數據,對于時間序列數據(性能指標),主要以時間維度進行查詢分析數據,選用主流的rrdtool時序數據庫;對于日志文件,數據需要進行實時全文檢索和分詞搜索,選用主流的ElasticSearch引擎。通過開發豐富、靈活的API接口實現數據服務,前端web展示調用API即可。
3 結語
本文通過無監督學習算法One Class SVM和有監督學習算法Random Forest,并結合統計算法3-sigma和EWMA實現了指標數據和日志數據質量的提高,為實現IT端到端的監控能力打下堅實基礎。
參考文獻
[1] 簡宋全,李青海,黃心蕊,秦于欽.基于One Class SVM的電信用戶流失情況研究[J].現代計算機,2017(29):32-34.
[2] 秦燕,周湘貞.實例分析基于異構數據源的XML數據轉換方法[J].西南師范大學學報(自然科學版),2018(3):77-82.
[3] 韋建杰.云計算環境下的數據采集模型分析[J].信息通訊,2014(7):142.