国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

微服務(wù)架構(gòu)下的根因定位方法綜述

2022-06-16 08:34:52李思毅馬詩雨崔麗月張圣林孫永謙張玉志
關(guān)鍵詞:根因監(jiān)控節(jié)點(diǎn)

李思毅,馬詩雨,崔麗月,張圣林,孫永謙,張玉志

南開大學(xué),軟件學(xué)院,天津 300350

引 言

在移動(dòng)互聯(lián)網(wǎng)背景下,互聯(lián)網(wǎng)等行業(yè)業(yè)務(wù)更新迭代速度加快,需求研發(fā)周期大大縮短,線上應(yīng)用變更十分頻繁。與此同時(shí),新冠疫情加速了傳統(tǒng)行業(yè)線上化和數(shù)字化轉(zhuǎn)型,超大規(guī)模云平臺(tái)作為關(guān)鍵基礎(chǔ)設(shè)施,為我國經(jīng)濟(jì)轉(zhuǎn)型升級(jí)提供了重要支撐,已廣泛應(yīng)用于電信、互聯(lián)網(wǎng)、金融、政府、電力等多個(gè)行業(yè),但這些行業(yè)線上業(yè)務(wù)體量龐大、監(jiān)管嚴(yán)格、對(duì)異常容忍度極低[1]。隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展和各行業(yè)業(yè)務(wù)的多元化需求,將會(huì)有越來越多的傳統(tǒng)行業(yè)在數(shù)字化轉(zhuǎn)型和上云過程中采用云原生架構(gòu)[2],將原本的單體應(yīng)用拆分成數(shù)百個(gè)微服務(wù)[3]應(yīng)用,每個(gè)微服務(wù)應(yīng)用部署到上千個(gè)容器實(shí)例上。一個(gè)微服務(wù)應(yīng)用可以同時(shí)為多個(gè)業(yè)務(wù)鏈路提供服務(wù),因此微服務(wù)應(yīng)用之間存在復(fù)雜的調(diào)用關(guān)系。當(dāng)一個(gè)微服務(wù)應(yīng)用出現(xiàn)異常時(shí),它將影響調(diào)用鏈路下游的多個(gè)微服務(wù)應(yīng)用,最終影響整個(gè)業(yè)務(wù)鏈路的成功率。例如,對(duì)于金融行業(yè)實(shí)現(xiàn)合約簽訂、信用審核等微服務(wù)應(yīng)用會(huì)被其他應(yīng)用高頻次調(diào)用。當(dāng)這類微服務(wù)應(yīng)用出現(xiàn)異常時(shí),異常會(huì)擴(kuò)散至多個(gè)微服務(wù)應(yīng)用,形成告警風(fēng)暴,單純依賴人工故障定位很難滿足電信、互聯(lián)網(wǎng)、金融、政府、電力等行業(yè)對(duì)于系統(tǒng)穩(wěn)定性的要求,而對(duì)于這些行業(yè)來說,極短時(shí)間的故障也會(huì)產(chǎn)生巨大資損,給國家造成重大損失。因此,依賴費(fèi)時(shí)費(fèi)力、無法擴(kuò)展的人工方式故障應(yīng)急是不可行的。

鑒于此,本文總結(jié)了面向微服務(wù)架構(gòu)的根因定位方法,探索在微服務(wù)架構(gòu)下系統(tǒng)發(fā)生異常后自動(dòng)、準(zhǔn)確地定位引起異常的根因事件或異常組件,縮短異常修復(fù)時(shí)間,提高云上系統(tǒng)穩(wěn)定性。

1 研究背景及意義

1.1 微服務(wù)架構(gòu)

微服務(wù)指將大型的單體軟件應(yīng)用拆分成多個(gè)簡(jiǎn)單應(yīng)用,每個(gè)簡(jiǎn)單應(yīng)用描述一個(gè)細(xì)分業(yè)務(wù)或功能,系統(tǒng)中各個(gè)簡(jiǎn)單應(yīng)用可被獨(dú)立部署,且各個(gè)應(yīng)用之間松耦合以實(shí)現(xiàn)系統(tǒng)的持續(xù)快速交付和運(yùn)維[4]。微服務(wù)架構(gòu)與傳統(tǒng)的單體架構(gòu)相比,旨在通過將功能分解到各個(gè)離散的服務(wù)中,實(shí)現(xiàn)單個(gè)系統(tǒng)復(fù)雜度和耦合性降低,通過系統(tǒng)之間的輕量級(jí)通信機(jī)制實(shí)現(xiàn)相互協(xié)作,具有更細(xì)粒度的獨(dú)立部署、獨(dú)立擴(kuò)展、跨語言編程等特點(diǎn)。微服務(wù)架構(gòu)在帶來靈活性、開發(fā)敏捷性的同時(shí)也帶來了運(yùn)維層面的挑戰(zhàn),隨著應(yīng)用服務(wù)數(shù)量的增加,微服務(wù)之間的通信、部署依賴、數(shù)據(jù)一致性、監(jiān)控以及安全性的管理成為新的挑戰(zhàn)。

