張華,陳會(huì)飛(中國(guó)移動(dòng)(深圳)有限公司,深圳 518048)
基于歷史數(shù)據(jù)的系統(tǒng)隱患預(yù)測(cè)研究
張華,陳會(huì)飛
(中國(guó)移動(dòng)(深圳)有限公司,深圳 518048)
摘 要基于平臺(tái)自身歷史表現(xiàn),結(jié)合LOESS擬合、TBRM擬合以及DTW 3種算法,提出一種平臺(tái)性能隱患預(yù)測(cè)方法,達(dá)到準(zhǔn)確預(yù)測(cè)平臺(tái)層面資源波動(dòng)異常的目的。實(shí)踐表明,該方法準(zhǔn)確有效,在實(shí)際使用中取得了良好效果。
關(guān)鍵詞性能隱患;性能閥值監(jiān)測(cè);LOESS擬合;TBRM擬合;DTW算法
運(yùn)營(yíng)系統(tǒng)作為一個(gè)公司正常運(yùn)轉(zhuǎn)的命脈,保障其穩(wěn)定運(yùn)行是重中之重。各公司通過(guò)建立平臺(tái)資源監(jiān)控系統(tǒng),按照固定的頻率(例如:5分鐘/輪次)對(duì)選取的平臺(tái)關(guān)鍵性能指標(biāo)進(jìn)行采集,依據(jù)指標(biāo)的變化情況來(lái)判定運(yùn)營(yíng)系統(tǒng)平臺(tái)層面的運(yùn)行情況。
從影響系統(tǒng)穩(wěn)定運(yùn)行的原因看,主要分為3類:一是配置故障,指的是系統(tǒng)因網(wǎng)絡(luò)配置等非系統(tǒng)本身原因?qū)е聼o(wú)法訪問(wèn),此情況主要是人為原因?qū)е虑揖哂信既恍浴6怯布收?,指系統(tǒng)硬件層面突然損壞導(dǎo)致系統(tǒng)無(wú)法訪問(wèn),例如主機(jī)板卡損壞、內(nèi)存損壞等,此類情況通常在故障前僅有少量告警信息,且出現(xiàn)較為突然,一般無(wú)法進(jìn)行預(yù)測(cè)。三是性能異常,指短時(shí)間內(nèi)并發(fā)訪問(wèn)用戶量過(guò)高或者應(yīng)用存在缺陷,造成業(yè)務(wù)訪問(wèn)響應(yīng)緩慢,在平臺(tái)層面表現(xiàn)為某些性能指標(biāo)走勢(shì)突然變壞。
前兩種情況,會(huì)造成系統(tǒng)使用中斷,監(jiān)控系統(tǒng)會(huì)第一時(shí)間發(fā)現(xiàn)并介入處理。但對(duì)第三種情況,在業(yè)務(wù)性能出現(xiàn)拐點(diǎn)前,通常平臺(tái)資源層面最先有性能指標(biāo)異常出現(xiàn)。那么怎樣才能在平臺(tái)層面性能變壞時(shí)進(jìn)行準(zhǔn)確預(yù)警呢?業(yè)內(nèi)常用的是性能閥值檢測(cè)法,但此方法缺點(diǎn)明顯,告警量大,難于篩選有效信息,告警有效率不高。本文基于平臺(tái)自身歷史表現(xiàn),結(jié)合LOESS擬合、TBRM擬合以及DTW 3種算法,提出一種系統(tǒng)性能隱患預(yù)測(cè)方法,結(jié)合平臺(tái)資源使用現(xiàn)狀以及平臺(tái)自身特性,形成對(duì)系統(tǒng)內(nèi)平臺(tái)資源的評(píng)價(jià)標(biāo)準(zhǔn),分析找到出現(xiàn)性能隱患的平臺(tái)對(duì)象和隱患時(shí)間點(diǎn),達(dá)到預(yù)測(cè)性能隱患的目的。
性能閥值檢測(cè)法主要是針對(duì)平臺(tái)資源性能指標(biāo)定義統(tǒng)一的告警閥值區(qū)間,當(dāng)達(dá)到某個(gè)閥值區(qū)間時(shí),觸發(fā)相應(yīng)等級(jí)的告警規(guī)則,認(rèn)定系統(tǒng)存在性能問(wèn)題。如表1所示為針對(duì)某系統(tǒng)的告警閥值樣表,這種方法閥值區(qū)間的設(shè)置依賴于經(jīng)驗(yàn)值或歷史數(shù)據(jù)均值。其中,指標(biāo)類型為正向表示該性能指標(biāo)值越高平臺(tái)對(duì)象性能越好,指標(biāo)類型為反向表示該性能指標(biāo)值越低平臺(tái)對(duì)象性能越好。例如在滿足用戶訪問(wèn)的情況下,性能指標(biāo)“數(shù)據(jù)緩存讀命中率”越高表示性能越好,故此為正向性能指標(biāo);性能指標(biāo)“主機(jī)CPU利用率”越低表示性能越好,故此為
反向性能指標(biāo)。
表1 告警閥值樣表
該方法問(wèn)題在于無(wú)法正確反映系統(tǒng)性能層面的問(wèn)題,主要有3點(diǎn):一是不適合現(xiàn)狀。為最大化利用系統(tǒng)平臺(tái)資源,多數(shù)系統(tǒng)內(nèi)資源占用率均比較高,但業(yè)務(wù)層面運(yùn)行較為穩(wěn)定,直接從資源占用率高就認(rèn)定系統(tǒng)性能存在問(wèn)題較為武斷。二是告警觸發(fā)情況較多,發(fā)現(xiàn)性能問(wèn)題卻較少。當(dāng)資源多次在閥值上下進(jìn)行波動(dòng)時(shí),會(huì)多次觸發(fā)告警。三是告警閥值較為固定,不利于發(fā)現(xiàn)性能問(wèn)題。例如定義CPU利用率閥值為80%,某臺(tái)主機(jī)平時(shí)資源占用為30%,某天突然上升至75%,此時(shí)應(yīng)該是一個(gè)性能隱患,需要重點(diǎn)關(guān)注,但性能閥值檢測(cè)法卻無(wú)法發(fā)現(xiàn)。
更進(jìn)一步的方法,是在告警閥值的基礎(chǔ)上定義一段時(shí)間內(nèi)達(dá)到告警閥值的次數(shù)或者一段時(shí)間內(nèi)告警量達(dá)到一定比例,如果達(dá)到即認(rèn)為性能存在隱患,需要介入處理。此改進(jìn)方式解決了資源占用率反復(fù)波動(dòng)導(dǎo)致大量告警的情況,但對(duì)告警次數(shù)或者告警比例的定義仍然依賴于經(jīng)驗(yàn)值,另外對(duì)資源持續(xù)上升等異常情況仍然無(wú)法監(jiān)測(cè)。
2.1預(yù)測(cè)原理介紹
在系統(tǒng)穩(wěn)定運(yùn)行情況下,平臺(tái)層面多數(shù)性能指標(biāo)均是在一定范圍內(nèi)進(jìn)行周期性線性波動(dòng)。使用一段時(shí)間內(nèi)某個(gè)指標(biāo)的采集數(shù)據(jù)繪制日折線圖,可以觀測(cè)到以下規(guī)律,性能指標(biāo)多數(shù)數(shù)據(jù)均在一個(gè)波動(dòng)上下線內(nèi),且每天性能指標(biāo)形成的折線走勢(shì)基本相同,即性能和時(shí)間存在對(duì)應(yīng)關(guān)系:
y=f(x)+ε,ε~N(0,σ2)
這里y為性能,x為每日的時(shí)間點(diǎn),ε為每天的波動(dòng)且服從均值為0,方差為σ2的正態(tài)分布。
當(dāng)異常發(fā)生時(shí),會(huì)出現(xiàn)以下兩種情況:一是性能指標(biāo)數(shù)據(jù)波動(dòng)超出歷史波動(dòng)范圍;二是性能指標(biāo)當(dāng)前線性走勢(shì)和以往同時(shí)段走勢(shì)表現(xiàn)不一致。故當(dāng)兩種情況均發(fā)生時(shí),即可認(rèn)定當(dāng)前存在性能隱患。
本方法選取以下兩類共4種異常波動(dòng)情況作為模型建立依據(jù)。如圖1的圖形中,①代表歷史波動(dòng)下限,②代表歷史波動(dòng)上限, ③代表歷史擬合日曲線,④、⑤代表兩種異常波動(dòng)走勢(shì)。
類型1當(dāng)前采集性能指標(biāo)數(shù)據(jù)超出歷史擬合范圍并穩(wěn)定在一定范圍內(nèi)。圖中線⑤為反向指標(biāo)示例,線④為正向指標(biāo)示例。
圖1 異常類型1正反向指標(biāo)示例
類型2 當(dāng)前采集性能指標(biāo)數(shù)據(jù)超出歷史擬合范圍且呈偏離走勢(shì)。圖2中線⑤為反向指標(biāo)示例,線④為正向指標(biāo)示例。
圖2 異常類型2正反向指標(biāo)示例
2.2相關(guān)算法介紹
2.2.1 擬合算法
(1)LOESS擬合(非線性局部多項(xiàng)式擬合)
該算法為統(tǒng)計(jì)分析中對(duì)趨勢(shì)擬合的一種常用非線性回歸算法[1~5]。主要思想是選取二維變量數(shù)據(jù)(例如:采集時(shí)間點(diǎn)和平臺(tái)性能指標(biāo)值兩個(gè)變量)中一定比例的數(shù)據(jù),進(jìn)行集中擬合得到多項(xiàng)式回歸曲線,從而得到數(shù)據(jù)在局部展現(xiàn)出來(lái)的規(guī)律和趨勢(shì)。本方法在擬合過(guò)程中采用穩(wěn)健的距離加權(quán)方法,消除異常值對(duì)整體回歸的過(guò)大影響,然后根據(jù)整體的波動(dòng)情況,計(jì)算出波動(dòng)方差,依據(jù)一定概率計(jì)算得到歷史波動(dòng)上下限。
(2)TBRM擬合(Tukey's 2次權(quán)重穩(wěn)健均值)
該算法是對(duì)一組數(shù)據(jù)求穩(wěn)健均值的方法。當(dāng)每日采集性能指標(biāo)數(shù)據(jù)的時(shí)間點(diǎn)相對(duì)固定的情況下,可將一段時(shí)間范圍的采集數(shù)據(jù)歸為同一時(shí)刻來(lái)處理,可更加敏感地計(jì)算平臺(tái)性能數(shù)據(jù)的趨勢(shì)變化情況,可以作為對(duì)LOESS擬合算法的一個(gè)補(bǔ)充,以便更加敏感地發(fā)現(xiàn)問(wèn)題。計(jì)算方法如下:
m=y中值的絕對(duì)值;
cutoff=6×m異常范圍參數(shù)是9;
T(X)=(1-(X/cutoff)2)2 if abs(X)<cutoff(默認(rèn)T(X)為權(quán)重)T(X)=0,如果abs(X)≥ cutoff。
擬合算法使用說(shuō)明:
為檢測(cè)性能數(shù)據(jù)的異常變化,在滿足穩(wěn)定情況下,利用LOESS和TBRM兩個(gè)算法對(duì)性能數(shù)據(jù)做日周期性擬合以得到歷史擬合日曲線,然后利用正態(tài)分布得到合理的歷史波動(dòng)上下線閥值。LOESS和TBRM兩個(gè)算法在使用時(shí)均采用了穩(wěn)健的計(jì)算方法,可較好的消除異常值對(duì)擬合效果的影響。但對(duì)某一個(gè)采集時(shí)間點(diǎn)來(lái)講,如果數(shù)據(jù)的采集時(shí)間比較固定且不同時(shí)刻相對(duì)波動(dòng)范圍較大采用TBRM擬合算法,反之采用LOESS擬合算法。
(3)異常數(shù)據(jù)閥值確定
在實(shí)際系統(tǒng)運(yùn)行過(guò)程中,由于各種因素的影響,采集的性能數(shù)據(jù)往往包含一定量的突變數(shù)據(jù),導(dǎo)致數(shù)據(jù)走勢(shì)出現(xiàn)尖角,此類數(shù)據(jù)一般較少,但由于突變數(shù)據(jù)的幅值偏離真實(shí)值較大,如果直接參與模型計(jì)算,將降低模型的準(zhǔn)確度,以此,突變數(shù)據(jù)的過(guò)濾是數(shù)據(jù)處理的重點(diǎn)。通常采用分位數(shù)的方法來(lái)判定多少比例的采集數(shù)據(jù)為異常。如圖3為主機(jī)CPU利用率直方圖使用示例,①表示有98.2%(占比0.982)的CPU利用率采集數(shù)據(jù)位于80%之下;②表示有99.2%(占比0.992)的CPU利用率采集數(shù)據(jù)位于90%之下; ③表示有99.5%(占比0.995)的CPU利用率采集數(shù)據(jù)位于95%之下。如果我們選擇異常概率為5/1 000,即表示認(rèn)定5/1 000的數(shù)據(jù)為異常數(shù)據(jù),結(jié)合圖例,表示CPU利用率低于99.5%的數(shù)據(jù)為正常,超出95%的5/1 000數(shù)據(jù)為異常需要舍棄。
圖3 主機(jī)CPU利用率直方圖使用示例
圖4 某主機(jī)CPU利用率日趨勢(shì)圖
圖4為使用一臺(tái)主機(jī)兩個(gè)月內(nèi)CPU利用率數(shù)據(jù)繪制的日趨勢(shì)圖,其中,③為使用LOESS算法和TBRM算法得到的歷史擬合日曲線,假設(shè)歷史數(shù)據(jù)在擬合線
上線波動(dòng)為正態(tài)分布的情況下,①和②是以正態(tài)分布1/1 000概率(六司格馬原理,以及實(shí)際情況調(diào)整)得到的波動(dòng)上、下線閥值曲線,超出即為異常情況。
2.2.2 DTW算法(動(dòng)態(tài)時(shí)間序列扭曲算法)
DTW算法(動(dòng)態(tài)時(shí)間序列扭曲算法)是計(jì)算序列間相似度的著名算法[6~9],可以很好的計(jì)算兩個(gè)序列之間的大小、趨勢(shì)和性能波動(dòng)之間的差異以及距離。
平臺(tái)性能指標(biāo)日采集數(shù)據(jù)之間存在穩(wěn)定的日周期性現(xiàn)象(或其他固定長(zhǎng)度的性能比較),采用DTW算法做日周期的比對(duì),可實(shí)時(shí)監(jiān)控到性能異常變化。
2.3預(yù)測(cè)方法
2.3.1 預(yù)測(cè)流程說(shuō)明
本模型為基于平臺(tái)性能指標(biāo)的通用預(yù)測(cè)模型,沒(méi)有針對(duì)固定的某些指標(biāo)。具體操作步驟如下:
(1)選取性能指標(biāo):選取以日為周期進(jìn)行波動(dòng)的平臺(tái)資源性能指標(biāo)。
(2)采集歷史數(shù)據(jù):選取該性能指標(biāo)近兩個(gè)月的全量采集數(shù)據(jù)作為計(jì)算基礎(chǔ)。
(3)算法擬合:采用LOESS擬合和TBRM擬合兩種算法,并按照1/1 000的異常數(shù)據(jù)比率分析步驟2的性能指標(biāo)數(shù)據(jù)。
(4)得到歷史范圍:依據(jù)步驟3計(jì)算結(jié)果得到該指標(biāo)歷史波動(dòng)上線和波動(dòng)下線(對(duì)于大于合理范圍的數(shù)值,通常采用經(jīng)驗(yàn)值,不小于0.001,不大于0.995)。
(5) 采集當(dāng)前一輪性能指標(biāo)數(shù)據(jù)。
(6)判斷該數(shù)據(jù)是否超出歷史波動(dòng)上下線,如果沒(méi)有超過(guò),直接跳轉(zhuǎn)到步驟11。
(7)采用當(dāng)前數(shù)據(jù)值以及之前多次采集數(shù)據(jù)值構(gòu)建當(dāng)前走勢(shì)折線。
(8)采用DTW算法,判斷當(dāng)前走勢(shì)折線是否和上月同天采集數(shù)據(jù)形成的折線走勢(shì)一致(這里的對(duì)比周期長(zhǎng)度可認(rèn)為是每日或是一定長(zhǎng)度的性能序列),如果一致,直接跳轉(zhuǎn)到步驟11。
(9)采用DTW算法,判斷當(dāng)前走勢(shì)折線是否和上周同期采集數(shù)據(jù)形成的折線走勢(shì)一致,如果一致,直接跳轉(zhuǎn)到步驟11(上周同期指當(dāng)前天減去7天所在日期)。
(10)流程走到本步驟標(biāo)識(shí)該指標(biāo)當(dāng)前存在性能隱患,需要關(guān)注。
(11)是否繼續(xù)采集性能數(shù)據(jù)進(jìn)行判定,如果繼續(xù),返回步驟5繼續(xù),否則流程結(jié)束。
2.3.2 歷史范圍計(jì)算
(1)計(jì)算CPU利用率日數(shù)據(jù)間的的相似度距離。
根據(jù)日周期現(xiàn)象,使用DTW算法(動(dòng)態(tài)時(shí)間序列扭曲算法)對(duì)CPU利用率按照日為單位計(jì)算日與日之間的相似度距離(或者計(jì)算每日與擬合線的相似度差距,這里的對(duì)比周期長(zhǎng)度可以說(shuō)每日或是一定長(zhǎng)度的性能序列)。
(2)對(duì)相似度距離做正態(tài)標(biāo)準(zhǔn)化,找出相似度不一致的標(biāo)準(zhǔn)。
利用步驟1得到的相似度距離,對(duì)指標(biāo)數(shù)據(jù)進(jìn)行正態(tài)標(biāo)準(zhǔn)化,利用小概率事情不會(huì)發(fā)生的假設(shè)找出異常數(shù)據(jù)的判斷標(biāo)準(zhǔn)。
(3)根據(jù)不一致的日期數(shù)量判斷數(shù)據(jù)穩(wěn)定性情況。
根據(jù)步驟2得到的相似度標(biāo)準(zhǔn),判斷一個(gè)周期(通常選擇近兩個(gè)月)內(nèi)相似度距離的波動(dòng)情況,計(jì)算得到集中程度,根據(jù)橫向比較確定閥值,以確定性能的變化趨勢(shì)是否是按日基本穩(wěn)定的。
(4)計(jì)算擬合上下限。
在上述穩(wěn)定條件下滿足時(shí),做性能數(shù)據(jù)與時(shí)間的擬合,估計(jì)與時(shí)間相應(yīng)的性能數(shù)值,并根據(jù)歷史表現(xiàn)情況,計(jì)算出數(shù)據(jù)的波動(dòng)大小(擬合方差),將波動(dòng)正態(tài)標(biāo)準(zhǔn)化,計(jì)算一定概率下的性能數(shù)據(jù)的波動(dòng)范圍,計(jì)算出擬合的上限和下限,比如小于0.1%情況下,正常值的范圍應(yīng)該是多大(在不穩(wěn)定的情況依然可以做擬合,但是上下限可能會(huì)過(guò)大,可根據(jù)數(shù)據(jù)特征選取合理的數(shù)據(jù)做參考來(lái)左擬合和擬合的上下限)。
(5)根據(jù)擬合上下限和當(dāng)前數(shù)據(jù)相似度比較,判斷性能是否發(fā)生了不正常的波動(dòng)現(xiàn)象。
(6)根據(jù)擬合的范圍來(lái)判斷性能當(dāng)前值是否發(fā)生了較大范圍的波動(dòng)。
某公司在建立平臺(tái)資源監(jiān)控系統(tǒng)基礎(chǔ)上,使用該模型實(shí)時(shí)分析關(guān)鍵性能指標(biāo)數(shù)據(jù),發(fā)現(xiàn)某主機(jī)內(nèi)存利用率在8月內(nèi)某天顯著走勢(shì)異常。經(jīng)分析,發(fā)現(xiàn)新上線的業(yè)務(wù)模塊存在Java代碼編寫缺陷,占用內(nèi)存資源無(wú)法釋放,導(dǎo)致該主機(jī)處理性能下降明顯;在進(jìn)行代碼修改后,性能回復(fù)穩(wěn)定。代碼修改前后的內(nèi)存利用率折線如圖5所示。
圖5 模型應(yīng)用效果示意圖
本文基于平臺(tái)性能歷史數(shù)據(jù),提出一種性能隱患預(yù)測(cè)方法,彌補(bǔ)了性能拐點(diǎn)檢測(cè)法的不足。與性能拐點(diǎn)檢測(cè)法相比,本方法預(yù)測(cè)性能隱患更加準(zhǔn)確有效。通過(guò)收集的系統(tǒng)運(yùn)行歷史數(shù)據(jù),在業(yè)務(wù)層面受到影響前主動(dòng)預(yù)警,主動(dòng)發(fā)現(xiàn)主動(dòng)解決,使得平臺(tái)監(jiān)控從資源的被動(dòng)監(jiān)控向主動(dòng)的性能隱患監(jiān)控轉(zhuǎn)變。
參考文獻(xiàn)
[1] 寧逸. 非參數(shù)局部多項(xiàng)式回歸估計(jì)模型的研究[D]. 秦皇島:燕山大學(xué), 2010.
[2] 胡舒合. 非參數(shù)回歸函數(shù)估計(jì)的漸近正態(tài)性[J]. 數(shù)學(xué)學(xué)報(bào),2002,45(3):433-442.
[3] 李丹寧, 穆錚, 石軍, 等. 基于非參數(shù)估計(jì)方法的滬銅期貨價(jià)格研究[J]. 經(jīng)濟(jì)數(shù)學(xué),2012,29(3):36-39.
[4] 譚建國(guó). 基于深度函數(shù)的曲線擬合方法研究[D]. 天津:天津大學(xué),2007.
[5] 左義君, 崔恒建. 統(tǒng)計(jì)深度函數(shù)及其應(yīng)用(英文)[J]. 數(shù)學(xué)進(jìn)展, 2004,33(1):3-27.
[6] 盧榮. 基于動(dòng)態(tài)扭曲算法的時(shí)間序列部分周期模式挖掘研究[D]. 天津:天津大學(xué), 2009.
[7] 董曉莉, 時(shí)間序列數(shù)據(jù)挖掘相似性度量和周期模式挖掘研究[D]. 天津:天津大學(xué),2007.
[8] 羅風(fēng)曼. 時(shí)間序列預(yù)測(cè)模型及其算法研究[D]. 成都:四川大學(xué),2006.
[9] Jonathan D.Cryer, Kung-Sik Chan. 時(shí)間序列分析及應(yīng)用:R語(yǔ)言(原書(shū)第2版)[D]. 潘紅宇(譯者), 等(譯者). 北京:機(jī)械工業(yè)出版社,2011.
Research on prediction of system hidden trouble based on historical data
ZHANG Hua, CHEN Hui-fei
(China Mobile (Shenzhen) Co., Ltd., Shenzhen 518048, China)
AbstractIn this paper, a platform performance hidden troubles prediction scheme was presented based on the historical performance of the platform itself combined with LOESS fitting, TBRM fitting and DTW algorithm to predict the abnormal fl uctuation of the platform resources correctly. Practice has proved that this scheme runs correctly and effectively and achieves good performance in use.
Keywordsperformance hidden trouble; performance threshold detecting; LOESS fi tting; TBRM fi tting; DTW algorithm
收稿日期:2015-09-16
中圖分類號(hào)TP391
文獻(xiàn)標(biāo)識(shí)碼A
文章編號(hào)1008-5599(2015)11-0068-05