• 
    

    
    

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

      一種在線實(shí)時(shí)微服務(wù)調(diào)用鏈異常檢測(cè)方法

      2023-01-09 14:28:42饒涵宇
      計(jì)算機(jī)工程 2022年11期
      關(guān)鍵詞:調(diào)用語(yǔ)義模板

      張 攀,高 豐,周 逸,饒涵宇,毛 冬,李 靜

      (1.國(guó)家電網(wǎng)有限公司信息通信分公司,北京 100031;2.南京航空航天大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,南京 211106;3.國(guó)網(wǎng)浙江省電力有限公司信息通信分公司,杭州 310016)

      0 概述

      云計(jì)算技術(shù)的發(fā)展加速了大規(guī)模應(yīng)用遷移上云的進(jìn)程,極大提升了大規(guī)模應(yīng)用的開(kāi)發(fā)、擴(kuò)展和運(yùn)維效率[1]。當(dāng)前,微服務(wù)架構(gòu)由于在傳統(tǒng)面向服務(wù)的開(kāi)發(fā)模式上進(jìn)一步去中心化,因此逐漸成為大規(guī)模云應(yīng)用的主流設(shè)計(jì)架構(gòu)[2-3],然而微服務(wù)實(shí)例之間復(fù)雜的依賴關(guān)系在增加故障發(fā)生頻率的同時(shí)也加大了故障診斷難度[4-5],尤其當(dāng)微服務(wù)調(diào)用拓?fù)渲心骋晃⒎?wù)發(fā)生故障時(shí),故障會(huì)隨著調(diào)用拓?fù)鋽U(kuò)散,而且微服務(wù)間共享CPU、內(nèi)存等資源也會(huì)引發(fā)故障傳播,即使微服務(wù)之間沒(méi)有調(diào)用關(guān)系,也可能在較短時(shí)間間隔內(nèi)產(chǎn)生大量異常告警[6]。為避免故障在系統(tǒng)內(nèi)大范圍傳播,需要盡快盡早地檢測(cè)和定位故障發(fā)生的根因(Root Cause,RT)[7]。目前,微服務(wù)系統(tǒng)的監(jiān)測(cè)數(shù)據(jù)主要包括關(guān)鍵性能指標(biāo)(Key Performance Indicator,KPI)、日志和調(diào)用鏈[8]。KPI 數(shù)據(jù)負(fù)責(zé)監(jiān)控系統(tǒng)的資源利用率,例如容器或物理機(jī)的CPU、內(nèi)存以及硬盤(pán)等硬件資源利用率[9]。日志主要由代碼中的日志輸出語(yǔ)句輸出非結(jié)構(gòu)化的日志條目,通過(guò)日志解析方法抽取為結(jié)構(gòu)化的日志模板后檢測(cè)系統(tǒng)異常[10]。調(diào)用鏈數(shù)據(jù)是以類(lèi)似圖的結(jié)構(gòu)記錄微服務(wù)級(jí)別的調(diào)用關(guān)系、執(zhí)行路徑以及性能參數(shù)[11]。目前的微服務(wù)性能異常檢測(cè)方法主要是基于KPI 和日志的異常檢測(cè),并且只有小部分研究利用了調(diào)用鏈數(shù)據(jù)。

      微服務(wù)調(diào)用鏈異常檢測(cè)可以在系統(tǒng)發(fā)生故障時(shí)及早檢測(cè)出受故障影響的微服務(wù)實(shí)例,并啟動(dòng)故障根因定位,提高故障應(yīng)對(duì)的響應(yīng)速度,但微服務(wù)之間復(fù)雜的調(diào)用關(guān)系和調(diào)用鏈數(shù)據(jù)的特性給調(diào)用鏈異常檢測(cè)帶來(lái)了很大的挑戰(zhàn)。第一,微服務(wù)之間的調(diào)用不僅包含單個(gè)服務(wù)內(nèi)部的互相調(diào)用,而且包括服務(wù)與服務(wù)間的跨服務(wù)層調(diào)用。第二,同一微服務(wù)往往對(duì)應(yīng)不同的微服務(wù)實(shí)例,為了保障業(yè)務(wù)的持續(xù)性,這些微服務(wù)實(shí)例通常部署在不同的容器或物理機(jī)上,跨容器或物理機(jī)的調(diào)用可能會(huì)引入通信時(shí)延。第三,微服務(wù)架構(gòu)應(yīng)用具有多線程、高并發(fā)的特性,一個(gè)微服務(wù)通常會(huì)在同一時(shí)刻內(nèi)調(diào)用多個(gè)子微服務(wù)。第四,應(yīng)用的不斷迭代更新通常伴隨著微服務(wù)調(diào)用拓?fù)涞淖兓缧挛⒎?wù)的上線、舊微服務(wù)的下線以及微服務(wù)原有調(diào)用關(guān)系的變化。第五,微服務(wù)調(diào)用關(guān)系中會(huì)包含大量遞歸、循環(huán)調(diào)用。針對(duì)上述問(wèn)題,一些異常檢測(cè)方法通過(guò)構(gòu)建調(diào)用鏈知識(shí)庫(kù)[12-14],在檢測(cè)過(guò)程中根據(jù)匹配算法將新的調(diào)用鏈與知識(shí)庫(kù)中的調(diào)用鏈作對(duì)比,進(jìn)而檢測(cè)異常調(diào)用鏈。但是,若應(yīng)用于存在高并發(fā)、循環(huán)以及遞歸調(diào)用的大規(guī)模微服務(wù)系統(tǒng)時(shí),該類(lèi)方法需要構(gòu)建規(guī)模龐大的知識(shí)庫(kù),并且此類(lèi)方法通常將微服務(wù)性能異常檢測(cè)和調(diào)用路徑異常檢測(cè)分為兩個(gè)獨(dú)立的任務(wù),而衡量微服務(wù)性能的響應(yīng)時(shí)間不僅由微服務(wù)本身決定,還受其所有的子調(diào)用微服務(wù)的影響,因而此類(lèi)方法檢測(cè)效果不佳。此外,通過(guò)調(diào)用鏈匹配來(lái)檢測(cè)異常的方法計(jì)算復(fù)雜度過(guò)高,檢測(cè)過(guò)程耗時(shí)過(guò)長(zhǎng),因此更適用于離線異常檢測(cè),而不適用于對(duì)實(shí)時(shí)性要求更高的在線異常檢測(cè)任務(wù)[15]。為了保證在線檢測(cè)的實(shí)時(shí)性,一些基于深度學(xué)習(xí)的異常檢測(cè)方法[16-17]被提出,但此類(lèi)方法通常僅能檢測(cè)一種類(lèi)型的異常,容易產(chǎn)生異常的漏報(bào),并且往往忽略了調(diào)用鏈中事件序列的上下文信息,導(dǎo)致難以學(xué)習(xí)到微服務(wù)調(diào)用路徑與響應(yīng)時(shí)間之間的關(guān)聯(lián)關(guān)系,因此效果不佳。

      為解決上述問(wèn)題,受自然語(yǔ)言處理技術(shù)在日志異常檢測(cè)中的成功應(yīng)用啟發(fā)[18-20],本文提出一種在線實(shí)時(shí)微服務(wù)調(diào)用鏈異常檢測(cè)方法MicroTrace,利用基于注意力機(jī)制的雙向長(zhǎng)短期記憶(Bi-directional Long Short-Term Memory,BiLSTM)網(wǎng)絡(luò)模型學(xué)習(xí)正常調(diào)用鏈的行為模式。在模型訓(xùn)練過(guò)程中,將調(diào)用鏈看作事件序列,對(duì)調(diào)用鏈中的事件進(jìn)行解析,將事件解析為包含調(diào)用類(lèi)型、調(diào)用發(fā)起網(wǎng)元以及服務(wù)網(wǎng)元的事件模板。利用詞匯嵌入式表示算法提取調(diào)用鏈中事件序列的上下文信息,獲得事件的語(yǔ)義向量表示,將調(diào)用鏈表示為語(yǔ)義向量序列。提取事件中包含的響應(yīng)時(shí)間,獲得與語(yǔ)義向量序列相對(duì)應(yīng)的響應(yīng)時(shí)間序列作為微服務(wù)性能異常檢測(cè)的依據(jù)?;谡Z(yǔ)義向量序列和響應(yīng)時(shí)間序列,采用基于注意力機(jī)制的BiLSTM 實(shí)現(xiàn)同時(shí)檢測(cè)調(diào)用路徑異常和微服務(wù)性能異常。

      1 相關(guān)工作

      1.1 基于調(diào)用鏈知識(shí)庫(kù)構(gòu)建的異常檢測(cè)方法

      基于調(diào)用鏈知識(shí)庫(kù)構(gòu)建的異常檢測(cè)方法[12]主要通過(guò)采集系統(tǒng)正常運(yùn)行下產(chǎn)生的調(diào)用鏈,從而構(gòu)建調(diào)用拓?fù)渲R(shí)庫(kù)。此類(lèi)方法在檢測(cè)過(guò)程中,利用匹配算法將輸入調(diào)用鏈的調(diào)用拓?fù)渑c知識(shí)庫(kù)作對(duì)比,進(jìn)而判定是否存在異常。MENG 等[12,15]通過(guò)構(gòu)建調(diào)用樹(shù)知識(shí)庫(kù),在檢測(cè)時(shí)根據(jù)限制自上而下映射(Restricted Top-Down Mapping,RTDM)算法[21]計(jì)算輸入調(diào)用樹(shù)與知識(shí)庫(kù)中所有正常調(diào)用樹(shù)的樹(shù)編輯距離,從而判定是否存在調(diào)用路徑異常。該方法同時(shí)通過(guò)構(gòu)建響應(yīng)時(shí)間矩陣并基于主成分分析方法實(shí)現(xiàn)了微服務(wù)性能的異常檢測(cè)。JIN等[13]提出一種基于魯棒主成分分析方法的離線調(diào)用鏈異常檢測(cè)方法,通過(guò)構(gòu)建標(biāo)準(zhǔn)調(diào)用樹(shù)知識(shí)庫(kù)和響應(yīng)時(shí)間矩陣改善了檢測(cè)精度。CHEN 等[22]通過(guò)構(gòu)建矩陣草圖線性重建包含所有微服務(wù)正常響應(yīng)時(shí)間的高維空間,實(shí)現(xiàn)了調(diào)用鏈中的微服務(wù)性能異常檢測(cè)。LIU 等[8]構(gòu)建包含所有正常調(diào)用路徑的知識(shí)庫(kù),然后人工設(shè)計(jì)調(diào)用鏈的向量化表示,利用深度貝葉斯神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)了同時(shí)檢測(cè)微服務(wù)調(diào)用路徑異常和性能異常。但是,此類(lèi)基于知識(shí)庫(kù)構(gòu)建的異常檢測(cè)方法存在計(jì)算復(fù)雜度高、檢測(cè)耗時(shí)長(zhǎng)等問(wèn)題,因此僅適用于離線調(diào)用鏈異常檢測(cè)任務(wù)。

      1.2 基于深度學(xué)習(xí)的異常檢測(cè)方法

      基于深度學(xué)習(xí)的異常檢測(cè)方法[16-17]主要利用循環(huán)神經(jīng)網(wǎng)絡(luò)、深度生成模型等學(xué)習(xí)正常調(diào)用鏈數(shù)據(jù)的行為模式,在檢測(cè)過(guò)程中將偏離此模式的輸入數(shù)據(jù)判定為異常。NEDELKOSKI 等[23]提 出AEVB 方法,通過(guò)對(duì)調(diào)用鏈中的事件分類(lèi),將相同類(lèi)型事件的響應(yīng)時(shí)間組成時(shí)間序列,轉(zhuǎn)化為時(shí)序序列異常檢測(cè)問(wèn)題,但此方法不能發(fā)現(xiàn)存在調(diào)用路徑異常的調(diào)用鏈。BOGATINOVSKI 等[24]提出一種基于自監(jiān)督學(xué)習(xí)的異常檢測(cè)方法MSP,通過(guò)訓(xùn)練一個(gè)自編碼器對(duì)輸入調(diào)用鏈中隨機(jī)遮蔽的事件進(jìn)行重構(gòu),在檢測(cè)時(shí)根據(jù)重構(gòu)結(jié)果預(yù)測(cè)調(diào)用鏈中每個(gè)位置上可能出現(xiàn)的事件,但此方法僅能檢測(cè)微服務(wù)調(diào)用路徑異常,忽略了微服務(wù)性能異常。BOGATINOVSKI 等[16-17]將 調(diào)用鏈異常檢測(cè)作為日志異常檢測(cè)的輔助任務(wù),但都僅利用了調(diào)用鏈中部分信息,因此效果不佳。為了實(shí)現(xiàn)同時(shí)檢測(cè)調(diào)用路徑異常和性能異常,減少異常的誤報(bào)和漏報(bào),NEDELKOSKI 等[25]提出一種基于多模態(tài)LSTM(Multiomodal-LSTM)方法,但此方法忽略了調(diào)用鏈中事件序列的上下文關(guān)系,并且模型結(jié)構(gòu)也無(wú)法有效學(xué)習(xí)到微服務(wù)調(diào)用路徑與性能之間的關(guān)聯(lián)關(guān)系,因此檢測(cè)效果不能達(dá)到最優(yōu)。

      2 微服務(wù)調(diào)用鏈異常檢測(cè)方法

      為了實(shí)現(xiàn)在線實(shí)時(shí)的微服務(wù)調(diào)用鏈異常檢測(cè),本文提出MicroTrace 方法,主要包含調(diào)用鏈數(shù)據(jù)解析、事件語(yǔ)義向量化以及調(diào)用鏈異常檢測(cè)3 個(gè)部分。MicroTrace 總體框架如圖1 所示。

      圖1 微服務(wù)調(diào)用鏈異常檢測(cè)方法總體框架Fig.1 Overall framework of anomaly detection method for microservice call chains

      2.1 調(diào)用鏈數(shù)據(jù)解析

      調(diào)用鏈記錄了業(yè)務(wù)應(yīng)用內(nèi)部微服務(wù)之間的調(diào)用關(guān)系以及微服務(wù)本身的響應(yīng)時(shí)間。調(diào)用鏈由一系列帶有時(shí)間戳的event(稱為事件)構(gòu)成[11],表1 為微服務(wù)調(diào)用鏈數(shù)據(jù)示例,給出了一條調(diào)用鏈中的部分?jǐn)?shù)據(jù)。本文將調(diào)用鏈T表示為按時(shí)間戳StartTime 排序的事件序列[e0,e1,…,eN-1],即T=[e0,e1,…,eN-1],其中N代表調(diào)用鏈T的長(zhǎng)度。在表1 中,CallType 代表調(diào)用類(lèi)型,StartTime 代表調(diào)用發(fā)起時(shí)間,即時(shí)間戳,ElapsedTime 代表被調(diào)用的微服務(wù)的響應(yīng)時(shí)間,TraceId 代表此條調(diào)用鏈的唯一標(biāo)識(shí),SpanId 代表該事件在調(diào)用鏈中的唯一標(biāo)識(shí),Pid 代表該事件在調(diào)用鏈中的父事件的SpanId,Cmdb_id 代表發(fā)起此次調(diào)用的網(wǎng)元唯一標(biāo)識(shí),ServiceName 代表響應(yīng)此次調(diào)用的服務(wù)網(wǎng)元(包含微服務(wù)和數(shù)據(jù)庫(kù)等)。為保證在語(yǔ)義向量化步驟中能以數(shù)值向量的形式準(zhǔn)確地描述事件的行為,本文采用CallType、Cmdb_id以及ServiceName 3 個(gè)字段對(duì)事件進(jìn)行分類(lèi),并將上述3 個(gè)字段組成正則表達(dá)式CallType_Cmdb_id_ServiceName 作為事件類(lèi)別的標(biāo)記,稱為事件模板。例如,表1 中序號(hào)為#0 的事件模板可以表示為OSB_os_021_osb_001。本文還提取出事件中的微服務(wù)響應(yīng)時(shí)間并組成響應(yīng)時(shí)間序列[η0,η1,…,ηN-1]。

      表1 微服務(wù)調(diào)用鏈?zhǔn)纠齌able 1 Example of microservice call chain

      在完成調(diào)用鏈數(shù)據(jù)解析后,一個(gè)長(zhǎng)度為N的調(diào)用鏈T就可以被表示為按時(shí)間戳排序的兩條序列,分別是事件模板序列Tρ=[ρ0,ρ1,…,ρN-1]以及響應(yīng)時(shí)間序列Tη=[η0,η1,…,ηN-1]。

      2.2 語(yǔ)義向量化

      為了利用事件序列中的上下文信息,本文基于自然語(yǔ)言處理思想,采用詞匯嵌入式表示方法Word2vec[26]提取事件序列中的上下文語(yǔ)義信息并將事件模板轉(zhuǎn)換為固定維度的數(shù)值型向量(稱為語(yǔ)義向量化)。由于事件模板的種類(lèi)較少,本文省略了原Word2vec 算法中的負(fù)采樣過(guò)程。Word2vec 主要包含跳字(Skip-Gram)模型和連續(xù)詞袋(Continuous Bag-of-Words,CBOW)模型兩類(lèi),本文采用跳字模型來(lái)實(shí)現(xiàn)事件模板的語(yǔ)義向量化,如圖2 所示,主要包含事件模板預(yù)處理以及語(yǔ)義信息提取兩個(gè)步驟。

      圖2 語(yǔ)義向量化框架Fig.2 Framework of semantic vectorization

      2.2.1 事件模板預(yù)處理

      在完成調(diào)用鏈數(shù)據(jù)解析后會(huì)得到一個(gè)事件模板集合S={ρ0,ρ1,…,ρV-1},其中V代表事件模板種類(lèi)。本文利用獨(dú)熱編碼(one-hot encoding)將集合S中的事件模板e(cuò)映射為維度為V的向量o,得到集合S對(duì)應(yīng)的獨(dú)熱編碼向量集合O={o0,o1,…,oV-1},其 中oi∈RV,i∈[0,V-1]。

      2.2.2 語(yǔ)義信息提取

      描述事件模板的語(yǔ)義向量需要滿足可區(qū)分性和可對(duì)比性兩個(gè)需求??蓞^(qū)分性指語(yǔ)義向量可以高度區(qū)分不同的事件模板。例如事件模板CSF_os_021_csf_001 和JDBC_docker_005_db_003 有不同的行為模式,因此兩者的語(yǔ)義向量應(yīng)該具有較小的余弦相似度??蓪?duì)比性指相似事件應(yīng)該有相似的語(yǔ)義向量。例如,事件模板CSF_os_021_csf_001 和CSF_os_022_csf_001 不僅在事件的行為模式上相似,在調(diào)用鏈中的位置也經(jīng)常有交集(兩者都經(jīng)常作為OSB_os_0xx_osb_0xx 的下一個(gè)調(diào)用),因此兩者的語(yǔ)義向量應(yīng)該具有較高的余弦相似度。為滿足以上兩點(diǎn)需求,給定一條調(diào)用鏈的事件模板序列Tρ=[ρ0,ρ1,…,ρN-1],通過(guò)查詢集合O將Tρ映射為T(mén)o=[o0,o1,…,oN-1],其 中,oi∈RV,i∈[0,N-1]。在跳字模型中,采用一個(gè)事件模板ρi預(yù)測(cè)它的上下文ρb來(lái)完成事件模板的語(yǔ)義向量化,具體過(guò)程如下:

      首先,將ρi對(duì)應(yīng)的oi映射到低維空間中:

      其中:h∈RD代表oi的低維表示,且D<V。

      然后,根據(jù)式(2)和式(3)由事件模板的低維表征h預(yù)測(cè)ρb:

      其中:y為跳字模型的輸出;P(ρb=ρk|ρi)為跳字模型在給定ρi的條件下,預(yù)測(cè)上下文ρb=ρk的概率。模型的優(yōu)化目標(biāo)為最大化給定事件模板ρi生成上下文事件模板的概率,等同于最小化式(4)表示的損失函數(shù):

      其中:C為ρi對(duì)應(yīng)的上下文事件模板的個(gè)數(shù)。

      最后,在模型收斂后,可由式(5)得到事件模板ρi對(duì)應(yīng)的語(yǔ)義向量vi:

      2.3 異常檢測(cè)

      除了微服務(wù)之間復(fù)雜的調(diào)用關(guān)系會(huì)對(duì)調(diào)用鏈異常檢測(cè)帶來(lái)困難以外,如何同時(shí)檢測(cè)調(diào)用路徑異常和微服務(wù)性能異常也是調(diào)用鏈異常檢測(cè)要面臨的挑戰(zhàn)之一[8],因此本文采用基于注意力機(jī)制的BiLSTM作為調(diào)用鏈異常檢測(cè)的最后一環(huán)。在完成數(shù)據(jù)解析和語(yǔ)義向量化之后,長(zhǎng)度為N的調(diào)用鏈就被表示為語(yǔ)義向量序列Tv=[v0,v1,…,vN-1]和響應(yīng)時(shí)間序列Tη=[η0,η1,…,ηN-1],為了同時(shí)檢測(cè)調(diào)用路徑異常和微服務(wù)性能異常,本文將上述序列按元素拼接為雙模態(tài)向量序列TV=[V0,V1,…,VN-1]作為BiLSTM 的輸入,其中Vi=[vi,ηi]。

      本文將調(diào)用鏈異常檢測(cè)建模為下一個(gè)事件模板預(yù)測(cè)以及時(shí)序數(shù)據(jù)預(yù)測(cè)任務(wù)。BiLSTM 接收長(zhǎng)度為l的子序列Tl=[Vt-l+1,Vt-l+2,…,Vt]作為輸入,從前向和后向兩個(gè)方向挖掘子序列中包含的信息,并且每個(gè)LSTM 塊都會(huì)輸出一個(gè)隱向量H。由于不同的事件對(duì)于多分類(lèi)的結(jié)果有不同的影響,并且在預(yù)測(cè)調(diào)用鏈中靠近根節(jié)點(diǎn)的事件時(shí),通常要在子序列中填充占位符,因此在得到BiLSTM 的輸出后,采用注意力機(jī)制自動(dòng)地為子序列中不同的事件施加不同的權(quán)重。

      首先,由每個(gè)LSTM 塊的輸出H得到每個(gè)時(shí)刻事件的權(quán)重:

      其中:為注意力層中第一個(gè)全連接層的參數(shù)。

      然后,由每個(gè)時(shí)刻對(duì)應(yīng)的LSTM 塊的輸出H以及對(duì)應(yīng)的權(quán)重λ得到注意力層的輸出:

      其中:pred=[u,ηpred];w'為注意力層中第2 個(gè)全連接層的參數(shù)。

      最后,將u作為模型輸出的事件模板預(yù)測(cè)結(jié)果,ηpred作為模型預(yù)測(cè)t+1 時(shí)刻對(duì)應(yīng)的事件響應(yīng)時(shí)間,即:

      獲取在系統(tǒng)正常運(yùn)行一段時(shí)間內(nèi)產(chǎn)生的調(diào)用鏈數(shù)據(jù)并將其按照一定比例分為訓(xùn)練集和驗(yàn)證集。在模型訓(xùn)練階段,同時(shí)采用多分類(lèi)交叉熵?fù)p失(針對(duì)事件模板預(yù)測(cè))以及均方誤差損失(針對(duì)響應(yīng)時(shí)間預(yù)測(cè))之和作為模型的總體損失函數(shù),在此損失函數(shù)的引導(dǎo)下采用RMSprop(Root Mean Square Prop)[27]更新模型參數(shù),并對(duì)模型參數(shù)采用L2 正則化。待模型收斂后,將驗(yàn)證集輸入模型中,首先利用模型的響應(yīng)時(shí)間預(yù)測(cè)值ηpred與t+1 時(shí)刻的觀測(cè)值ηt+1計(jì)算均方誤差r:

      然后計(jì)算r的均值μ以及標(biāo)準(zhǔn)差σ,根據(jù)坎特立不等式(Cantelli inequality),對(duì)于?ε≥0:

      將ε=βσ代入式(10)中得到:

      由于驗(yàn)證集中包含的都為正常的調(diào)用鏈數(shù)據(jù),因此多數(shù)預(yù)測(cè)值和觀測(cè)值之間的均方誤差r會(huì)很接近均值μ,在微服務(wù)性能異常檢測(cè)過(guò)程中采用rthreshold=μ+βσ作為判斷r是否異常的閾值,如果模型的預(yù)測(cè)值ηpred與實(shí)際觀測(cè)值ηt+1的均方誤差r>rthreshold,則可判斷此事件中響應(yīng)的微服務(wù)存在性能異常。

      在調(diào)用路徑異常檢測(cè)過(guò)程中,由于收斂后的模型學(xué)習(xí)了正常調(diào)用鏈的行為模式,模型的預(yù)測(cè)值u實(shí)際上為在給定歷史事件子序列后下一個(gè)可能出現(xiàn)的事件的概率分布,因此本文根據(jù)模型預(yù)測(cè)的各事件出現(xiàn)概率大小,選出最有可能出現(xiàn)的m個(gè)候選事件,如果實(shí)際觀測(cè)值不在這m個(gè)候選事件中,則判斷為異常。

      MicroTrace 模型訓(xùn)練算法如算法1 所示。

      算法1MicroTrace 模型訓(xùn)練算法

      3 實(shí)驗(yàn)結(jié)果與分析

      3.1 數(shù)據(jù)集

      采用AIOps2020 挑戰(zhàn)賽公開(kāi)的預(yù)賽數(shù)據(jù)集,該數(shù)據(jù)集是由某大型運(yùn)營(yíng)商提供的真實(shí)數(shù)據(jù),共分為黃金業(yè)務(wù)指標(biāo)、調(diào)用鏈數(shù)據(jù)和KPI 數(shù)據(jù)三部分,其中,黃金業(yè)務(wù)指標(biāo)反映了業(yè)務(wù)系統(tǒng)的整體狀態(tài),記錄了業(yè)務(wù)系統(tǒng)的平均響應(yīng)時(shí)間、每分鐘接收請(qǐng)求數(shù)量、每分鐘成功響應(yīng)請(qǐng)求數(shù)量以及響應(yīng)請(qǐng)求成功率。調(diào)用鏈數(shù)據(jù)記錄了該微服務(wù)架構(gòu)的業(yè)務(wù)系統(tǒng)中各微服務(wù)之間的調(diào)用關(guān)系和執(zhí)行路徑。KPI 數(shù)據(jù)記錄了物理機(jī)、虛擬機(jī)和容器的關(guān)鍵性能指標(biāo)數(shù)據(jù),例如內(nèi)存利用率、CPU 利用率等。本文采用標(biāo)記為2020_04_20中的調(diào)用鏈數(shù)據(jù)作為訓(xùn)練集,標(biāo)記為2020_05_22、2020_05_23 以及2020_05_24 中的調(diào)用鏈數(shù)據(jù)作為測(cè)試集。訓(xùn)練集和測(cè)試集的黃金業(yè)務(wù)指標(biāo)如圖3 所示,其中實(shí)線為業(yè)務(wù)系統(tǒng)的平均響應(yīng)時(shí)間(average_time),虛線為響應(yīng)請(qǐng)求成功率(success_rate),圓點(diǎn)為故障注入時(shí)間節(jié)點(diǎn)。從圖3 可以看出,在2020_04_20 訓(xùn)練集中系統(tǒng)運(yùn)行平穩(wěn),而在2020_05_22、2020_05_23 以及2020_05_24 測(cè)試集中由于故障注入導(dǎo)致系統(tǒng)運(yùn)行狀態(tài)產(chǎn)生波動(dòng)。數(shù)據(jù)提供方注入故障的類(lèi)型包括容器CPU 利用率故障、容器內(nèi)存利用率故障、數(shù)據(jù)庫(kù)類(lèi)型故障以及主機(jī)或容器網(wǎng)絡(luò)類(lèi)型故障等。測(cè)試集的部分故障注入類(lèi)型以及時(shí)間如表2 所示。

      表2 故障注入類(lèi)型及時(shí)間Table 2 Fault injection type and time

      3.2 對(duì)比方法與評(píng)價(jià)指標(biāo)

      選取DeepLog_A、MSP[24]、AEVB[23]以及Multimodal-LSTM[25]4 種當(dāng)前最優(yōu)方法作為對(duì)比方法,其中DeepLog_A 為DeepLog 的變體,為減少計(jì)算量,將DeepLog[10]中執(zhí)行路徑異常檢測(cè)模塊命名為DeepLog_A作為對(duì)比方法之一。

      采用查準(zhǔn)率(P)、查全率(R)以及F1 度量值(F)作為衡量檢測(cè)效果的指標(biāo)。查準(zhǔn)率表示在檢測(cè)出的異常中真異常的比率。查全率表示在所有真異常中被模型標(biāo)記為異常的比率。F1 度量值為綜合考慮查準(zhǔn)率和查全率的性能衡量指標(biāo),計(jì)算公式如式(12)所示:

      3.3 檢測(cè)效果對(duì)比

      圖4 給出了本文MicroTrace 與4 種對(duì)比方法的實(shí)驗(yàn)結(jié)果。從圖4 可以看出,MicroTrace 查準(zhǔn)率、查全率以及F1 度量值均達(dá)到96%以上,相對(duì)于檢測(cè)效果次優(yōu)的Multimodal-LSTM 的F1 度量值約提升了6.8%,這主要?dú)w因于MicroTrace 利用語(yǔ)義向量化有效提取了調(diào)用鏈數(shù)據(jù)中事件之間的因果關(guān)系,通過(guò)異常檢測(cè)模型充分考慮了微服務(wù)的響應(yīng)時(shí)間與調(diào)用路徑之間的關(guān)聯(lián)關(guān)系,同時(shí)檢測(cè)出了調(diào)用路徑異常和微服務(wù)性能異常,然而DeepLog_A、MSP 僅能檢測(cè)調(diào)用路徑異常,AEVB 僅能檢測(cè)微服務(wù)性能異常,因此在面對(duì)同時(shí)存在兩種異常的實(shí)驗(yàn)場(chǎng)景下檢測(cè)效果欠佳。

      圖4 5 種異常檢測(cè)方法的檢測(cè)效果對(duì)比Fig.4 Comparison of detection effect of five anomaly detection methods

      結(jié)合圖3 和表2 可以看出,在注入db close(關(guān)閉數(shù)據(jù)庫(kù))、db connection limit(數(shù)據(jù)庫(kù)訪問(wèn)限制)等故障時(shí),系統(tǒng)響應(yīng)請(qǐng)求成功率會(huì)在故障期間降為0。此類(lèi)型故障可類(lèi)比于將系統(tǒng)中某一個(gè)微服務(wù)的所有實(shí)例全部下線,從而導(dǎo)致所有需要調(diào)用此微服務(wù)的調(diào)用鏈被截?cái)?,進(jìn)而產(chǎn)生異常的調(diào)用路徑。表3 和表4給出了在2020-05-22 00:07:00 向db_003(數(shù)據(jù)庫(kù))注入db close 故障時(shí)產(chǎn)生的兩種類(lèi)型的異常調(diào)用鏈的部分信息,分別將其稱為AT_1 和AT_2。AT_1 和AT_2 都為系統(tǒng)發(fā)生故障時(shí)產(chǎn)生的一條完整的調(diào)用鏈,可以從表3 和表4 看出兩者都在調(diào)用db_003 時(shí)發(fā)生了截?cái)?,?dǎo)致一條調(diào)用鏈僅包含極少數(shù)事件(正常調(diào)用鏈通常包含幾十個(gè)甚至幾百個(gè)事件),即產(chǎn)生了調(diào)用路徑異常。然而將表3 和表4 中的異常調(diào)用鏈和表1 中正常調(diào)用鏈數(shù)據(jù)相比可以發(fā)現(xiàn),AT_1 中的事件響應(yīng)時(shí)間與正常調(diào)用鏈中的事件響應(yīng)時(shí)間明顯不同,而AT_2 中的事件響應(yīng)時(shí)間卻和正常調(diào)用鏈中的差距很小,因此如果僅檢測(cè)響應(yīng)時(shí)間異常,AT_2類(lèi)型的異常調(diào)用鏈極有可能會(huì)被漏報(bào)從而導(dǎo)致查全率下降,這也是AEVB 檢測(cè)效果不佳的原因之一。在注入CPU fault(CPU 類(lèi)型故障)、network delay(網(wǎng)絡(luò)延遲故障)等故障時(shí),系統(tǒng)的平均響應(yīng)時(shí)間通常會(huì)有較大幅度的增加,并有可能會(huì)導(dǎo)致系統(tǒng)響應(yīng)請(qǐng)求成功率下降,此類(lèi)故障可能會(huì)使系統(tǒng)中產(chǎn)生調(diào)用路徑正常但響應(yīng)時(shí)間異常的調(diào)用鏈數(shù)據(jù),然而僅考慮調(diào)用路徑異常的檢測(cè)方法(比如DeepLog_A 和MSP)在面臨此類(lèi)型異常時(shí)會(huì)產(chǎn)生漏報(bào)或誤報(bào)。MicroTrace 可以同時(shí)檢測(cè)出調(diào)用路徑異常和響應(yīng)時(shí)間異常,因此在所有方法中檢測(cè)效果達(dá)到了最優(yōu)。

      表3 AT_1 異常調(diào)用鏈Table 3 Anomalous call chain AT_1

      表4 AT_2 異常調(diào)用鏈Table 4 Anomalous call chain AT_2

      3.4 模型超參數(shù)分析

      為驗(yàn)證MicroTrace 對(duì)于超參數(shù)的魯棒性,設(shè)計(jì)模型對(duì)于預(yù)測(cè)候選事件參數(shù)m和時(shí)間窗口大小l的魯棒性實(shí)驗(yàn),其中,第1 個(gè)實(shí)驗(yàn)固定l=10,m∈{7,8,9,10,11,12},第2 個(gè)實(shí)驗(yàn)固定m=9,l∈{5,6,7,8,9,10},實(shí)驗(yàn)結(jié)果如圖5、圖6 所示。

      圖5 超參數(shù)m 的實(shí)驗(yàn)結(jié)果Fig.5 Experimental results of hyper parameter m

      圖6 超參數(shù)l 的實(shí)驗(yàn)結(jié)果Fig.6 Experimental results of hyper parameter l

      從圖5 可以看出,隨著m的增加,模型查準(zhǔn)率會(huì)逐漸上升,查全率會(huì)逐漸下降,但F1 度量值波動(dòng)不大,這是因?yàn)殡S著m的增加模型對(duì)調(diào)用鏈中的事件異常行為的容忍度會(huì)越來(lái)越高,致使檢測(cè)結(jié)果中的假陽(yáng)性數(shù)量減少,假陰性數(shù)量增加,導(dǎo)致查準(zhǔn)率增大,查全率減小。從圖6 可以看出,隨著l的增大,模型查準(zhǔn)率、查全率和F1 度量值波動(dòng)不大,證明了本文方法對(duì)于超參數(shù)的變化并不敏感,具有較強(qiáng)的魯棒性,便于在真實(shí)系統(tǒng)環(huán)境中部署。

      3.5 消融實(shí)驗(yàn)分析

      為驗(yàn)證MicroTrace各組成部分對(duì)檢測(cè)效果的影響,設(shè)計(jì)了該方法的3 種變體,分別命名為MicroTrace_Alpha、MicroTrace_Beta 和MicroTrace_Gama,其 中,MicroTrace_Alpha 相對(duì)于原方法僅利用了調(diào)用鏈數(shù)據(jù)中事件之間的依賴關(guān)系來(lái)檢測(cè)調(diào)用路徑異常,MicroTrace_Beta 相對(duì)于原方法僅利用了調(diào)用鏈數(shù)據(jù)中的微服務(wù)的響應(yīng)時(shí)間來(lái)檢測(cè)微服務(wù)性能異常,MicroTrace_Gama 相對(duì)于原方法刪去了事件模板的語(yǔ)義向量化過(guò)程,僅采用獨(dú)熱編碼對(duì)事件模板進(jìn)行向量化。所有上述方法均采用默認(rèn)參數(shù),即m=9、l=10,實(shí)驗(yàn)結(jié)果如表5 所示,其中最優(yōu)指標(biāo)值用加粗字體標(biāo)示。

      表5 消融實(shí)驗(yàn)結(jié)果Table 5 Ablation experiment results %

      從表5 可以看出,MicroTrace 在查準(zhǔn)率、查全率以及F1 度量值上均優(yōu)于其他變體方法,驗(yàn)證了該方法的各模塊對(duì)于檢測(cè)效果的貢獻(xiàn)。例如,MicroTrace 的F1度量值相對(duì)于其他3種變體方法分別提升了50.2%、7.0%以及2.5%,這體現(xiàn)出同時(shí)檢測(cè)調(diào)用路徑異常和性能異常的策略可以減少模型的誤報(bào)和漏報(bào)。MicroTrace_Alpha 的檢測(cè)效果遠(yuǎn)劣于MicroTrace_Beta,這是因?yàn)榇蟛糠止收蠒?huì)表現(xiàn)為服務(wù)延遲增加或者請(qǐng)求超時(shí)[14],即導(dǎo)致調(diào)用路徑異常的故障通常也會(huì)同時(shí)表現(xiàn)為性能異常。MicroTrace 相對(duì)于MicroTrace_Gama 的檢測(cè)效果有較小幅度的提升,這證明了在事件模板向量化的過(guò)程中考慮事件之間的依賴關(guān)系有助于異常檢測(cè)模型更好地學(xué)習(xí)到調(diào)用路徑與響應(yīng)時(shí)間之間的關(guān)聯(lián)關(guān)系。

      4 結(jié)束語(yǔ)

      本文提出一種在線實(shí)時(shí)微服務(wù)調(diào)用鏈異常檢測(cè)方法MicroTrace,將調(diào)用鏈建模為自然語(yǔ)言序列,采用詞匯嵌入式表示算法提取調(diào)用鏈中事件序列中的上下文信息,并利用基于注意力機(jī)制的BiLSTM 模型學(xué)習(xí)正常調(diào)用鏈的行為模式,實(shí)現(xiàn)了同時(shí)檢測(cè)調(diào)用路徑異常和微服務(wù)性能異常。通過(guò)在真實(shí)調(diào)用鏈數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果證明了該方法的有效性,相比于現(xiàn)有方法減少了異常的漏報(bào)和誤報(bào)數(shù)量。下一步將針對(duì)異常的微服務(wù)集合研究根因定位算法,并在此基礎(chǔ)上設(shè)計(jì)微服務(wù)系統(tǒng)故障診斷閉環(huán)解決方案,實(shí)現(xiàn)系統(tǒng)故障的自動(dòng)定位與診斷。

      猜你喜歡
      調(diào)用語(yǔ)義模板
      鋁模板在高層建筑施工中的應(yīng)用
      鋁模板在高層建筑施工中的應(yīng)用
      語(yǔ)言與語(yǔ)義
      核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
      LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
      基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
      “上”與“下”語(yǔ)義的不對(duì)稱性及其認(rèn)知闡釋
      鋁模板在高層建筑施工中的應(yīng)用
      城市綜改 可推廣的模板較少
      認(rèn)知范疇模糊與語(yǔ)義模糊
      德安县| 呼玛县| 涞水县| 泰顺县| 浦县| 祥云县| 岐山县| 通州市| 萍乡市| 临湘市| 丰宁| 镇安县| 隆化县| 广德县| 洞口县| 英吉沙县| 读书| 宁蒗| 密云县| 灵寿县| 温宿县| 彭水| 特克斯县| 南雄市| 花莲县| 甘肃省| 甘泉县| 荥经县| 荔浦县| 成都市| 漳浦县| 临城县| 蓬溪县| 尚志市| 高台县| 治县。| 台山市| 黎川县| 霍城县| 陆河县| 淅川县|