云原生技術(shù)是基于微服務(wù)架構(gòu)思想、以容器技術(shù)為載體的一種產(chǎn)品研發(fā)運(yùn)營的全新模式。云原生技術(shù)是各行業(yè)在公有云、私有云或混合云中構(gòu)建和運(yùn)行可彈性擴(kuò)展的應(yīng)用的核心技術(shù)。云原生的代表技術(shù)包括服務(wù)網(wǎng)格(Service Mesh)[5]、基于Kubernetes[6]的容器技術(shù)、微服務(wù)、不可變基礎(chǔ)設(shè)施和聲明式API。

綜上,基于微服務(wù)架構(gòu)的云原生系統(tǒng)將是未來一段時(shí)間各行業(yè)數(shù)字化轉(zhuǎn)型過程中技術(shù)上主要的發(fā)展趨勢(shì)。

1.2 微服務(wù)架構(gòu)的運(yùn)維

1.2.1 監(jiān)控指標(biāo)

監(jiān)控中臺(tái)是微服務(wù)架構(gòu)下的核心系統(tǒng)之一,面向微服務(wù)場(chǎng)景下的全功能監(jiān)控中臺(tái)包含關(guān)鍵業(yè)務(wù)鏈路監(jiān)控、應(yīng)用監(jiān)控、基礎(chǔ)設(shè)施監(jiān)控和自定義監(jiān)控等功能,為系統(tǒng)監(jiān)控報(bào)警以及后續(xù)運(yùn)維操作提供基礎(chǔ)。監(jiān)控中臺(tái)關(guān)注的主要包含如下指標(biāo):

(1)業(yè)務(wù)指標(biāo):包括關(guān)鍵業(yè)務(wù)鏈路的成功率、失敗數(shù)、平均耗時(shí)等描述業(yè)務(wù)穩(wěn)定性的指標(biāo)。

(2)系統(tǒng)指標(biāo):包括POD 容器、應(yīng)用容器、Sidecar 容器等多個(gè)維度的指標(biāo),主要有:CPU、LOAD(負(fù)載)、MEM(內(nèi)存)、下游請(qǐng)求信息、上游請(qǐng)求信息、磁盤水位等。

監(jiān)控中臺(tái)在整合監(jiān)控?cái)?shù)據(jù)的基礎(chǔ)上,同時(shí)集成了監(jiān)控指標(biāo)的異常檢測(cè)能力,并通過異常事件中心等功能展示給運(yùn)維工程師。

圖1 某金融系統(tǒng)交易成功量(業(yè)務(wù)指標(biāo))Fig.1 The number of successful transactions in the financial system (business indicator)

圖2 云平臺(tái)中某物理機(jī)CPU 使用量(系統(tǒng)指標(biāo))Fig.2 CPU usage of a physical machine in the cloud platform (system metrics)

1.2.2 CMDB

CMDB[7]的全稱是configuration management database(配置管理數(shù)據(jù)庫)。CMDB 是云上所有核心硬件、軟件及其關(guān)聯(lián)關(guān)系的邏輯體現(xiàn)。如圖3所示,CMDB 保存了機(jī)房、機(jī)柜、網(wǎng)絡(luò)位置、網(wǎng)絡(luò)設(shè)備、服務(wù)器、應(yīng)用、應(yīng)用分組、云資源實(shí)例等實(shí)體的物理拓?fù)浜驮粕贤負(fù)潢P(guān)系。CMDB 保存的運(yùn)維元數(shù)據(jù)是異常處理的關(guān)鍵依據(jù)。

圖3 CMDB 中的實(shí)時(shí)拓?fù)潢P(guān)系Fig.3 Real-time topological relationships in CMDB

1.3 研究意義

當(dāng)異常發(fā)生時(shí),監(jiān)控中臺(tái)會(huì)根據(jù)已有的異常告警原則產(chǎn)生大量告警信息,短時(shí)間內(nèi)產(chǎn)生的數(shù)量龐大的告警(告警風(fēng)暴)給運(yùn)維工程師異常處理帶來了極大的挑戰(zhàn),在龐大的業(yè)務(wù)系統(tǒng)和海量的告警信息中迅速發(fā)現(xiàn)告警風(fēng)暴背后的異常關(guān)聯(lián)關(guān)系并鎖定根因的難度非常大。本文調(diào)研了智能運(yùn)維領(lǐng)域關(guān)于根因定位方法的相關(guān)文獻(xiàn),對(duì)微服務(wù)架構(gòu)下基于圖推理的根因定位方法進(jìn)行總結(jié),為大規(guī)模云平臺(tái)的智能根因定位系統(tǒng)建設(shè)提供參考。

2 根因定位系統(tǒng)框架

