1. 程式人生 > >微軟AIOps工作:時序資料與事件的關聯分析

微軟AIOps工作:時序資料與事件的關聯分析

導讀

網際網路公司記錄有大量的時序和事件資料,分析判斷這些時序和事件資料的關聯關係對運維工作(例如事件的診斷、根因分析等)有著很大的啟發和幫助。今天介紹一篇微軟在2014年SIGKDD會議上發表的論文《Correlating Events with Time Series for Incident Diagnosis》,文章主要研究的是事件(Event)和時序資料(Time Series data)間

介紹

動測量,這些資料主要分為時序資料和事件資料兩大類。時序資料指的是實值-時間序列(通常有固定的時間間隔),例如CPU使用率等;而事件資料指的是記錄了特定事件發生的序列,例如記憶體溢位事件等。為了保證產品的服務質量、減少服務宕機時間,從而避免更大的經濟損失,對關鍵的服務事件的診斷顯得尤為重要。實際的運維工作中,對服務事件進行診斷時,運維人員可以通過分析與服務事件相關的時序資料,來對事件發生的原因進行分析。雖然這個相關關係不能完全準確的反映真實的因果關係,但是仍然可以為診斷提供一些很好的線索和啟示。

那麼問題來了,如何自動的判斷事件和時序資料的關聯關係呢?

問題

本文中,作者將事件(E)和時序(S)資料相關關係問題轉化為兩樣本問題(two-sample problem),並使用鄰近演算法(nearest neighbor method)判斷是否相關。主要回答了三個問題:A.E和S之間是否存在相關關係?B.若存在相關關係,E和S的時間先後順序是什麼?E先發生,還是S先發生?C.E和S的單調關係。假設S(或者E)先發生,S的增加還是降低導致的E發生?如圖,事件為程式A和B的執行,時序資料為CPU使用率。可以發現,事件(程式A的執行)與時序資料(CPU使用率)存在相關關係,並且是程式A執行後CPU使用率發生升高的變化。

資料

方法

文章的演算法架構主要分為三部分,來分別解決相關性、時間先後順序和單調性三個問題。接下來將對這三個部分進行詳細介紹。

架構

相關性

文章將相關性的判斷轉化為兩樣本問題,兩樣本假設檢驗的核心是判斷兩個樣本是否來自相同的分佈。首先選取事件發生前(或者後)對應的N段長為k的時序樣本資料,用A1表示。樣本組A2則是在時間序列上隨機選取一系列長度為k的樣本資料。樣本集為A1並上A2。如果E和S相關,則A1和A2的分佈不同,否則分佈相同。怎樣來判斷A1和A2的分佈是否相同?我們看下面這個例子:

資料

上圖中樣本0-4來自樣本組A1,5-9屬於樣本組A2,使用DTW演算法來計算兩個樣本之間的距離(DTW演算法可以很好的適應序列資料的伸縮和位移)。某個屬於樣本組Ai(i=1或2)的樣本X,對於X的r個最近鄰居樣本,與X屬於相同樣本組的個數越多則意味著樣本組A1和A2分佈更不同,即E和S越相關。例如,取鄰居個數r=2,樣本7的兩個最近鄰居分別是來自兩個不同樣本組的3和5,但是樣本5的兩個最近鄰居是來自相同樣本組A2的7和8。

文章使用置信係數(Confident coefficient)來判斷“假設檢驗H1”(兩個分佈不相同,即E和S相關)的可信度,置信係數越大,H1越可信。演算法的兩個關鍵引數:最近鄰居個數r和時間序列長度k,鄰居個數為樣本個數的自然對數,時序資料的自相關函式曲線的第一個峰值為序列長度。

時間先後順序

選取事件發生前後的序列與隨機選取的時間序列求相關性,結果為Dr和Df。如果Dr為True,Df為False,代表E的發生先於S的發生(E -> S)。如果Dr為False,Df為True,或Dr為True,Df為True,代表S的發生先於E的發生(S -> E)。如下圖例子,事件CPU Intensive Program –> 時序資料CPU Usage,時序資料CPU Usage -> 事件SQL Query Alert。

單調關係

單調性由事件發生前後時間序列的變化來判斷,如果事件發生後的時間序列比之前的序列取值要大,單調性為增加,否則為降低。如下圖所示事件loading Data Task導致了Memory Usage的增加,事件Program Quit導致了Memory Usage的降低。

實驗結果

文章通過使用微軟的系統監控資料和客服團隊的資料對演算法效能進行驗證,資料分別是24個 S(記憶體、CPU和DISK資料)和52個 E (特定任務的執行),7 個S(HTTP狀態碼)和57個 E (服務主題),評價標準為F-score。結果表明DTW距離比其他的距離(L1和L2)整體表現更好,演算法整體比兩個baseline演算法(皮爾森相關和J-Measure)表現要好。

資料

結論

文章介紹了一套全新的無監督的方法研究事件和時序資料的關係,回答了三個問題:E和S是否相關?E和S發生的先後順序?以及單調關係是什麼?相比較現在很多的相關關係研究,主要是事件之間的關聯關係和時序資料之間的關聯關係,本文則側重事件和時序資料間的關係,是第一個回答了事件和時序資料間上述三個問題的工作。

事件診斷一直是運維領域一個很重要的工作,事件和時序資料的相關性不僅可以為事件診斷提供很好的啟發,而且在幫助進行根因分析等都能提供很好的線索。作者在微軟的內部資料集上對演算法做了驗證,並取得了很好的效果,這對於學術和工業屆都有很高的價值。

原文來自微信公眾號:智慧運維前沿