王速,盧華,汪碩,3,蔡磊,黃韜,3
(1. 北京郵電大學(xué)網(wǎng)絡(luò)與交換國(guó)家重點(diǎn)實(shí)驗(yàn)室, 北京 100876;2. 廣東省新一代通信與網(wǎng)絡(luò)創(chuàng)新研究院,廣東 廣州 510663;3. 網(wǎng)絡(luò)通信與安全紫金山實(shí)驗(yàn)室,江蘇 南京 211111)
網(wǎng)絡(luò)信息化帶動(dòng)了整個(gè)世界經(jīng)濟(jì)的發(fā)展,促進(jìn)了人類社會(huì)的進(jìn)步。然而伴隨著網(wǎng)絡(luò)的大規(guī)模使用,企業(yè)的IT系統(tǒng)變得越來(lái)越復(fù)雜,傳統(tǒng)的人工運(yùn)維方式已經(jīng)難以滿足企業(yè)的智能化管理要求[1]。近年來(lái),隨著機(jī)器學(xué)習(xí)、深度學(xué)習(xí)等技術(shù)的發(fā)展,智能運(yùn)維(artificial intelligence for IT operations,AIOps)的概念被提出,將AI與運(yùn)維結(jié)合,利用人工智能技術(shù)自動(dòng)監(jiān)控和管理 IT業(yè)務(wù),提升運(yùn)維效率。
智能運(yùn)維包含很多關(guān)鍵場(chǎng)景和技術(shù),涉及大型分布式系統(tǒng)的監(jiān)控、分析、決策等。參考文獻(xiàn)[2]將智能運(yùn)維劃分為3個(gè)階段:針對(duì)歷史事件,包含瓶頸分析、熱點(diǎn)分析、故障傳播圖構(gòu)建等技術(shù);針對(duì)當(dāng)前事件,包含異常檢測(cè)、異常定位、故障根因分析等技術(shù);針對(duì)未來(lái)事件,包含故障預(yù)測(cè)、趨勢(shì)預(yù)測(cè)等技術(shù)。其中,KPI異常檢測(cè)是互聯(lián)網(wǎng)服務(wù)智能運(yùn)維的一個(gè)底層核心技術(shù),上述大多數(shù)運(yùn)維關(guān)鍵技術(shù)都依賴于KPI異常檢測(cè)的結(jié)果[2]。本文研究智能運(yùn)維中的KPI異常檢測(cè)技術(shù),從單維KPI異常檢測(cè)和多維KPI異常檢測(cè)兩方面進(jìn)行分析整理,總結(jié)和分析目前KPI異常檢測(cè)領(lǐng)域的研究現(xiàn)狀和研究趨勢(shì)。
為了保障基于Internet的應(yīng)用服務(wù)的穩(wěn)定性,運(yùn)維人員通常會(huì)密切監(jiān)控各種各樣的KPI(key performance indicator)。KPI的異常往往反映了相關(guān)應(yīng)用的故障,如外部攻擊、服務(wù)器故障等。因此,高效、可靠的服務(wù)依賴于有效的異常檢測(cè)手段。
KPI數(shù)據(jù)是一種通過(guò)定時(shí)采樣獲取的、具有特定意義的時(shí)間序列數(shù)據(jù),格式為(時(shí)間戳,值)。KPI可以被粗略地劃分為兩種類型[3]:服務(wù)KPI和機(jī)器KPI。服務(wù)KPI通常是在互聯(lián)網(wǎng)業(yè)務(wù)層面的分鐘級(jí)的統(tǒng)計(jì)指標(biāo)(例如每分鐘的網(wǎng)頁(yè)訪問(wèn)量、服務(wù)的在線用戶數(shù)、服務(wù)響應(yīng)用戶的平均時(shí)間等),大多數(shù)是季節(jié)性的平滑KPI,用來(lái)反映服務(wù)的質(zhì)量和規(guī)模;機(jī)器KPI通常反映機(jī)器健康狀況的秒級(jí)的統(tǒng)計(jì)指標(biāo)(例如一臺(tái)服務(wù)器的網(wǎng)卡吞吐率、內(nèi)存利用率等),大多數(shù)是更復(fù)雜的細(xì)粒度KPI。除物理意義外,KPI在形狀特征上也呈現(xiàn)多樣性,大致可以分為周期性KPI、穩(wěn)定型KPI和持續(xù)波動(dòng)型KPI。
KPI序列往往可以呈現(xiàn)不同程度的異常模式,如圖1所示,大致可以分為以下3類[4]。
圖1 異常模式示意圖
(1)點(diǎn)異常:點(diǎn)異常指在不考慮數(shù)據(jù)點(diǎn)的時(shí)間關(guān)系的情況下,某些超出了KPI序列正常范圍的離群點(diǎn)。
(2)集合異常:集合異常指某些數(shù)據(jù)點(diǎn)的集合相對(duì)于整個(gè)KPI序列是異常的。集合異常的各個(gè)數(shù)據(jù)點(diǎn)本身可能不是異常的,但作為集合一起出現(xiàn)會(huì)被視為異常。
(3)峰值異常:峰值異常也可稱為上下文異常,區(qū)別于點(diǎn)異常,在某些情況下,雖然數(shù)據(jù)點(diǎn)仍在KPI序列正常范圍內(nèi),但與鄰居點(diǎn)存在很大差異。
異常檢測(cè)指對(duì)不符合預(yù)期模式的數(shù)據(jù)的識(shí)別。異常檢測(cè)作為數(shù)據(jù)挖掘領(lǐng)域的一項(xiàng)重要內(nèi)容,在很多方面都有廣泛的應(yīng)用,例如圖像異常檢測(cè)、時(shí)間序列異常檢測(cè)、日志消息異常檢測(cè)等。在運(yùn)維領(lǐng)域,KPI異常檢測(cè)是一項(xiàng)核心技術(shù),運(yùn)維團(tuán)隊(duì)需要實(shí)時(shí)監(jiān)測(cè)分析網(wǎng)絡(luò)設(shè)備以及服務(wù)的狀況,及時(shí)發(fā)現(xiàn)風(fēng)險(xiǎn),并盡快采取措施保障應(yīng)用服務(wù)質(zhì)量。根據(jù)場(chǎng)景和應(yīng)用需求的不同,可以分為單維KPI異常檢測(cè)和多維KPI異常檢測(cè)兩個(gè)類別。單維KPI異常檢測(cè)關(guān)注指標(biāo)級(jí)別的異常狀況(KPI的突增、抖動(dòng)等),是目前主要的研究方向。區(qū)別于單維異常,多維KPI異常檢測(cè)關(guān)注實(shí)體(例如服務(wù)器、航天器等工業(yè)設(shè)備)級(jí)別的異常。多維KPI異常示意圖如圖2所示,實(shí)體的異常事件通常會(huì)引起多個(gè)指標(biāo)同時(shí)異常,且指標(biāo)之間存在一定關(guān)聯(lián)關(guān)系,因此多維KPI異常檢測(cè)更具挑戰(zhàn)性。
圖2 多維KPI異常示意圖
目前,在單維KPI異常檢測(cè)領(lǐng)域,學(xué)術(shù)界和工業(yè)界已存在大量的研究工作。通過(guò)對(duì)已有研究進(jìn)行分類,大致可以分為兩大類:傳統(tǒng)方法和基于機(jī)器學(xué)習(xí)的方法。下面分別對(duì)這兩類方法的研究現(xiàn)狀進(jìn)行分析和介紹。
3.1.1 傳統(tǒng)方法
針對(duì)單維KPI數(shù)據(jù)的異常檢測(cè),主流方法包含基于規(guī)則的方法、基于統(tǒng)計(jì)學(xué)的方法、基于預(yù)測(cè)的方法、基于鄰近度的方法等。
基于規(guī)則的方法具有目標(biāo)明確、結(jié)果直觀等特點(diǎn),目前在工業(yè)界應(yīng)用最為廣泛。這種方法通常需要專家制定規(guī)則,盡管異常檢測(cè)準(zhǔn)確率較好,但對(duì)應(yīng)用場(chǎng)景要求嚴(yán)苛。目前有很多基于規(guī)則的異常系統(tǒng),例如針對(duì)亞馬遜云服務(wù)(Amazon Web Services,AWS)資源和在AWS上運(yùn)行的應(yīng)用程序進(jìn)行監(jiān)控的Amazon Cloud-Watch[5]系統(tǒng)。
基于統(tǒng)計(jì)學(xué)的方法是一類經(jīng)典方法,總體思想是對(duì)數(shù)據(jù)的分布做出某些假設(shè),然后利用統(tǒng)計(jì)推斷方法找出該假設(shè)條件下的異常。例如熟知的3σ準(zhǔn)則,假定數(shù)據(jù)服從正態(tài)分布,如果某些值超過(guò)3倍標(biāo)準(zhǔn)差,那么可以將其視為異常點(diǎn)。3σ準(zhǔn)則具有方法簡(jiǎn)潔、運(yùn)算速度快等優(yōu)勢(shì),但由于其存在較強(qiáng)的假設(shè)條件,在很多數(shù)據(jù)中表現(xiàn)不佳。為此,Siffer等[6]基于極端值理論(extreme value theory,EVT)提出了SPOT算法,該算法不對(duì)數(shù)據(jù)分布進(jìn)行假設(shè),對(duì)單峰時(shí)間序列和高吞吐數(shù)據(jù)流序列具有較好的檢測(cè)效果。
基于預(yù)測(cè)的方法通過(guò)建模并預(yù)測(cè)KPI曲線,根據(jù)預(yù)測(cè)值和實(shí)際值之間的誤差,采用kσ、分位數(shù)等方法或基于預(yù)設(shè)定的閾值等進(jìn)行異常檢測(cè)。代表性的時(shí)序預(yù)測(cè)方法有ARIMA[7]算法和Holt-Winters[8]算法,主要適用于具有線性趨勢(shì)和周期波動(dòng)的KPI序列。此外,F(xiàn)acebook開(kāi)源了單變量時(shí)間序列預(yù)測(cè)框架Prophet[9],具體包含序列建模、模型評(píng)估、問(wèn)題呈現(xiàn)和可視化反饋4個(gè)模塊。相比于ARIMA和Holt-Winters模型,Prophet對(duì)于數(shù)據(jù)缺失和趨勢(shì)變化具有較強(qiáng)的魯棒性,并且通常能夠很好地處理序列中的異常值。
基于鄰近度的方法是指利用異常點(diǎn)和正常點(diǎn)之間相似度低的特點(diǎn)來(lái)識(shí)別異常,例如最簡(jiǎn)單的K近鄰算法基于樣本和其第k個(gè)鄰居的距離判斷樣本是否異常。類似地,Breunig等[10]提出了局部離群因子(local outlier factor,LOF)檢測(cè)方法,通過(guò)分析樣本點(diǎn)的鄰域密度檢測(cè)異常,Kriegel等[11]提出了基于角度的離群點(diǎn)(angle-based outlier detection,ABOD)檢測(cè)方法,通過(guò)計(jì)算每個(gè)樣本與所有其他樣本對(duì)所形成的夾角的方差檢測(cè)異常。
3.1.2 基于機(jī)器學(xué)習(xí)的方法
在實(shí)際運(yùn)維環(huán)境中,傳統(tǒng)異常檢測(cè)算法部署到特定服務(wù)仍然存在很大的挑戰(zhàn)。由于KPI種類多、變化快、規(guī)律復(fù)雜,為保證服務(wù)質(zhì)量,這些方案需要運(yùn)維人員定期手動(dòng)調(diào)整檢測(cè)器的內(nèi)部參數(shù)或者監(jiān)測(cè)閾值,而且具體的參數(shù)也大多憑借經(jīng)驗(yàn)而定。在此背景下,基于機(jī)器學(xué)習(xí)技術(shù)的智能化運(yùn)維成為必然的方向。
根據(jù)KPI曲線是否具有異常標(biāo)注,可以將異常檢測(cè)算法大致分為無(wú)監(jiān)督異常檢測(cè)技術(shù)和監(jiān)督異常檢測(cè)技術(shù)。代表性的監(jiān)督學(xué)習(xí)方法有雅虎開(kāi)發(fā)的EGADS框架[12]和清華Netman實(shí)驗(yàn)室開(kāi)發(fā)的Opprentice框架[13]。EGADS和Opprentice均為有監(jiān)督的集成學(xué)習(xí)方法,利用多種傳統(tǒng)異常檢測(cè)算法輸出的異常分?jǐn)?shù)作為特征并利用用戶反饋?zhàn)鳛闃?biāo)簽來(lái)訓(xùn)練異常分類器,均在KPI異常檢測(cè)上取得了很好的效果。然而,這兩種方法嚴(yán)重依賴良好的人工標(biāo)注,在實(shí)際應(yīng)用中通常是不可行的。此外,基于多個(gè)異常檢測(cè)器的集成學(xué)習(xí)分類器也面臨運(yùn)算開(kāi)銷大、正負(fù)樣本不均衡等問(wèn)題。因此,無(wú)監(jiān)督學(xué)習(xí)方法成為KPI異常檢測(cè)的主要研究方向。
基于無(wú)監(jiān)督機(jī)器學(xué)習(xí)的異常檢測(cè)方法的主要思想是利用單類標(biāo)簽(即正常KPI樣本)確定“正常區(qū)域”,然后通過(guò)測(cè)量KPI觀測(cè)值和“正常區(qū)域”的距離來(lái)推斷異常,其理念是由于異常檢測(cè)中正常樣本遠(yuǎn)遠(yuǎn)多于異常樣本,因此即使缺乏標(biāo)簽仍然可以對(duì)模型進(jìn)行訓(xùn)練。Amer等[14]驗(yàn)證了無(wú)監(jiān)督條件下SVM算法的有效性,并對(duì)one-class SVM算法進(jìn)行改進(jìn),使學(xué)習(xí)到的決策邊界盡可能不受異常值的干擾。Yang等[15]采用了一種全局最優(yōu)的期望最大化(expectation maximization,EM)算法,用高斯混合模型(Gaussian mixture model,GMM)擬合數(shù)據(jù)并基于最大似然方法估計(jì)參數(shù)。Munz等[16]提出了基于K-means聚類算法的異常網(wǎng)絡(luò)流量檢測(cè)方法,該方法也可視為一種樣本點(diǎn)間的相似度度量方法。
此外,隨著深度學(xué)習(xí)算法的不斷突破,基于無(wú)監(jiān)督深度學(xué)習(xí)的異常檢測(cè)算法逐漸成為研究的熱點(diǎn),大多數(shù)方法基于生成模型。生成模型的目標(biāo)是給定訓(xùn)練樣本,希望能獲得與訓(xùn)練數(shù)據(jù)具有相同分布的新數(shù)據(jù)樣本,而異常檢測(cè)需要學(xué)習(xí)正常模式,因此非常適合生成模型。其中,代表性的算法有變分自編碼器(variational auto-encoder,VAE)[17]、生成式對(duì)抗網(wǎng)絡(luò) (generative adversarial network,GAN)[18]、像素循環(huán)神經(jīng)網(wǎng)絡(luò)(pixel recurrent neural network,PixelRNN)[19]等。以應(yīng)用較為廣泛的VAE為例,圖3表示VAE模型的架構(gòu),觀測(cè)數(shù)據(jù)x由隱變量z產(chǎn)生,z→x是生成模型是識(shí)別模型,從自編碼器(auto-encoder,AE)的角度來(lái)看,類似于解碼器,類似于編碼器。
圖3 VAE模型的架構(gòu)
基于VAE算法,Xu等[20]提出了無(wú)監(jiān)督異常檢測(cè)機(jī)制Donut,Donut針對(duì)季節(jié)性的KPI具有較好的檢測(cè)效果,并具有可靠的KDE(kernel density estimation)理論解釋。Li等[21]在Donut[20]機(jī)制的基礎(chǔ)上進(jìn)行了擴(kuò)展,改進(jìn)了Donut無(wú)法處理與時(shí)間相關(guān)的異常的缺陷,并更好地處理了KPI數(shù)據(jù)缺失的問(wèn)題。此外,當(dāng)面臨更復(fù)雜的機(jī)器KPI,這些KPI表現(xiàn)的非高斯的噪聲和更復(fù)雜的數(shù)據(jù)分布使Donut等機(jī)制難以進(jìn)行建模。針對(duì)此問(wèn)題,Chen等[22]提出了Buzz機(jī)制,通過(guò)Wasserstein距離[23]和分區(qū)分析的方法度量數(shù)據(jù)分布和生成分布的距離,并將模型轉(zhuǎn)化為貝葉斯網(wǎng)絡(luò),另外將VAE作為生成模型來(lái)產(chǎn)生樣本并采用另一個(gè)神經(jīng)網(wǎng)絡(luò)作為判別器來(lái)進(jìn)行對(duì)抗訓(xùn)練,在機(jī)器KPI的異常檢測(cè)上取得了較好的效果。
與單維KPI相比,多維KPI序列的維數(shù)多、數(shù)據(jù)量大、指標(biāo)間相互關(guān)聯(lián)等特征帶來(lái)了更高的研究難度。 目前國(guó)內(nèi)外針對(duì)多維KPI異常檢測(cè)的研究總體上有兩種思路[24]:第一種思路是將多維KPI序列按維度切分成多個(gè)單維KPI序列,基于單維KPI檢測(cè)方法尋找異常;第二種思路是直接分析多維KPI序列,例如將多維序列按時(shí)間切分成多個(gè)子序列,同時(shí)結(jié)合聚類等算法發(fā)現(xiàn)異常。第一種思路的研究相對(duì)成熟,但丟失了各維度KPI之間的關(guān)聯(lián)性信息,而且為每個(gè)KPI維護(hù)單獨(dú)的模型也帶來(lái)更高的成本,因此第二種思路的研究更具有價(jià)值。從算法層面,類似于單維KPI,多維KPI異常檢測(cè)方法也可以分為傳統(tǒng)方法和基于機(jī)器學(xué)習(xí)的方法兩大類。
3.2.1 傳統(tǒng)方法
與單維KPI序列類似,針對(duì)多維KPI數(shù)據(jù)異常檢測(cè)的傳統(tǒng)方法也可以大致分為基于規(guī)則的方法、基于統(tǒng)計(jì)學(xué)的方法、基于預(yù)測(cè)的方法和基于鄰近度的方法。
基于規(guī)則的方法大多考慮多維序列的每條KPI,并依據(jù)固定閾值、同比(與歷史周期對(duì)比)、環(huán)比(與相鄰時(shí)間對(duì)比)等方法判定異常。ADTK[25]是一個(gè)可用于單維和多維KPI序列異常檢測(cè)的軟件包,提供了一組具有統(tǒng)一API的通用檢測(cè)器,包含基于規(guī)則的算法和一部分無(wú)監(jiān)督算法,并支持可視化KPI序列和異常事件。
基于統(tǒng)計(jì)學(xué)的方法大多假設(shè)多維KPI的各個(gè)維度相互獨(dú)立,利用統(tǒng)計(jì)推斷方法計(jì)算各維度的異常度再進(jìn)行相加。例如,Goldstein等[26]提出了HBOS(histogram-based outlier score)算法,基于各個(gè)特征之間的獨(dú)立性假設(shè),分別為每個(gè)維度做數(shù)據(jù)分布直方圖并根據(jù)數(shù)據(jù)的頻率計(jì)算異常程度。
基于預(yù)測(cè)的方法通常為各個(gè)維度分別構(gòu)建預(yù)測(cè)模型,然后通過(guò)計(jì)算實(shí)際值與預(yù)測(cè)值之間的誤差來(lái)識(shí)別異常,ARIMA[7]模型及其變體是常用的有效方法。這類方法可以很好地捕捉KPI序列的時(shí)間依賴性,但對(duì)噪聲非常敏感,在噪聲嚴(yán)重時(shí)可能會(huì)增加很多假陽(yáng)性結(jié)果。
基于鄰近度的方法通過(guò)定義距離度量并計(jì)算數(shù)據(jù)之間的距離來(lái)檢測(cè)離群點(diǎn),與單維KPI序列類似,主要包含K近鄰、LOF[10]、ABOD[11]等算法。但對(duì)于多維KPI序列而言,此類方法計(jì)算復(fù)雜度過(guò)高,難以應(yīng)用于大規(guī)模數(shù)據(jù)。
3.2.2 基于機(jī)器學(xué)習(xí)的方法
監(jiān)督模型嚴(yán)重依賴準(zhǔn)確的類別標(biāo)簽的特點(diǎn)使其難以應(yīng)用在實(shí)際的運(yùn)維環(huán)境中。無(wú)監(jiān)督機(jī)器學(xué)習(xí)模型通過(guò)學(xué)習(xí)KPI數(shù)據(jù)的固有特征來(lái)識(shí)別異常,代表性的算法有PCA、SVM以及聚類算法(包括DBSCAN、GMM、K-means等)。陳興蜀等[27]基于ARIMA預(yù)測(cè)算法得到多維特征偏移向量,然后基于SVM算法進(jìn)行分類判別,實(shí)現(xiàn)了多維時(shí)間序列的在線檢測(cè)。Hu等[28]基于降維算法(PCA、SVD)將多維時(shí)間序列轉(zhuǎn)化為一維序列,并利用滑動(dòng)窗口將降維后的序列劃分為多個(gè)子序列,然后對(duì)各個(gè)子序列進(jìn)行特征提取,最后基于one-class SVM算法進(jìn)行在線異常檢測(cè)。
近幾年,針對(duì)多維KPI序列的無(wú)監(jiān)督深度模型得到了廣泛的研究。為了檢測(cè)航天器異常,Hundman等[29]將長(zhǎng)短期記憶(long short-term memory,LSTM)網(wǎng)絡(luò)應(yīng)用于多元KPI序列預(yù)測(cè),并使用平滑化后的預(yù)測(cè)誤差確定異常。類似于自然語(yǔ)言處理中的seq2seq 模型,Malhotra等[30]提出了一種基于LSTM的編碼器—解碼器模型,目的是重構(gòu)KPI序列的正常點(diǎn)的特征,并基于重構(gòu)誤差進(jìn)行多維KPI異常檢測(cè)。不同于以上兩項(xiàng)基于誤差的異常檢測(cè)方法,Park等[31]將LSTM和VAE模型組合起來(lái),具體是將VAE中的前饋神經(jīng)網(wǎng)絡(luò)替換成LSTM,并采用重建概率來(lái)判定異常。由于VAE學(xué)習(xí)的是隱變量z的分布,因此模型對(duì)噪聲有較好的魯棒性,且避免了過(guò)擬合。之后,Su等[32]提出了OmniAnomaly機(jī)制,將VAE和GRU(gate recurrent unit)結(jié)合,很好地捕獲了多維KPI序列的時(shí)序性和指標(biāo)依賴關(guān)系。具體地,OmniAnomaly利用GRU捕獲多維KPI序列復(fù)雜的時(shí)間依賴性,并基于VAE將觀測(cè)值(即x空間)映射到隨機(jī)變量(即z空間),另外提出了隨機(jī)變量連接技術(shù)來(lái)建模隨機(jī)變量之間的依賴關(guān)系。此外,受計(jì)算機(jī)視覺(jué)領(lǐng)域的啟發(fā),Zhang等[33]提出了一種基于卷積LSTM(conv-LSTM)的自編碼器(auto-encoder)架構(gòu)MSCRED,與之前工作不同,MSCRED沒(méi)有直接將多元KPI序列輸入模型,而是通過(guò)計(jì)算多維KPI序列指標(biāo)間的協(xié)方差構(gòu)造了分辨率特征矩陣,再將特征矩陣作為AutoEncoder結(jié)構(gòu)的輸入。
針對(duì)KPI異常檢測(cè)已經(jīng)產(chǎn)生了很多的研究成果,但由于KPI的復(fù)雜性、多樣性,在實(shí)際部署應(yīng)用中仍存在很多難題,例如周期多樣性、概念漂移、海量KPI序列的異常檢測(cè)以及結(jié)果的可解釋性等。
由于工作日、休息日、節(jié)假日或者商業(yè)活動(dòng)對(duì)用戶行為的影響,KPI可能在不同的時(shí)期內(nèi)差異很大。例如實(shí)際運(yùn)維中很常見(jiàn)的“節(jié)假日效應(yīng)”問(wèn)題是指受節(jié)假日(例如國(guó)慶節(jié)、春節(jié)、中秋節(jié))的影響,KPI可能呈現(xiàn)與平時(shí)差異很大的模式,但這些模式卻是正常的。因此,如何設(shè)計(jì)通用化的模型適應(yīng)KPI的多種周期性是業(yè)務(wù)上面臨的重要問(wèn)題之一。傳統(tǒng)方法(例如Holt-Winters和ARIMA異常檢測(cè)器)需要將KPI的周期長(zhǎng)度作為其輸入?yún)?shù),通常需要為模型手動(dòng)配置為日、周、月等周期。這類檢測(cè)器的性能受人為因素影響較大,且某些情況下,固定的周期長(zhǎng)度難以表征業(yè)務(wù)KPI復(fù)雜的周期性。此外,基于變分自編碼器(variational auto-encoder,VAE)的無(wú)監(jiān)督異常檢測(cè)算法Donut在平穩(wěn)的季節(jié)性KPI上表現(xiàn)出良好的檢測(cè)性能。然而,由于Donut將滑動(dòng)窗口內(nèi)的數(shù)據(jù)點(diǎn)作為模型輸入,并沒(méi)有時(shí)間或日期信息,因此也很難從訓(xùn)練數(shù)據(jù)中提取多種周期性的特征。
針對(duì)此問(wèn)題,Zhao等[34]提出了Period機(jī)制,主要分為離線周期性異常檢測(cè)和在線適應(yīng)性異常檢測(cè)兩個(gè)部分。在離線模塊,將歷史KPI按天切分成多個(gè)子序列,基于聚類的方法將這些子序列劃分到不同的聚類簇并進(jìn)行序列拼接,然后為各個(gè)聚類簇訓(xùn)練相應(yīng)的模型。在在線模塊,新的KPI序列根據(jù)具體日期劃分到各個(gè)簇中,并基于相應(yīng)的模型進(jìn)行異常檢測(cè)。另外在聚類部分,Period基于SBD(shape-based distance)算法進(jìn)行距離度量,并考慮了周期漂移的影響??傮w而言,Period機(jī)制思路簡(jiǎn)單,能有效解決復(fù)雜周期性對(duì)異常檢測(cè)效果的影響。
當(dāng)然,Period也存在一些問(wèn)題,例如,Period假設(shè)KPI的基本季節(jié)性是一天,因此將整個(gè)KPI直接按天切分成子序列,無(wú)法處理任意周期性(例如每年)的KPI。此外,Period也不適用于所有類型的KPI,例如有趨勢(shì)性和周期性的KPI需進(jìn)行去趨勢(shì)化預(yù)處理。還有針對(duì)具有多種周期性的多維KPI序列的異常檢測(cè)還有待進(jìn)一步研究。
運(yùn)維領(lǐng)域的概念漂移(concept drift)是指KPI序列受活動(dòng)發(fā)布、業(yè)務(wù)變更、資源調(diào)度等一些特殊事件的影響產(chǎn)生的水平漂移,例如資源占用率的突然上升或下降,如圖4所示。概念漂移可以分為預(yù)期的概念漂移和意外的概念漂移。意外的概念漂移被視為一種異常,可能會(huì)帶來(lái)額外的經(jīng)濟(jì)損失,此時(shí)服務(wù)提供商可能會(huì)采用切換流量(switch traffic)、回滾版本(rollback version)、重啟實(shí)例(restart instance)等操作將服務(wù)恢復(fù)到發(fā)生漂移之前的狀態(tài)來(lái)及時(shí)止損。預(yù)期的概念漂移不屬于異常,但由于數(shù)據(jù)分布的改變,導(dǎo)致原有的異常檢測(cè)器在一段時(shí)間內(nèi)會(huì)產(chǎn)生大量的報(bào)警。因此,研究概念漂移旨在避免發(fā)生有預(yù)期的漂移后異常檢測(cè)器長(zhǎng)時(shí)間的精度損失。
針對(duì)KPI的概念漂移問(wèn)題,Ma等[35]提出了StepWise機(jī)制,StepWise分為3部分:首先基于奇異頻譜變換(singular spectrum transform,SST)算法和極值理論(extreme value theory,EVT)檢測(cè)是否發(fā)生概念偏移;然后區(qū)分此偏移是否符合預(yù)期,針對(duì)不符合預(yù)期的概念偏移,運(yùn)維工程師要快速處理該異常;最后對(duì)于符合預(yù)期的漂移,設(shè)計(jì)了具有魯棒性的線性模型 (robust linear model,RLM)擬合新的數(shù)據(jù)分布,從而迅速適應(yīng)原有異常檢測(cè)算法和參數(shù)??傮w而言,StepWise是解決KPI概念漂移的一個(gè)有效方法,但在實(shí)際運(yùn)用過(guò)程中,對(duì)于概念漂移檢測(cè)和新數(shù)據(jù)擬合方面,仍需針對(duì)特定業(yè)務(wù)精心設(shè)計(jì),很難找到某個(gè)方法適應(yīng)所有的場(chǎng)景。
海量KPI序列的異常檢測(cè)一直是運(yùn)維中的一個(gè)重要難題。大多數(shù)的異常檢測(cè)算法(例如有監(jiān)督的EDAGS[12]、Opprentice[13]、無(wú)監(jiān)督的Donut[20]等)都假定需要為每個(gè)KPI訓(xùn)練和維護(hù)單獨(dú)的模型。面對(duì)海量的KPI,由于模型選擇、參數(shù)調(diào)整、模型訓(xùn)練等過(guò)程帶來(lái)的巨大開(kāi)銷,為所有的KPI分別訓(xùn)練異常檢測(cè)器是不可行的。
Li等[36]提出了ROCKA機(jī)制,基于時(shí)間序列聚類的方法解決這一挑戰(zhàn)。具體地,ROCKA提取每個(gè)KPI的基礎(chǔ)形狀(稱為基線),采用SBD算法作為距離度量,并基于DBSCAN算法根據(jù)基線形狀的相似性將KPI聚類成幾個(gè)簇,然后為每個(gè)簇訓(xùn)練異常檢測(cè)模型。對(duì)于新的KPI,根據(jù)與各個(gè)簇之間的相似度為其分配適當(dāng)?shù)哪P?。基于ROCKA,Bu等[37]提出了ADS機(jī)制,在聚類KPI后,利用聚類簇的中心和新的KPI序列進(jìn)行半監(jiān)督學(xué)習(xí),從而快速準(zhǔn)確地為新的KPI分配模型。
ROCKA和ADS提出了解決海量KPI異常檢測(cè)的一個(gè)新方向。但現(xiàn)實(shí)中很多KPI數(shù)據(jù)相似性不高,很難被聚類,而且聚類帶來(lái)的異常檢測(cè)精度下降的影響也是不容忽視的。另外,多維KPI的時(shí)間高維度、指標(biāo)高維度、指標(biāo)存在關(guān)聯(lián)等特點(diǎn)為海量異常檢測(cè)帶來(lái)了更大的難度,這也是未來(lái)研究的一個(gè)重要方向。
圖4 概念漂移示意圖
在多維KPI異常檢測(cè)領(lǐng)域,一個(gè)重要的問(wèn)題是如何對(duì)實(shí)體級(jí)別的異常進(jìn)行合理解釋,即為什么觀測(cè)值被認(rèn)定為異常。有效的結(jié)果解釋有助于對(duì)異常原因的分析并加速后續(xù)的故障排除。然而,目前的異常檢測(cè)大多基于無(wú)監(jiān)督深度算法,屬于黑盒模型,可解釋性較差。無(wú)監(jiān)督模型大多數(shù)基于重構(gòu)誤差或重構(gòu)概率來(lái)判斷異常,一個(gè)直觀的想法是尋找誤差最大或重建概率最低的幾個(gè)KPI維度作為實(shí)體級(jí)別異常的原因[31-32]。此外,結(jié)合時(shí)序異常檢測(cè)和圖兩個(gè)領(lǐng)域,利用圖挖掘的方式找出時(shí)間序列的內(nèi)在聯(lián)系也是分析異常原因的一個(gè)方向[38],有研究人員提出構(gòu)建有效的故障傳播圖挖掘特征之間的關(guān)聯(lián)[39-41]。然而,利用故障傳播圖挖掘準(zhǔn)確的因果關(guān)系也存在著很大的挑戰(zhàn)。由于故障發(fā)生往往遵循漣漪效應(yīng),會(huì)從一個(gè)維度故障傳播到其他維度或者整個(gè)系統(tǒng)狀態(tài),在有標(biāo)簽或存在專家經(jīng)驗(yàn)的多元時(shí)間序列中容易出現(xiàn)誤標(biāo)簽,即一開(kāi)始的故障仍認(rèn)為是正常,直到系統(tǒng)發(fā)生異常才被檢測(cè)到。另外,漣漪效應(yīng)的傳播和發(fā)生依賴于初始根因,當(dāng)初始根因不同,則其傳播關(guān)系和關(guān)聯(lián)性會(huì)發(fā)生一定的變化,造成構(gòu)建故障傳播圖得到的因果關(guān)系不穩(wěn)定。針對(duì)此問(wèn)題,未來(lái)可以嘗試?yán)貌煌瑫r(shí)間序列的趨勢(shì)變化以及時(shí)間先后特征構(gòu)造動(dòng)態(tài)的依賴關(guān)系。
在當(dāng)今社會(huì)不斷智能化的進(jìn)程中,智能運(yùn)維勢(shì)在必行。KPI異常檢測(cè)是智能運(yùn)維中的一項(xiàng)基礎(chǔ)且重要的任務(wù),異常定位、根因分析等運(yùn)維問(wèn)題都依賴于異常檢測(cè)的結(jié)果。本文從單維KPI和多維KPI兩個(gè)層面,回顧了面向KPI異常檢測(cè)的研究進(jìn)展和成果,并將現(xiàn)有方法分為基于規(guī)則的方法、基于統(tǒng)計(jì)的方法、基于預(yù)測(cè)的方法、基于相似度的方法以及基于機(jī)器學(xué)習(xí)的方法。此外,本文總結(jié)分析了異常檢測(cè)模型在部署應(yīng)用中面臨的幾個(gè)問(wèn)題并提出可能的優(yōu)化方向。未來(lái)KPI異常檢測(cè)應(yīng)重點(diǎn)考慮實(shí)際應(yīng)用中的難點(diǎn)問(wèn)題,另外可以考慮其他領(lǐng)域的交叉和借鑒,例如可以嘗試結(jié)合自然語(yǔ)言處理中的預(yù)訓(xùn)練和微調(diào)的方法應(yīng)對(duì)海量KPI異常檢測(cè)的時(shí)間和指標(biāo)高維度問(wèn)題,以及基于因果推斷的方法挖掘多維KPI間的動(dòng)態(tài)依賴關(guān)系等。