在大規(guī)模云平臺(tái)中,智能告警系統(tǒng)通過時(shí)間序列異常檢測(cè)算法結(jié)合人工設(shè)置的指標(biāo)異常檢測(cè)規(guī)則實(shí)時(shí)監(jiān)測(cè)系統(tǒng)狀態(tài),力求在最短時(shí)間內(nèi)發(fā)現(xiàn)指標(biāo)的異常情況。當(dāng)系統(tǒng)發(fā)生異常,由于大型的網(wǎng)絡(luò)、云平臺(tái)內(nèi)部設(shè)備眾多,關(guān)聯(lián)關(guān)系復(fù)雜,清晰的調(diào)用關(guān)系、設(shè)備與鏈接的相互連接關(guān)系是根因定位的重要基礎(chǔ)。除了CMDB 提供的網(wǎng)絡(luò)設(shè)備的物理拓?fù)渲?,還存在指標(biāo)間、協(xié)議間的關(guān)聯(lián)關(guān)系。上述關(guān)聯(lián)關(guān)系對(duì)異常的排查、止損與溯源起著至關(guān)重要的作用。根因定位系統(tǒng)在異常發(fā)生后基于相關(guān)運(yùn)維元數(shù)據(jù)分析結(jié)合智能運(yùn)維算法確定引發(fā)異常的根本原因。具體來講,根因定位系統(tǒng)主要分為兩個(gè)部分:系統(tǒng)首先通過關(guān)系學(xué)習(xí)方法構(gòu)建異常指標(biāo)、異常組件或異常事件之間的故障傳播圖,該圖描述了異常發(fā)生時(shí)刻設(shè)備實(shí)體及其關(guān)鍵指標(biāo)、告警狀態(tài)間的關(guān)聯(lián)關(guān)系或依賴關(guān)系。之后,根因定位系統(tǒng)通過圖推理算法可以得出圖中節(jié)點(diǎn)的根因可能性排名,取Top N 作為推薦根因輸出。

3 根因定位方法綜述

本章介紹微服務(wù)架構(gòu)下用于構(gòu)建故障傳播圖的關(guān)系學(xué)習(xí)方法和對(duì)故障傳播圖進(jìn)行節(jié)點(diǎn)重要性排序?qū)崿F(xiàn)推薦異常根因的相關(guān)算法。

3.1 關(guān)系學(xué)習(xí)方法

當(dāng)微服務(wù)架構(gòu)下的線上系統(tǒng)發(fā)生異常,由于大型的網(wǎng)絡(luò)、云平臺(tái)內(nèi)部設(shè)備眾多,關(guān)聯(lián)關(guān)系復(fù)雜,清晰的調(diào)用關(guān)系、設(shè)備與鏈接的相互連接關(guān)系是根因定位的重要基礎(chǔ)。除了網(wǎng)絡(luò)設(shè)備的物理拓?fù)渲猓€存在不同的指標(biāo)、協(xié)議等關(guān)聯(lián)關(guān)系。上述這些關(guān)聯(lián)關(guān)系都對(duì)異常的排查、止損與溯源起著至關(guān)重要的作用。根據(jù)異常時(shí)段的關(guān)聯(lián)關(guān)系構(gòu)成的有向無環(huán)圖(Directed Acyclic Graph,DAG)即為故障傳播圖。在故障傳播圖中,異常會(huì)沿著模塊和設(shè)備間的依賴關(guān)系傳播,導(dǎo)致更大范圍的模塊和設(shè)備的異常。

圖4 微服務(wù)根因定位框架Fig.4 Root cause localization framework

由于實(shí)際生產(chǎn)環(huán)境多種多樣,不同系統(tǒng)架構(gòu)下構(gòu)建出的故障傳播圖也各不相同。故障傳播圖按節(jié)點(diǎn)類型主要分為三類:以異常指標(biāo)為節(jié)點(diǎn)的故障傳播圖、以異常組件為節(jié)點(diǎn)的故障傳播圖和以異常事件為節(jié)點(diǎn)的故障傳播圖。相同屬性的節(jié)點(diǎn)多依賴算法挖掘和程序調(diào)用分析,不同屬性的節(jié)點(diǎn)多依賴CMDB 提供的拓?fù)潢P(guān)系,綜上,可以構(gòu)建出描述異常發(fā)生時(shí)段內(nèi)系統(tǒng)的故障傳播圖。

目前,已有的相關(guān)工作通過一些關(guān)系學(xué)習(xí)方法來構(gòu)建故障傳播圖。關(guān)系學(xué)習(xí)方法主要有三種:系統(tǒng)信息構(gòu)建、算法自動(dòng)學(xué)習(xí)和兩者相結(jié)合。這一節(jié)將分別介紹三種關(guān)系學(xué)習(xí)方法。

3.1.1 系統(tǒng)信息

基于系統(tǒng)信息構(gòu)建的故障傳播圖如圖5所示,根據(jù)系統(tǒng)設(shè)備、模塊之間明確的的部署、依賴、調(diào)用關(guān)系等系統(tǒng)信息可以直接構(gòu)建故障傳播圖,其中節(jié)點(diǎn)為異常性能指標(biāo)對(duì)應(yīng)的系統(tǒng)設(shè)備、模塊,邊為上述節(jié)點(diǎn)之間的部署、依賴、調(diào)用關(guān)系。這里的系統(tǒng)信息主要包括靜態(tài)的物理設(shè)備之間的部署關(guān)系(通過CMDB 獲?。┮约皠?dòng)態(tài)的實(shí)時(shí)系統(tǒng)模塊之間的調(diào)用關(guān)系。通過配置數(shù)據(jù)采集模塊、日志分析工具、程序調(diào)用分析工具等手段獲取系統(tǒng)模塊之間的實(shí)時(shí)調(diào)用信息。

圖5 以異常組件為節(jié)點(diǎn)的故障傳播圖示例Fig.5 A example of a fault propagation graph with anomalous components as nodes

