• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于時序分解的微服務(wù)調(diào)用鏈根因定位*

      2022-03-01 08:27:36韋強申董昭陽葉曉舟歐陽曄
      通信技術(shù) 2022年12期
      關(guān)鍵詞:根因調(diào)用時延

      宋 勇,韋強申,董昭陽,葉曉舟,歐陽曄,3

      (1.北京大學(xué),北京 100080;2.亞信科技(中國)有限公司,北京 100193;3.廣州亞信技術(shù)有限公司,廣東 廣州 511400)

      0 引言

      如今,越來越多的應(yīng)用程序使用微服務(wù)架構(gòu)[1]。微服務(wù)架構(gòu)將單體應(yīng)用切分成多個獨立的微服務(wù),這些微服務(wù)具有獨立開發(fā)、獨立部署、責(zé)任單一等優(yōu)點,使得整個系統(tǒng)更可靠、可擴展、更具彈性[2]。

      然而,微服務(wù)的規(guī)模數(shù)量巨大,且依賴關(guān)系復(fù)雜,例如,騰訊微信系統(tǒng)有超過3 000個微服務(wù)[3];Netflix有大約500個微服務(wù),日均處理20億應(yīng)用請求[4]。因此,當(dāng)一個微服務(wù)出現(xiàn)故障的時候,故障會沿著微服務(wù)的依賴關(guān)系傳播,從而引起大規(guī)模服務(wù)異常,使得微服務(wù)系統(tǒng)性能大大降低。此外,容器實例可以按照需求動態(tài)地創(chuàng)建和銷毀,使得系統(tǒng)具有高度的動態(tài)性和復(fù)雜性。因此,為保證系統(tǒng)運行的性能,快速檢測故障和定位根因仍然是一項艱巨的任務(wù)。

      通過分析現(xiàn)有文獻(xiàn)發(fā)現(xiàn),目前已經(jīng)有大量關(guān)于故障檢測和根因定位的方法,包括基于非結(jié)構(gòu)化日志的故障檢測方法[5-6]、基于系統(tǒng)關(guān)鍵性能指標(biāo)的故障檢測方法[7-8]、基于調(diào)用鏈日志的異常服務(wù)檢測方法并做根因分析[9-11],以及比較流行的通過構(gòu)造故障傳播圖實現(xiàn)的根因定位方法[12]。由于有些故障并不會嚴(yán)格按照節(jié)點調(diào)用的某一個方向傳播,且并不一定會體現(xiàn)在前端節(jié)點上,或者由于其他因素影響,有些統(tǒng)計相關(guān)性高的指標(biāo)實際并不一定具有很大的相關(guān)性;因此,使用以上方法不一定能夠?qū)崿F(xiàn)較好的根因定位效果。

      本文提出了一種基于調(diào)用鏈時序分解的微服務(wù)根因定位方法StudRank,該方法的前提是,需要對前端性能指標(biāo)做異常檢測,一旦發(fā)現(xiàn)異常,才會啟動StudRank的根因分析。具體而言,首先對調(diào)用鏈數(shù)據(jù)做預(yù)處理,計算節(jié)點的調(diào)用耗時,并且解析成含有調(diào)用關(guān)系的時序數(shù)據(jù);其次對調(diào)用關(guān)系的指標(biāo)做時序的異常檢測,如果為異常,則把節(jié)點標(biāo)記為異常;再次在動態(tài)構(gòu)建的拓?fù)鋱D中,萃取含有異常節(jié)點的異常子圖;最后構(gòu)造異常傳播的概率轉(zhuǎn)移矩陣,應(yīng)用隨機游走算法PageRank對異常節(jié)點打分排序。使用2020AIOps挑戰(zhàn)賽公開數(shù)據(jù)集[13]對本文所提方法進(jìn)行實驗與測試。實驗結(jié)果表明,所提方法在top1的精確度達(dá)到了84%,并與微服務(wù)根因分析經(jīng)典方法進(jìn)行了對比,較其中效果最好的MicroRCA準(zhǔn)確度提升了97.6%。

      本文的其余部分安排為:第1節(jié)討論相關(guān)工作,第2節(jié)詳細(xì)介紹StudRank方法,第3節(jié)描述實驗評估,第4節(jié)總結(jié)全文。

      1 相關(guān)工作

      目前已經(jīng)有許多關(guān)于微服務(wù)分布式系統(tǒng)的故障檢測和根因定位研究??偟膩碚f,這些研究提出的方法分為基于非結(jié)構(gòu)化日志分析的方法、基于系統(tǒng)關(guān)鍵性能指標(biāo)的方法、基于調(diào)用鏈日志的方法以及構(gòu)建故障傳播圖的方法。

      1.1 基于非結(jié)構(gòu)化日志的方法

      非結(jié)構(gòu)化日志分析的方法是一種常用的系統(tǒng)異常檢測方法。LogDC[5]是一種基于日志模型的問題診斷工具,其使用非結(jié)構(gòu)化日志分析方法對Kubernetes的云應(yīng)用程序進(jìn)行異常檢測。Jia等人[6]提出了一種基于日志的自動異常檢測方法,構(gòu)建了一個能夠捕獲服務(wù)間和服務(wù)內(nèi)的正常執(zhí)行流程的混合模型,如果觀察到的與模型存在偏差,則發(fā)出異常告警。然而這種非結(jié)構(gòu)化文本日志分析方法,很難進(jìn)行因果關(guān)系推導(dǎo),因此不太適用于故障根因定位。

      1.2 基于系統(tǒng)關(guān)鍵性能指標(biāo)的方法

      系統(tǒng)關(guān)鍵性能指標(biāo),指的是系統(tǒng)節(jié)點(物理機、虛擬機、應(yīng)用等)的CPU、內(nèi)存、磁盤等相關(guān)的性能指標(biāo)。很多方法通過分析性能指標(biāo)來定位根因,例如,Sieve方法[7]首先過濾掉不重要的指標(biāo)來降低指標(biāo)的維度,其次基于格蘭杰因果關(guān)系檢驗,分析組件之間的度量依賴關(guān)系,得到異常的根因;MicroRCA方法[8]通過將應(yīng)用程序性能癥狀與相應(yīng)的系統(tǒng)資源利用率相關(guān)聯(lián)來實時推斷根本原因,這種根因定位方法基于一個屬性圖,該圖對跨服務(wù)和機器的異常傳播進(jìn)行建模。然而,這些方法僅通過分析指標(biāo)的相關(guān)性來推斷服務(wù)是否異常,并不能準(zhǔn)確地判定根因結(jié)果。

      1.3 基于調(diào)用鏈日志的方法

      當(dāng)前已經(jīng)有很多記錄調(diào)用鏈日志的跟蹤工具和系統(tǒng)[14-17],如TraceAnomaly模型[10]基于調(diào)用鏈數(shù)據(jù)構(gòu)造服務(wù)的跟蹤向量,然后通過深度貝葉斯網(wǎng)絡(luò)學(xué)習(xí)跟蹤向量分布,如果檢測的跟蹤向量不符合分布,則會被認(rèn)為是異常;Seer模型[9]通過神經(jīng)網(wǎng)絡(luò)來分析調(diào)用鏈日志,并基于卷積神經(jīng)網(wǎng)絡(luò)模型過濾掉不影響性能的調(diào)用鏈節(jié)點,然后使用長短期記憶網(wǎng)絡(luò)(Long Short-Term Memory,LSTM)學(xué)習(xí)時間和空間模式,來分析服務(wù)質(zhì)量;TraceRank模型[11]利用調(diào)用鏈數(shù)據(jù)的信息構(gòu)造異常傳播圖,并引入頻譜分析和基于PageRank的隨機游走方法來檢測異常服務(wù)。但是深度學(xué)習(xí)方法需要消耗大量的計算資源,并需要對不同的調(diào)用鏈模式建模,當(dāng)系統(tǒng)發(fā)生改變的時候,會導(dǎo)致模型效果大大降低,且構(gòu)造圖的方法需要遍歷所有的服務(wù)節(jié)點,因此,對于一個超大型的微服務(wù)系統(tǒng)來說,基于調(diào)用鏈日志的方法是低效的。

      1.4 構(gòu)建故障傳播圖的方法

      軟件架構(gòu)經(jīng)歷了從單體架構(gòu)到微服務(wù)的轉(zhuǎn)變,以實現(xiàn)軟件開發(fā)的彈性、敏捷性和可擴展性,進(jìn)而構(gòu)建故障傳播圖來定位故障根因。MicroHECL根因定位方法[12]基于動態(tài)構(gòu)建的服務(wù)調(diào)用圖分析可能的異常傳播鏈,并基于相關(guān)性分析對候選根本原因進(jìn)行排序。但是由于有些故障并不會嚴(yán)格按照節(jié)點調(diào)用的某一個方向傳播,且并不一定會體現(xiàn)在前端節(jié)點上,或者由于其他因素影響,有些統(tǒng)計相關(guān)性高的指標(biāo)實際并不一定具有很大的相關(guān)性;因此,使用這些方法不一定能夠?qū)崿F(xiàn)較好的根因定位效果。

      2 StudRank概述

      如圖1所示,StudRank總體方案分為3個部分:數(shù)據(jù)預(yù)處理、指標(biāo)異常檢測和根因定位。

      圖1 StudRank流程

      2.1 數(shù)據(jù)預(yù)處理

      數(shù)據(jù)預(yù)處理需要把調(diào)用鏈數(shù)據(jù)轉(zhuǎn)化為時序數(shù)據(jù),并把調(diào)用鏈中節(jié)點的調(diào)用關(guān)系(父子節(jié)點對)挖掘出來組成時序數(shù)據(jù)序列。本節(jié)內(nèi)容將詳細(xì)介紹數(shù)據(jù)預(yù)處理的流程。

      2.1.1 調(diào)用鏈數(shù)據(jù)的結(jié)構(gòu)

      調(diào)用鏈數(shù)據(jù)描述的是請求執(zhí)行過程中,調(diào)用微服務(wù)記錄的信息,其結(jié)構(gòu)如圖2所示。

      圖2 某一次請求調(diào)用微服務(wù)的拓?fù)浣Y(jié)構(gòu)

      每一次調(diào)用微服務(wù)一般會記錄時間戳、微服務(wù)名稱、響應(yīng)時延、該次調(diào)用的唯一標(biāo)識ID、上游節(jié)點ID,以及標(biāo)識每一次用戶請求的ID等信息。表1是某系統(tǒng)調(diào)用鏈數(shù)據(jù)的主要屬性。

      表1 某系統(tǒng)調(diào)用鏈數(shù)據(jù)的主要屬性

      2.1.2 計算節(jié)點的時延性能

      圖3展示的是某一次請求調(diào)用鏈的結(jié)構(gòu)和日志信息,長方形代表調(diào)用鏈訪問的微服務(wù)節(jié)點,記錄了時間戳、節(jié)點名稱和時延。

      圖3 某一個調(diào)用鏈路

      定義t(N)代表節(jié)點N的時間損耗,t0(N)代表N調(diào)用子節(jié)點的時間損耗,即節(jié)點N的時延性能,t0(N)表達(dá)式為:

      式中:Ni是N的下游節(jié)點。

      計算節(jié)點的時延性能,是因為它能消除時延在有依賴關(guān)系節(jié)點的異常傳播。如圖3,節(jié)點A和B明顯時延過大,有異常的癥狀。計算兩個節(jié)點的時延性能t0(A)=250 ms。顯然,B節(jié)點的異常癥狀沒有傳播到A節(jié)點。

      2.1.3 構(gòu)建結(jié)構(gòu)向量

      使用父節(jié)點時間戳、父節(jié)點、子節(jié)點、父節(jié)點時延性能構(gòu)造1個4元組向量。定義向量為:

      式中:t為調(diào)用鏈訪問N節(jié)點的時間戳;N為調(diào)用鏈的某個節(jié)點;N1,N2,…,Nm為N的下游子節(jié)點。如圖3,可以構(gòu)建兩個向量:(t1,A,[B],250),(t2,B,[C,D],1 930)。

      2.1.4 構(gòu)造時序數(shù)據(jù)

      將向量轉(zhuǎn)化為時序指標(biāo),父節(jié)點和任意一個子節(jié)點組成一個二元指標(biāo),式(2)可以轉(zhuǎn)化為m個指標(biāo),分別為(N,N2),(N,N2)…,(N,Nm),t0(N)轉(zhuǎn)化為指標(biāo)在時間t的值。

      對指標(biāo)按照分鐘平均采樣?;谟^察,如果一個節(jié)點出現(xiàn)故障,那么任意一個訪問該節(jié)點的調(diào)用鏈或者包含該節(jié)點的指標(biāo)對應(yīng)的時延或時延性能值都會過大,即這樣過大的值是占大多數(shù)的。對指標(biāo)按照分鐘采樣取平均,節(jié)點的故障特征不會被消除。如果該節(jié)點沒有故障,僅僅是同級節(jié)點故障造成的包含該節(jié)點的指標(biāo)值過大,這樣的點是少數(shù),可以通過平均采樣消除這些噪點的影響。

      2.2 指標(biāo)異常檢測

      對于待檢測的時間點或者時間段,檢測每一個指標(biāo)在該檢測時間下的值是否異常。采用核密度估計方法和差值法檢測,具體如下文所述。

      2.2.1 核密度估計方法

      對于某個指標(biāo),取一段正常的歷史數(shù)據(jù),根據(jù)該數(shù)據(jù),估計一個概率密度函數(shù)。如圖4所示,直方圖外面包裹的實線就是概率密度函數(shù)。

      圖4 單指標(biāo)密度函數(shù)

      對于待檢測數(shù)據(jù),計算檢測值的累積概率,定義如下:

      式中:x為連續(xù)型隨機變量,為檢測時間點指標(biāo)對應(yīng)的值,或者檢測時間段指標(biāo)對應(yīng)的平均值;f(x)為概率密度;α為可調(diào)閾值。Pr值越小,表明越可能是異常。

      2.2.2 差值法

      定義x-是指標(biāo)歷史正常值的均值,σ是指標(biāo)歷史正常值的標(biāo)準(zhǔn)差,θ是大于0的調(diào)節(jié)因子。α是檢測時間點指標(biāo)對應(yīng)的值,或者檢測時間段指標(biāo)對應(yīng)的平均值,如滿足式(4),則認(rèn)為該指標(biāo)是異常。

      2.2.3 其他情況

      如果時序指標(biāo)在某一個時間點是空值,那么,所有的調(diào)用鏈訪問這兩個父子節(jié)點對都沒有數(shù)據(jù),據(jù)筆者觀察,這是由被調(diào)用節(jié)點的故障導(dǎo)致的。

      基于集成的方法中,如果核密度估計方法和差值法的結(jié)果都是異常,或者在檢測窗口存在空值,那么指標(biāo)就是異常。

      異常檢測算法的部分流程如下:

      2.3 利用隨機游走算法定位根因

      通過2.1節(jié)和2.2節(jié)檢測出了可疑的異常節(jié)點,但是,無法確定哪個節(jié)點更可能是根因。受文獻(xiàn)[11]和文獻(xiàn)[18-21]的啟發(fā),筆者考慮使用隨機游走算法,即個性化的PageRank[22],對節(jié)點根因進(jìn)行定位。

      2.3.1 PageRank算法

      PageRank算法最初是谷歌公司用于網(wǎng)頁鏈接分析的算法,它可以對搜索引擎搜索的網(wǎng)頁鏈接進(jìn)行排序。其原理是根據(jù)網(wǎng)頁鏈接的數(shù)量,對網(wǎng)頁的重要性進(jìn)行排名。該算法通過概率轉(zhuǎn)移矩陣描述網(wǎng)頁之間的鏈接,為了防止有些網(wǎng)站鏈接不出去,又設(shè)計了偏好向量。PageRank算法描述如下:

      式中:π為節(jié)點(網(wǎng)頁)重要性得分向量;P為概率轉(zhuǎn)移矩陣;u為偏好向量;α∈[0,1],為阻尼因子。α越接近0,隨機游走越以偏好向量訪問節(jié)點;α越接近1,隨機游走越以概率轉(zhuǎn)移矩陣(圖結(jié)構(gòu))訪問節(jié)點。PageRank算法不僅可以用于網(wǎng)頁重要性排名,也可以用于系統(tǒng)的故障根因定位,其中,作為節(jié)點的異常得分越大,則節(jié)點故障的可能性越大。

      2.3.2 圖的構(gòu)造

      在定位根因之前,需要構(gòu)造異常傳播圖。由于觀察到異常在調(diào)用路徑上傳播,可以根據(jù)調(diào)用鏈數(shù)據(jù)的動態(tài)構(gòu)建異常傳播圖。構(gòu)建過程如下:

      (1)截取故障前一批調(diào)用鏈數(shù)據(jù)。數(shù)據(jù)包含了很多調(diào)用鏈,例如圖5中的調(diào)用鏈1、調(diào)用鏈2、調(diào)用鏈3。

      (2)確定圖的節(jié)點。把調(diào)用鏈數(shù)據(jù)中包含的節(jié)點作為圖節(jié)點,如圖5所示的調(diào)用鏈數(shù)據(jù)中的節(jié)點A、B、C、D、E、F、G。

      (3)確定圖的邊。如果調(diào)用鏈數(shù)據(jù)中,存在A節(jié)點調(diào)用B節(jié)點,那么在圖中,可以賦予圖節(jié)點A到B的有向邊,表示節(jié)點A出現(xiàn)故障的原因是節(jié)點B出現(xiàn)了故障,例如圖5中的A→B、A→C、B→D、B→E、B→F、C→G。

      圖5 異常傳播圖構(gòu)造過程

      總的來說,定義圖G=<V,E>,V是微服務(wù)節(jié)點(調(diào)用節(jié)點)的集合,定義E代表有向邊的集合,如果eij∈E,代表節(jié)點vi調(diào)用節(jié)點vj,即為vi到vj的有向邊。

      2.3.3 子圖的萃取

      如圖6(a)所示,得到異常傳播圖后,還需要萃取異常子圖,異常子圖記為G'=<V',E'>。在2.1節(jié)數(shù)據(jù)預(yù)處理中,把調(diào)用鏈轉(zhuǎn)化為多個時序指標(biāo)數(shù)據(jù),即父節(jié)點調(diào)用子節(jié)點的時序數(shù)據(jù),而時序指標(biāo)正好對應(yīng)了故障傳播圖的邊。把異常節(jié)點定義為異常時序指標(biāo)對應(yīng)邊起始的兩個節(jié)點。如圖6(b)所示,檢測到時序指標(biāo)(A,B)、(B,E)、(B,F(xiàn))是異常,則對應(yīng)的虛線邊就是異常,虛線邊兩邊的節(jié)點A、B、E、F是異常節(jié)點。那么,提取異常節(jié)點和異常邊作為子圖,如圖6(c)所示。

      圖6 子圖萃取過程

      2.3.4 子圖邊權(quán)重

      得到異常子圖G'=<V',E'>后,對于邊ei'j∈E'的權(quán)重計算如下:

      式中:x為2.2節(jié)中式(4)的差值;α和a為調(diào)節(jié)參數(shù)。使用該方法計算邊的權(quán)重的原因是,節(jié)點的調(diào)用時延越大越可能是異常,而x是時延指標(biāo)的偏移量,x越大,對應(yīng)的Sij越大,就代表調(diào)用vj產(chǎn)生異常的概率也越大。

      2.3.5 概率轉(zhuǎn)移矩陣

      隨機游走算法將按照子圖G'=<V',E'>游走,并且以Sij的概率前向游走。但是,由于環(huán)境的復(fù)雜性,子圖并不足以描述異常的傳播關(guān)系,例如,節(jié)點vi調(diào)用節(jié)點vj,對應(yīng)檢測出的時延性能值異常,既可能是vi故障的癥狀表現(xiàn),也可能是vj故障的癥狀表現(xiàn)。因此,為了使結(jié)果具有魯棒性,需要進(jìn)一步定義隨機游走算法的概率轉(zhuǎn)移矩陣P。

      (1)前向游走。如果eij∈E',那么vi調(diào)用vj產(chǎn)生的時延性能異常,很可能vj是異常的因,即故障由vj傳播到vi,且權(quán)重Sij越大,傳播的可能性也越大。由式(6)可知Sij∈[0,1],所以可以定義P的轉(zhuǎn)移概率pij等于Sij,即:

      (2)后向游走。對于eij∈E',且eji?E',如果vi是異常的因,隨機游走從vi以概率pij游走到vj,那么就再也無法游走到真正的根因了。因此,前向游走需要允許以一定的概率返回,則后向概率定義為:

      式中:δ∈[0,1],為可調(diào)參數(shù)。

      (3)其他游走。對于eij?E',且eji?E',考慮到系統(tǒng)的復(fù)雜性,可以賦予一個低的概率值,則定義:

      結(jié)合前向游走、后向游走和其他游走,隨機游走算法在子圖G'=<V',E'>的概率矩陣定義為:

      再對概率矩陣標(biāo)準(zhǔn)化,就可以得到概率轉(zhuǎn)移矩陣P:

      2.3.6 偏好向量

      偏好向量代表的是節(jié)點的異常概率。從2.1節(jié)的式(1)可以看出,節(jié)點調(diào)用的時延性能消除了時延異常的傳播依賴,因此如果節(jié)點出現(xiàn)故障,那么該節(jié)點調(diào)用或者被調(diào)用時出現(xiàn)時延性能異常癥狀的概率越大。在提取的異常子圖中,節(jié)點的中心度越大,則越有可能是故障。因此,通過計算子圖節(jié)點的中心度來代表節(jié)點的異常程度,節(jié)點vi的異常表示如下:

      對節(jié)點的中心度歸一化,就可以得到偏好向量為:

      2.3.7 節(jié)點排名

      綜上,通過計算概率轉(zhuǎn)移矩陣和偏好向量u,基于PageRank式(5),對節(jié)點異常得分向量π進(jìn)行迭代,直到π趨于平穩(wěn),就是各個節(jié)點的最終得分,根據(jù)得分就可以判斷故障根因。

      3 實驗評估

      在這一部分,將使用2020國際AIOps挑戰(zhàn)賽公開數(shù)據(jù)集評估的方法,將本文所提方法與硬編碼、MircoRCA、MicroHECL 3種常用方法進(jìn)行對比,最后將討論所提方法的特征。

      3.1 實驗準(zhǔn)備

      3.1.1 數(shù)據(jù)

      測試StudRank方法使用的數(shù)據(jù)是2020國際AIOps挑戰(zhàn)賽公開的數(shù)據(jù),該數(shù)據(jù)來源于某運營商真實生產(chǎn)環(huán)境。通過統(tǒng)計甄別公開的15天的數(shù)據(jù),得到3種故障類型,分別為網(wǎng)絡(luò)故障、CPU故障和數(shù)據(jù)庫故障。本文實驗只使用其中的調(diào)用鏈數(shù)據(jù),并且實驗方法只定位到調(diào)用鏈訪問的節(jié)點,不考慮資源依賴的宿主機。

      3.1.2 對比方法說明

      本文采用的對比方法為硬編碼、MircoRCA、MicroHECL,這3種方法的具體介紹如下文所述。

      (1)硬編碼

      硬編碼是將規(guī)則或數(shù)據(jù)直接嵌入到程序中的方法。設(shè)置指標(biāo)的靜態(tài)閾值,并根據(jù)設(shè)置的靜態(tài)閾值產(chǎn)生的告警分析根因。使用該方法進(jìn)行實驗時,模擬靜態(tài)閾值的方法,設(shè)置微服務(wù)調(diào)用時延的閾值為1 000 ms。超過閾值,則微服務(wù)為異常。再利用已知的拓?fù)潢P(guān)系定位根因。

      (2)MircoRCA

      該方法基于已知拓?fù)鋱D關(guān)系,利用BIRCH算法計算服務(wù)的時延調(diào)用異常,并基于異常檢測構(gòu)建異常子圖以及時延和性能指標(biāo)的相關(guān)性計算子圖邊的權(quán)重,再利用個性化PageRank算法,對異常節(jié)點評分。本文使用該方法進(jìn)行實驗時,不考慮與調(diào)用無關(guān)的宿主機節(jié)點,在計算相關(guān)性的時候,不考慮容器或主機的網(wǎng)絡(luò)指標(biāo)。

      (3)MicroHECL

      該方法分為3個部分:首先根據(jù)待分析的時間窗口動態(tài)構(gòu)建服務(wù)依賴圖,其次采用剪枝策略分析異常傳播鏈,最后基于皮爾森相關(guān)系數(shù)對候選根因排序??紤]到本文實驗數(shù)據(jù)的特性,只分析服務(wù)的響應(yīng)時間。在使用該方法進(jìn)行實驗時,使用和StudRank一樣的方法做異常檢測。

      3.1.3 度量標(biāo)準(zhǔn)

      為了度量算法在數(shù)據(jù)集的性能,將使用以下度量指標(biāo):

      (1)排名前的精度,記為PR@K,指的是算法推斷出的根因排名在前面的概率。定義:

      式中:R為故障根因集合;r為某一個故障的根因集;f(i,r)的值為1或0,如果算法推理出的根因排名中的第i個在r里,為1;若不在r里,則為0。

      (2)平均精度,記為AP,指PR@K的平均值,其表達(dá)式為:

      式中:N為微服務(wù)的數(shù)量。

      3.2 實驗結(jié)果分析

      表2、表3、表4和表5對比了StudRank與硬編碼、MircoRCA、MicroHECL這3種方法對所有故障和各個類型故障的根因定位表現(xiàn),并進(jìn)行了具體的分析,其中,inf表示對比對象的值為0,提升幅度極大。

      表2 StudRank與硬編碼、MircoRCA、MicroHECL在故障集根因定位的效果對比

      表3 StudRank與硬編碼、MircoRCA、MicroHECL在網(wǎng)絡(luò)故障根因定位的效果對比

      表4 StudRank與硬編碼、MircoRCA、MicroHECL在CPU故障根因定位的效果對比

      表5 StudRank與硬編碼、MircoRCA、MicroHECL在DB故障檢測根因定位的效果對比

      3.2.1 StudRank效果

      算法StudRank在整個故障集R的評測指標(biāo)中,PR@1達(dá) 到84%,PR@3,PR@5和AP都超過了92%。這在一定程度上體現(xiàn)了StudRank算法在調(diào)用鏈根因定位的優(yōu)越性。在各種故障類型中,所提算法對CPU故障進(jìn)行根因定位的效果最好,所有評測指標(biāo)都達(dá)到100%。這是因為CPU故障會對服務(wù)的調(diào)用時延和被調(diào)用時延都產(chǎn)生影響,癥狀比較明顯,根因很容易被檢測到。對網(wǎng)絡(luò)故障的根因定位效果僅次于對CPU故障進(jìn)行根因定位的效果,除了PR@1外,其他指標(biāo)都超過了90%。網(wǎng)絡(luò)故障比CPU故障效果差,是因為某些根因沒有在調(diào)用鏈節(jié)點上,比如os_001和os_009,數(shù)據(jù)中也沒有微服務(wù)與這些宿主機節(jié)點的映射信息;因此,這類根因是無法推斷出來的。表現(xiàn)最差的是針對DB故障的根因定位,這是因為有些故障不會體現(xiàn)在服務(wù)的調(diào)用時延上,這種基于調(diào)用時延的根因定位方法是無法檢測出來的。

      3.2.2 方法對比

      在整個故障集R上進(jìn)行實驗的結(jié)果表明,StudRank相對于表現(xiàn)其次的MicroRCA,指標(biāo)PR@1提升了97.6%,指標(biāo)PR@3提升了21.2%,指標(biāo)PR@5提升了16.4%,AP提升了13.8%。硬編碼的效果最差,因為靜態(tài)的閾值不能有效地捕獲到異常。

      在對網(wǎng)絡(luò)故障數(shù)據(jù)進(jìn)行根因定位的實驗中,StudRank在所有的指標(biāo)都表現(xiàn)得最好,指標(biāo)值都在90%左右,相對于MicroRCA,StudRank的PR@1提升了69.30%,AP提升了6.5%。硬編碼和MicroHECL的效果最差。

      在對CPU故障數(shù)據(jù)進(jìn)行根因定位的實驗中,StudRank表現(xiàn)最好,所有指標(biāo)都達(dá)到了100%,原因正如3.2.1節(jié)分析的那樣。相對而言,MicroRCA除在PR@1指標(biāo)上差了一些,其他指標(biāo)都與StudRank接近。排除硬編碼方法,MicroHECL表現(xiàn)得最差,PR@1和PR@3均低于14%。這是因為CPU故障的根因有些并不在拓?fù)滏湕l的最下游或者最上游,這與MicroHECL的假設(shè)相違背了。

      在對DB故障數(shù)據(jù)進(jìn)行根因定位的實驗中,如3.2.1節(jié)分析的那樣,有些故障不會體現(xiàn)在服務(wù)的調(diào)用時延上,或者時延性能的癥狀并不明顯。因此,基于相關(guān)性分析的MicroRCA和MicroHECL,很難捕捉到異常癥狀,其PR@1和PR@3不足8%。而StudRank不涉及相關(guān)性分析,基于核密度估計和差值統(tǒng)計量能夠捕捉到微弱的異常癥狀,因此,StudRank方法的表現(xiàn)最好,PR@1達(dá)到了40%,PR@3達(dá)到了73.3%。

      3.3 進(jìn)一步討論

      StudRank是基于指標(biāo)異常檢測進(jìn)行根因分析,那么,指標(biāo)異常檢測的質(zhì)量在一定程度上影響了根因分析的結(jié)果。本節(jié)將進(jìn)一步討論核密度估計方法超參數(shù)和差值法超參數(shù)對結(jié)果的影響。

      核密度估計方法檢測質(zhì)量受控于式(3)中的閾值α,即顯著水平,如圖7所示,其中,橫坐標(biāo)代表閾值取值,縱坐標(biāo)代表PR@K值的水平。在實驗的時候,把原來異常檢測模塊的差值法去掉,調(diào)整核密度的超參數(shù)。已知閾值取值在[0,1]范圍,值越大,則對異常越靈敏,檢測的異常越多。對于PR@1,橫坐標(biāo)閾值越大,對應(yīng)的縱坐標(biāo)性能值有逐漸減小的趨勢。這是因為隨著異常檢測越來越靈敏,出現(xiàn)假陽性的概率也越大,從而會影響最后異常評分的排名。對于PR@3,雖然閾值變大,異常檢測越來越靈敏,但性能值不會有多大的變化。這是因為真正的異常指標(biāo)不會被漏檢,在構(gòu)造異常子圖權(quán)重和偏好向量時不會有太大的改變,因此,最后評分的排名也不會有過大的變動。

      圖7 核密度估計方法調(diào)節(jié)閾值后,PR@K值的表現(xiàn)

      差值法受控于式(4)中的調(diào)節(jié)因子。調(diào)節(jié)因子是一個大于0的正數(shù),值越小則對異常越靈敏。圖8給出了在調(diào)節(jié)因子分別為1,2,3,4,5的條件下性能的情況。如圖8所示,調(diào)節(jié)因子對結(jié)果無影響。這是因為該異常檢測方法能檢測到所有由根因故障引起的異常指標(biāo),當(dāng)調(diào)節(jié)因子變大時,雖然異常指標(biāo)變少了,但是基于PageRank的隨機游走算法還是能夠正常推斷出根因。

      圖8 差值法調(diào)節(jié)因子后,PR@K值的表現(xiàn)

      4 結(jié)語

      本文提出了一種基于調(diào)用鏈時序分解的微服務(wù)根因定位方法StudRank。該方法首先通過計算調(diào)用節(jié)點的時延性能,把調(diào)用鏈數(shù)據(jù)轉(zhuǎn)化為多個時序數(shù)據(jù);其次基于指標(biāo)異常檢測,構(gòu)造異常子圖;最后基于PageRank的隨機游走算法,對節(jié)點根因定位?;诠_數(shù)據(jù)集對所提方法進(jìn)行實驗,結(jié)果表明,所提方法的PR@1指標(biāo)達(dá)到了84%,并與微服務(wù)根因分析經(jīng)典方法進(jìn)行了對比,較其中效果最好的MicroRCA指標(biāo)提升了97.6%。然而,如果存在某一種類型的調(diào)用鏈,其歷史數(shù)據(jù)比較少,或者訪問的頻次小,出現(xiàn)故障時,很可能這類故障會被漏檢。此時,如果分析每個調(diào)用鏈,又會造成計算效率低下的問題。因此,如何高效且細(xì)粒度地分析調(diào)用鏈,是未來需要進(jìn)一步研究的方向。

      猜你喜歡
      根因調(diào)用時延
      根因分析法提高藥品不良反應(yīng)報告合格率
      核電項目物項調(diào)用管理的應(yīng)用研究
      基于GCC-nearest時延估計的室內(nèi)聲源定位
      電子制作(2019年23期)2019-02-23 13:21:12
      LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
      基于改進(jìn)二次相關(guān)算法的TDOA時延估計
      基于矩陣編碼的自動路測根因定位方法
      根因分析法在提高科室備用藥品質(zhì)量管理中的應(yīng)用
      基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
      FRFT在水聲信道時延頻移聯(lián)合估計中的應(yīng)用
      基于分段CEEMD降噪的時延估計研究
      阿瓦提县| 松阳县| 太保市| 太仓市| 开平市| 绥江县| 德钦县| 广宗县| 眉山市| 高密市| 苗栗市| 乌苏市| 潍坊市| 庄浪县| 砀山县| 乐亭县| 景洪市| 通山县| 西乡县| 新蔡县| 民丰县| 武隆县| 玛曲县| 定州市| 交城县| 南澳县| 临高县| 右玉县| 桃源县| 广宁县| 屏南县| 晋宁县| 新津县| 海晏县| 贵南县| 白玉县| 昔阳县| 正阳县| 凉山| 平乡县| 启东市|