根據(jù)系統(tǒng)信息可以直接構(gòu)建故障傳播圖,但在實(shí)際的生產(chǎn)環(huán)境中,收集額外的系統(tǒng)數(shù)據(jù)需要更改線上Web 服務(wù)的架構(gòu)。由于更改線上系統(tǒng)架構(gòu)十分困難,所以基于系統(tǒng)信息的構(gòu)圖方法難以應(yīng)用。

3.1.2 算法自動(dòng)學(xué)習(xí)

采用算法自動(dòng)學(xué)習(xí)的方法構(gòu)建故障傳播圖的原理是通過對(duì)監(jiān)控指標(biāo)數(shù)據(jù)的學(xué)習(xí),按需提取監(jiān)控指標(biāo)之間的依賴關(guān)系,以確定故障傳播圖中的異常節(jié)點(diǎn)及其關(guān)聯(lián)關(guān)系。其中,節(jié)點(diǎn)為監(jiān)控指標(biāo),邊為挖掘出的指標(biāo)之間的依賴關(guān)系。

目前相關(guān)工作中最常用的思路為通過PC 算法[8]自動(dòng)構(gòu)建監(jiān)控指標(biāo)之間的依賴關(guān)系來構(gòu)建故障傳播圖。PC 算法主要分為兩步。首先,通過檢驗(yàn)條件獨(dú)立性確定節(jié)點(diǎn)間的依賴關(guān)系,生成一個(gè)無向圖以構(gòu)建骨架(skeleton)。PC 算法把上述過程轉(zhuǎn)化為d 分隔(d-separation)問題,采用了Fisher Z Test 作為條件獨(dú)立性檢驗(yàn)方法對(duì)任意兩個(gè)節(jié)點(diǎn)進(jìn)行條件獨(dú)立性檢驗(yàn)以判斷d 分隔。然后,利用d 分隔的原理來確定圖中邊的依賴方向,把無向圖擴(kuò)展為有向無環(huán)圖[8]。

除PC 算法之外,也可以通過相關(guān)性分析方法挖掘監(jiān)控指標(biāo)數(shù)據(jù)之間的依賴關(guān)系從而構(gòu)建故障傳播圖。然而,在生產(chǎn)環(huán)境中可能存在一些難以觀察和推導(dǎo)的隱變量,監(jiān)控指標(biāo)數(shù)據(jù)和告警信息也可能存在誤報(bào)、漏報(bào)以及缺損,導(dǎo)致通過算法自動(dòng)學(xué)習(xí)到的故障傳播圖準(zhǔn)確度有限。

3.1.3 兩者結(jié)合

為了構(gòu)建更完整、更準(zhǔn)確的故障傳播圖,也有一些相關(guān)工作將系統(tǒng)信息和自動(dòng)學(xué)習(xí)方法結(jié)合使用。

首先結(jié)合系統(tǒng)架構(gòu)的物理拓?fù)潢P(guān)系和系統(tǒng)模塊之間的實(shí)時(shí)調(diào)用關(guān)系等系統(tǒng)信息構(gòu)造系統(tǒng)模塊之間的故障傳播圖,通過PC 算法或者相關(guān)性分析方法挖掘單個(gè)系統(tǒng)模塊節(jié)點(diǎn)上不同監(jiān)控指標(biāo)之間的因果關(guān)系,最后通過結(jié)合構(gòu)造的系統(tǒng)模塊之間的故障傳播圖和單個(gè)系統(tǒng)模塊節(jié)點(diǎn)上的監(jiān)控指標(biāo)之間的因果圖得到一個(gè)完整的全局故障傳播圖。

3.2 根因定位方法

3.1 中的故障傳播圖描述了系統(tǒng)異常時(shí)刻關(guān)鍵異常節(jié)點(diǎn)的關(guān)聯(lián)關(guān)系,依據(jù)故障傳播圖提供的節(jié)點(diǎn)類型、異常指標(biāo)、拓?fù)潢P(guān)系等信息,對(duì)圖中節(jié)點(diǎn)進(jìn)行重要性排序,排序結(jié)果可以作為本次異常事件的根因推薦,本章節(jié)將對(duì)相關(guān)算法進(jìn)行介紹。

3.2.1 深度優(yōu)先搜索

深度優(yōu)先搜索算法[9](Depth-First-Search,簡(jiǎn)稱DFS)是一種用于遍歷或搜索樹或圖的算法。DFS會(huì)盡可能深地搜索樹的分支。當(dāng)節(jié)點(diǎn)的所在邊都已被探尋過,搜索將回溯到發(fā)現(xiàn)節(jié)點(diǎn)的那條邊的起始節(jié)點(diǎn)。這一過程一直進(jìn)行到已發(fā)現(xiàn)從源節(jié)點(diǎn)可達(dá)的所有節(jié)點(diǎn)為止。在根因定位領(lǐng)域,根據(jù)上述關(guān)系學(xué)習(xí)方法獲取的故障傳播圖表示了異常的傳播過程,因此對(duì)其進(jìn)行深度優(yōu)先搜索是獲得此次異常根因的方法之一。

3.2.2 皮爾森相關(guān)系數(shù)

在統(tǒng)計(jì)學(xué)中,皮爾森相關(guān)系數(shù)[10](Pearson correlation coefficient)用于度量?jī)蓚€(gè)變量和之間的相關(guān)程度(線性相關(guān))。兩個(gè)變量之間的皮爾森相關(guān)系數(shù)定義為兩個(gè)變量的協(xié)方差除以它們標(biāo)準(zhǔn)差的乘積,其值介于-1 與1 之間。

由于各種監(jiān)控都是以時(shí)間序列的形式存在,因此對(duì)于兩個(gè)異常的系統(tǒng)組件,可以分別選取其異常發(fā)生及前一段時(shí)間的監(jiān)控指標(biāo),計(jì)算兩個(gè)時(shí)間序列的皮爾森相關(guān)系數(shù),表示異常組件的異常關(guān)聯(lián)強(qiáng)度。

3.2.3 PageRank 算法

PageRank 算法[11]是Google 公司所使用的對(duì)其搜索引擎搜索結(jié)果中的網(wǎng)頁進(jìn)行排名的一種算法。其本質(zhì)是一種以節(jié)點(diǎn)之間的連接個(gè)數(shù)和權(quán)值作為主要因素粗略地分析故障傳播圖中節(jié)點(diǎn)重要性的算法。

對(duì)于故障傳播圖中某個(gè)節(jié)點(diǎn)pi,其PageRank 值的計(jì)算公式如下:

一般情況下,云原生場(chǎng)景下的故障傳播圖是有向無環(huán)圖,因此對(duì)于已知的故障傳播圖可以通過PageRank 算法計(jì)算圖中節(jié)點(diǎn)的重要程度。有向無環(huán)圖中節(jié)點(diǎn)的重要性排名也可以作為各節(jié)點(diǎn)對(duì)該異常的影響排名。

3.2.4 隨機(jī)游走算法

隨機(jī)游走[12](Random Walk,縮寫為 RW)是一種數(shù)學(xué)統(tǒng)計(jì)模型,它由一連串的軌跡所組成。在原生隨機(jī)游走算法中,每一次游走的方向都是隨機(jī)的??梢越梃b其原理,設(shè)計(jì)故障傳播圖的游走策略并生成概率轉(zhuǎn)移矩陣。每一次游走因子從當(dāng)前節(jié)點(diǎn)向更有可能是異常根因的節(jié)點(diǎn)轉(zhuǎn)移或繼續(xù)留在當(dāng)前節(jié)點(diǎn),重復(fù)此步驟上萬次,并記錄游走軌跡?;诠收蟼鞑D中每個(gè)節(jié)點(diǎn)被訪問的次數(shù)對(duì)節(jié)點(diǎn)進(jìn)行排序,結(jié)果可作為各節(jié)點(diǎn)對(duì)異常的貢獻(xiàn)度排名,從而確定異常根因。隨機(jī)游走算法分為一階隨機(jī)游走和二階隨機(jī)游走。一階隨機(jī)游走是指假設(shè)下一個(gè)要訪問的節(jié)點(diǎn)只依賴于當(dāng)前節(jié)點(diǎn)(馬爾科夫性),其缺點(diǎn)是無法捕獲高階依賴關(guān)系。一階隨機(jī)游走根據(jù)最后一個(gè)頂點(diǎn)的狀態(tài)選擇下一個(gè)頂點(diǎn),它的轉(zhuǎn)移概率的計(jì)算方式為:

二階隨機(jī)游走在訪問下一個(gè)節(jié)點(diǎn)時(shí)依賴于當(dāng)前節(jié)點(diǎn)和當(dāng)前節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)。因此,二階隨機(jī)游走建立了高階依賴關(guān)系,提高了應(yīng)用的精度。二階隨機(jī)游走是根據(jù)最后兩個(gè)頂點(diǎn)和的狀態(tài)選擇下一個(gè)頂點(diǎn),轉(zhuǎn)移概率是

4 根因定位方法應(yīng)用

本章節(jié)介紹上述關(guān)系學(xué)習(xí)方法和基于圖推理的根因分析方法的實(shí)踐。

MonitorRank[13]首先通過收集微服務(wù)應(yīng)用上配置的傳感器記錄微服務(wù)之間的調(diào)用關(guān)系,然后根據(jù)異常時(shí)間段的調(diào)用關(guān)系來構(gòu)建故障傳播圖。其基本思想是:故障傳播圖的指標(biāo)m和異常前端節(jié)點(diǎn)(負(fù)責(zé)接收用戶的請(qǐng)求以及進(jìn)一步調(diào)用下游請(qǐng)求以完成用戶的請(qǐng)求的微服務(wù))的指標(biāo)的相關(guān)性表示了該節(jié)點(diǎn)是根因的可能性。為避免非根因節(jié)點(diǎn)和異常前端節(jié)點(diǎn)的指標(biāo)有較高的相關(guān)性,需要分別考慮指標(biāo)之間的相關(guān)性和服務(wù)節(jié)點(diǎn)之間的依賴關(guān)系。概率轉(zhuǎn)移矩陣的設(shè)計(jì)是隨機(jī)游走算法的關(guān)鍵,MonitorRank主要使用故障傳播圖中不同節(jié)點(diǎn)監(jiān)控指標(biāo)的相關(guān)性來生成轉(zhuǎn)移概率。向量定義了每個(gè)節(jié)點(diǎn)和異常前端節(jié)點(diǎn)指標(biāo)的相關(guān)性因此概率轉(zhuǎn)移矩陣可以定義為在實(shí)際情況中,每個(gè)微服務(wù)節(jié)點(diǎn)的異常根因并非一定由其下游調(diào)用節(jié)點(diǎn)導(dǎo)致,也可能是其自身節(jié)點(diǎn)或上游節(jié)點(diǎn)導(dǎo)致。綜上,MonitorRank 給出的轉(zhuǎn)移概率為:

因此完整的概率轉(zhuǎn)移矩陣的定義為:

MicroRCA[14]在構(gòu)建故障傳播圖時(shí)同樣依賴微服務(wù)應(yīng)用間的調(diào)用關(guān)系。與MonitorRank 不同的是,MicroRCA 同時(shí)會(huì)考慮微服務(wù)應(yīng)用在宿主機(jī)上的部署關(guān)系。因?yàn)樵趯?shí)際的運(yùn)維異常處理場(chǎng)景中,當(dāng)一臺(tái)物理機(jī)宕機(jī),的確會(huì)影響到該異常物理機(jī)上部署的全部微服務(wù)應(yīng)用。MicroRCA 同樣基于皮爾森相關(guān)系數(shù)計(jì)算不同節(jié)點(diǎn)之間的相關(guān)性,用作Personalized PageRank 算法[15]中的權(quán)值來推斷異常根因。

與上述工作相似,TON18[16]通過OpenStack 開源云計(jì)算管理平臺(tái)中的系統(tǒng)接口和PreciseTracer 程序調(diào)用分析工具構(gòu)建模塊之間的故障傳播圖,然后通過隨機(jī)游走算法分析故障傳播圖實(shí)現(xiàn)根因定位。

MicroHECL[17]基于監(jiān)控中臺(tái)的服務(wù)調(diào)用關(guān)系和指標(biāo)動(dòng)態(tài)構(gòu)建一定時(shí)間窗口內(nèi)的目標(biāo)微服務(wù)系統(tǒng)的故障傳播圖。故障傳播圖上除了表示各個(gè)服務(wù)節(jié)點(diǎn)之間的調(diào)用關(guān)系外,還記錄了各種度量指標(biāo),例如響應(yīng)時(shí)間(RT)、錯(cuò)誤數(shù)量(EC)和每秒請(qǐng)求數(shù)(QPS)等信息。由于根因服務(wù)和初始異常服務(wù)通常都處于由一系列的異常服務(wù)組成的異常傳播鏈上,MicroHECL 分析了所有可能的異常傳播鏈路,并采用了剪枝策略來消除不相關(guān)的服務(wù)調(diào)用,從而得到候選異常根因服務(wù)集合。MicroHECL 認(rèn)為初始異常服務(wù)的異常指標(biāo)數(shù)據(jù)與根因服務(wù)的異常指標(biāo)有相似的變化趨勢(shì),因此使用皮爾森相關(guān)性系數(shù)進(jìn)行相關(guān)性分析,基于相關(guān)性值對(duì)候選異常根因服務(wù)進(jìn)行排序。

表1 基于圖推理的根因定位方法實(shí)踐Table 1 Practice of abnormal diagnosis method based on graph reasoning

Groot[18]首先從初始告警或者可疑服務(wù)開始通過分布式執(zhí)行軌跡和日志分析維護(hù)一個(gè)全局服務(wù)依賴圖G,服務(wù)依賴圖中的有向邊表示服務(wù)調(diào)用或其他形式的依賴。然后Groot 將G中的每個(gè)服務(wù)對(duì)應(yīng)的異常情況映射成異常事件,總結(jié)了該系統(tǒng)中的各種類型的指標(biāo)、日志的異常行為。結(jié)合SRE 的領(lǐng)域知識(shí)構(gòu)建事件之間的因果關(guān)系,形成基于事件的實(shí)時(shí)因果關(guān)系圖。Groot 提出了改進(jìn)的PageRank 算法GrootRank,使每條邊都與加權(quán)傳播的加權(quán)分?jǐn)?shù)相關(guān)聯(lián),對(duì)于誤報(bào)率高的警報(bào),算法將其設(shè)置得較低。此外,由于葉子節(jié)點(diǎn)更可能是根本原因,GrootRank算法將個(gè)性化向量定制葉子節(jié)點(diǎn)和其余節(jié)點(diǎn)的分?jǐn)?shù),以增強(qiáng)葉子節(jié)點(diǎn)之間的傳播。Groot 基于事件類型構(gòu)建因果關(guān)系圖有兩個(gè)顯著的優(yōu)點(diǎn):

(1)使用監(jiān)控事件作為基本節(jié)點(diǎn)對(duì)比使用服務(wù)節(jié)點(diǎn)能夠獲得更準(zhǔn)確的結(jié)果;

(2)因果關(guān)系圖支持各種事件類型,例如性能指標(biāo)、狀態(tài)日志和系統(tǒng)變更等,并且允許SRE 和開發(fā)人員引入不同的異常事件類型,使得Groot 更加靈活,并支持更廣泛的事件類型。

CloudRanger[19]提出了一種動(dòng)態(tài)因果關(guān)系分析方法,能夠在缺乏拓?fù)涞那闆r下構(gòu)建故障傳播圖,基于二階隨機(jī)游走的啟發(fā)式搜索算法來識(shí)別根因服務(wù)。CloudRanger 首先基于PC 算法自動(dòng)構(gòu)建監(jiān)控指標(biāo)之間的故障傳播圖。之后,CloudRanger 利用二階隨機(jī)游走算法來識(shí)別根因服務(wù)。利用皮爾森相關(guān)性系數(shù)定義相關(guān)性特征以描述指標(biāo)序列之間的相關(guān)性。給定一個(gè)服務(wù)集,以及對(duì)于任何一對(duì)服務(wù)定義指標(biāo)數(shù)據(jù)矩陣,相關(guān)性,對(duì)與的相關(guān)性定義如下:

此外,CloudRanger 設(shè)置了兩種額外的轉(zhuǎn)換類型,即后向和自向,使算法能夠找到更多的路線并使其隨機(jī)游走更具啟發(fā)性。假設(shè)表示已經(jīng)被訪問過的節(jié)點(diǎn),是從當(dāng)前服務(wù)到它的鄰居的后向轉(zhuǎn)移概率,受后向常數(shù)限制,后向轉(zhuǎn)移概率計(jì)算如下:

給定故障傳播圖,CloudRanger 根據(jù)以上公式計(jì)算前向、后向、自我轉(zhuǎn)移概率隨機(jī)游走,記錄每個(gè)服務(wù)節(jié)點(diǎn)的訪問次數(shù)并將其降序排序輸出為根因識(shí)別結(jié)果。

與CloudRanger 相似的是,MSRank[20]、Service-Rank[21]也通過自動(dòng)構(gòu)建監(jiān)控指標(biāo)之間的故障傳播圖去定位根因。它們首先利用PC 算法構(gòu)造有向無環(huán)圖表示監(jiān)控指標(biāo)間的依賴關(guān)系,然后使用不同的算法遍歷生成的故障傳播圖實(shí)現(xiàn)根因定位。其中,MSRank 使用了二階隨機(jī)游走算法去定位根因,ServiceRank 使用皮爾森相關(guān)系數(shù)進(jìn)行相關(guān)性分析以實(shí)現(xiàn)根因定位。

MicroCause[22]在上述工作的基礎(chǔ)上提出一些改進(jìn)。在PC 算法的基礎(chǔ)上提出PCTS(Path Condition Time Series)算法構(gòu)建監(jiān)控指標(biāo)間的依賴關(guān)系,使用TCORW(Temporal Cause Oriented Random Walk)算法去定位根因。當(dāng)關(guān)鍵性能指標(biāo)(Key Performance Indicator,簡(jiǎn)稱KPI) 中檢測(cè)到在線異常 時(shí),MicroCause 將被激活。發(fā)生異常微服務(wù)在異常前數(shù)小時(shí)的監(jiān)控指標(biāo)數(shù)據(jù)將用作MicroCause 的輸入。MicroCause 利用PCTS 算法用于生成該異常的故障傳播圖。使用改進(jìn)的PC 算法用于學(xué)習(xí)時(shí)間序列的因果圖。PCTS 算法假設(shè),如果時(shí)間序列A 和時(shí)間序列B 在某個(gè)時(shí)間點(diǎn)中存在因果關(guān)系,那么在故障傳播圖中A 代表節(jié)點(diǎn)和B 代表節(jié)點(diǎn)間就會(huì)存在一條邊。因此,因果關(guān)系最終會(huì)被合并轉(zhuǎn)化為故障傳播圖。與此同時(shí),異常檢測(cè)模塊檢測(cè)輸入數(shù)據(jù)集是否存在異常。故障傳播圖學(xué)習(xí)模塊和異常檢測(cè)模塊可以并行處理。MicroCause 還設(shè)計(jì)了面向時(shí)間因果的隨機(jī)游走(TCORW)。MicroCause 利用偏相關(guān)系數(shù)(Partial Correlation)來計(jì)算轉(zhuǎn)移概率矩陣。與Pearson 相關(guān)性不同的是,和異常KPI 因果性更強(qiáng)的系統(tǒng)指標(biāo)將具有更高的偏相關(guān)系數(shù),而皮爾森相關(guān)性更注重兩個(gè)指標(biāo)之間的相關(guān)性,因此和異常KPI 因果性更強(qiáng)的系統(tǒng)指標(biāo)將在隨機(jī)游走中獲得更高的訪問次數(shù)。然后隨機(jī)游走的結(jié)果和指標(biāo)的異常程度對(duì)于異常的指標(biāo)計(jì)算潛在根因得分,計(jì)算方式如下:

除PC 算法外,也有一些論文采用相關(guān)性分析的方法構(gòu)建故障傳播圖。例如,BRCA[23]通過分析應(yīng)用服務(wù)監(jiān)控指標(biāo)數(shù)據(jù)中的告警信息去構(gòu)造故障傳播圖,然后通過基于故障傳播圖設(shè)計(jì)排序算法實(shí)現(xiàn)根因定位。

另外也有一些算法結(jié)合系統(tǒng)信息和自動(dòng)學(xué)習(xí)方法以構(gòu)建更完整的故障傳播圖。Microscope[24]首先通過PC 算法和網(wǎng)絡(luò)IP 及端口信息構(gòu)建了微服務(wù)內(nèi)各子服務(wù)之間的故障傳播圖,然后通過一些預(yù)定義的規(guī)則去獲取候選根因列表,并使用皮爾森相關(guān)性系數(shù)對(duì)候選根因排序。CauseInfer[25]通過不同服務(wù)節(jié)點(diǎn)之間的網(wǎng)絡(luò)通信數(shù)據(jù)去構(gòu)造服務(wù)節(jié)點(diǎn)之間的故障傳播圖,基于PC 算法去構(gòu)造單個(gè)服務(wù)節(jié)點(diǎn)上不同監(jiān)控指標(biāo)之間的因果圖,結(jié)合構(gòu)造的服務(wù)節(jié)點(diǎn)之間的故障傳播圖和單個(gè)服務(wù)節(jié)點(diǎn)上的因果圖,通過DFS算法搜索所有異常節(jié)點(diǎn),并根據(jù)得分對(duì)根因進(jìn)行排序輸出。DFS 算法遍歷得到的故障傳播圖,當(dāng)某個(gè)異常節(jié)點(diǎn)無異常子節(jié)點(diǎn),則判斷此指標(biāo)為根因指標(biāo)。如果該節(jié)點(diǎn)指標(biāo)正常,則對(duì)父節(jié)點(diǎn)指標(biāo)進(jìn)行異常檢測(cè),重復(fù)此步驟。由于存在多條因果路徑,DFS 算法最終得到的是根因節(jié)點(diǎn)的集合?;趜-score 方法計(jì)算每個(gè)根因節(jié)點(diǎn)的得分,對(duì)其進(jìn)行排序輸出。計(jì)算公式如下,其中和是平均值和標(biāo)準(zhǔn)滑動(dòng)窗口的偏差。

5 結(jié)論與展望

本文介紹了云原生架構(gòu)下面臨的運(yùn)維挑戰(zhàn),總結(jié)了通用的微服務(wù)架構(gòu)根因定位框架,分別介紹了基于指標(biāo)、系統(tǒng)拓?fù)潢P(guān)系、異常告警等信息構(gòu)造故障傳播圖,以及異常根因推理的方法。文中介紹的微服務(wù)架構(gòu)根因定位方案有以下特點(diǎn):

(1)通用性強(qiáng):基于圖推理的根因定位方法適用于云原生架構(gòu)的多種類型異常。

(2)可解釋性強(qiáng):本文闡述的故障傳播圖的構(gòu)建方案能夠自動(dòng)梳理告警風(fēng)暴背后的邏輯關(guān)聯(lián),直觀地將異常在系統(tǒng)中的傳播關(guān)系展現(xiàn)給運(yùn)維工程師,且故障傳播圖的構(gòu)建依賴準(zhǔn)確的系統(tǒng)拓?fù)浣Y(jié)構(gòu)和應(yīng)用調(diào)用日志,因此具有很強(qiáng)的可解釋性。

(3)自適應(yīng)且輕量級(jí):以上方案只需要少量人工干預(yù),節(jié)約了大量人力,并且該框架可以適應(yīng)網(wǎng)絡(luò)應(yīng)用的動(dòng)態(tài)變化(如線上系統(tǒng)的頻繁變更)。

現(xiàn)有的框架僅通過可捕獲的時(shí)空數(shù)據(jù)挖掘潛在的依賴關(guān)系,但這類挖掘方法的準(zhǔn)確度有限。此外,現(xiàn)有的方法在挖掘到依賴關(guān)系后僅依賴故障傳播圖進(jìn)行異常的定位,鎖定可能導(dǎo)致異常的關(guān)鍵指標(biāo)、關(guān)鍵組件或關(guān)鍵異常事件,尚未有方法能夠給出對(duì)應(yīng)止損策略。另外,如果能夠結(jié)合運(yùn)維人員專家經(jīng)驗(yàn),就能構(gòu)建出更準(zhǔn)確、更精簡(jiǎn)的故障傳播圖。在異常根因推理過程中,可以基于強(qiáng)化學(xué)習(xí)等方法提高定位的準(zhǔn)確性,實(shí)現(xiàn)快速、準(zhǔn)確的止損。

利益沖突說明

所有作者聲明不存在利益沖突關(guān)系。

猜你喜歡
根因監(jiān)控節(jié)點(diǎn)
CM節(jié)點(diǎn)控制在船舶上的應(yīng)用
根因分析法提高藥品不良反應(yīng)報(bào)告合格率
The Great Barrier Reef shows coral comeback
Analysis of the characteristics of electronic equipment usage distance for common users
基于AutoCAD的門窗節(jié)點(diǎn)圖快速構(gòu)建
你被監(jiān)控了嗎?
Zabbix在ATS系統(tǒng)集中監(jiān)控中的應(yīng)用
基于矩陣編碼的自動(dòng)路測(cè)根因定位方法
看監(jiān)控?cái)z像機(jī)的4K之道
根因分析法在提高科室備用藥品質(zhì)量管理中的應(yīng)用
喀喇沁旗| 闵行区| 郧西县| 桃园市| 友谊县| 灌云县| 长子县| 盐池县| 商城县| 古交市| 新田县| 正定县| 来宾市| 霍城县| 九江县| 恩施市| 贵阳市| 韩城市| 疏附县| 元氏县| 班玛县| 静宁县| 嘉义县| 子洲县| 德江县| 盐边县| 扶绥县| 汝阳县| 南汇区| 台东县| 上蔡县| 五大连池市| 田林县| 涟水县| 大名县| 泌阳县| 阿勒泰市| 潍坊市| 封开县| 三穗县| 砚山县|