復(fù)雜運維場景下,如何實現(xiàn)分鐘級的故障根因定位
作者介紹
熊亞軍
靈犀技術(shù)總監(jiān),原百度系統(tǒng)部高級項目經(jīng)理,負(fù)責(zé)百度IT基礎(chǔ)設(shè)施監(jiān)控團(tuán)隊,其帶領(lǐng)的團(tuán)隊經(jīng)歷了百度服務(wù)器規(guī)模邁入幾十萬量級,網(wǎng)絡(luò)架構(gòu)數(shù)次演進(jìn),對服務(wù)器尤其是網(wǎng)絡(luò)層的監(jiān)控和運維自動化智能化有豐富的經(jīng)驗。
開篇:
在超級互聯(lián)網(wǎng)公司,隨著服務(wù)器規(guī)模都早早邁過 10 萬臺量級,加之業(yè)務(wù)模式的多樣性和 IT 架構(gòu)的云化遷移,其 IT 運維團(tuán)隊面臨的挑戰(zhàn)與日俱增,常規(guī)的系統(tǒng)和經(jīng)驗都需要不斷迭代更新。
本文將給大家介紹在超級互聯(lián)網(wǎng)公司如何基于網(wǎng)絡(luò)的故障根因自動定位技術(shù),提高故障定位速度,從而提高業(yè)務(wù)可用性。
規(guī)模效應(yīng)和云的效應(yīng)極大提升了運維的復(fù)雜性
首先,我們先來看看超級互聯(lián)網(wǎng)公司的業(yè)務(wù)架構(gòu)示例圖:
在超級互聯(lián)網(wǎng)公司中,通常不同的層次都由不同的團(tuán)隊來負(fù)責(zé)運維管理,同層次不同的硬件/系統(tǒng)/應(yīng)用都由不同的小組來負(fù)責(zé)運維管理。
就基礎(chǔ)設(shè)施即服務(wù)這層來說,隨著IT設(shè)備規(guī)模的不斷增加,IT 設(shè)備故障的告警種類與告警數(shù)量也隨之急劇增加。
告警的多面性、冗余性、耦合性,導(dǎo)致某些核心層面的故障會引起大面積告警的現(xiàn)象,而這些告警又有可能分屬不同小組,運維人員處理故障會增加排查問題的難度以及增加小組間溝通成本。
同時因為對故障信息缺乏統(tǒng)一的管理,無法對告警系統(tǒng)進(jìn)行反饋優(yōu)化,致使誤報漏報頻出。同樣也無法進(jìn)行全面的故障信息統(tǒng)計分析,不知道如何對基礎(chǔ)設(shè)施資源進(jìn)行風(fēng)險管理。
眾所周知,IT基礎(chǔ)設(shè)施層的運維工作,直接影響公司服務(wù)穩(wěn)定性。一次服務(wù)中斷事件便會對公司造成極大的經(jīng)濟(jì)損失。
但正如上述現(xiàn)狀描述中提到的問題:
- 運維平臺繁雜多樣,
- 運維小組之間溝通滯后,
- 告警信息共享程度低,
- 工程師水平參差不齊,故障處理自動化程度較低。
告警系統(tǒng)缺乏有效的反饋機(jī)制進(jìn)行系統(tǒng)優(yōu)化,同時缺少全面有效的故障信息沉淀,無法幫助預(yù)算與評估采購系統(tǒng)進(jìn)行合理采購。
這些都極大約束了運維水平的與時俱進(jìn),新的方法論和新的運維技術(shù)有迫切的內(nèi)部需求。
我們收斂匯總一下復(fù)雜運維場景下的主要痛點:
- 如何在告警風(fēng)暴時壓縮告警
- 如何快速從大量告警中找到故障根源
- 如何提高不同運維小組的故障處理協(xié)作效率
- 如何實現(xiàn)對IT基礎(chǔ)設(shè)施的風(fēng)險管理
如何應(yīng)對?打造以故障定位為核心的運維生態(tài)體系!
基于上述背景下的痛點問題,一套以故障定位為核心的運維生態(tài)體系的建立便成為高逼格的不可或缺:
- 統(tǒng)一故障信息入口,使用機(jī)器學(xué)習(xí)的算法對信息進(jìn)行分類整合和推理,自動定位故障生成case,設(shè)計開發(fā)統(tǒng)一故障處理平臺,通知工程師來平臺進(jìn)行處理故障。
- 同時將所有數(shù)據(jù)進(jìn)行沉淀分析,反饋給告警系統(tǒng)和質(zhì)量管理系統(tǒng),提高故障處理效率,加強(qiáng)基礎(chǔ)設(shè)施風(fēng)險管理。
而在這套生態(tài)體系中,故障自動定位技術(shù)便是體系是否能夠成功建立的核心要素。
故障根因自動定位簡要科普
故障根因自動定位系統(tǒng)為人工智能的分支,屬于診斷性專家系統(tǒng),專家系統(tǒng)通常包含:
- 人機(jī)交互界面
- 知識庫
- 推理機(jī)
- 解釋器
- 綜合數(shù)據(jù)庫
- 知識獲取
其中最重要的是知識庫和推理機(jī)。知識庫用于專家經(jīng)驗的存儲,是一種靜態(tài)規(guī)則,推理機(jī)根據(jù)現(xiàn)象結(jié)合知識庫中的規(guī)則反復(fù)推理得出結(jié)論。規(guī)則集的組成形式有多種方式,本文重點介紹的是二叉決策樹。
故障根因定位系統(tǒng)的設(shè)計架構(gòu)系統(tǒng)
故障根因自動定位系統(tǒng)主要由監(jiān)控系統(tǒng)、接入系統(tǒng)、推理系統(tǒng)、通告系統(tǒng)四個部分組成,分別的功能如下:
- 監(jiān)控系統(tǒng):監(jiān)控系統(tǒng)負(fù)責(zé)各類探針數(shù)據(jù)的采集,根據(jù)監(jiān)控規(guī)則產(chǎn)生告警。
- 接入系統(tǒng):接入系統(tǒng)負(fù)責(zé)對各類監(jiān)控系統(tǒng)的告警信息進(jìn)行匯總并格式化處理。
- 推理系統(tǒng):推理系統(tǒng)根據(jù)專家推理樹進(jìn)行故障根因定位推理,定位最終告警原因,確定故障根源。
- 通告系統(tǒng):通告系統(tǒng)根據(jù)定位出的故障根因進(jìn)行故障信息通告。
看個實際案例,看看到底能解決啥問題?
故障推理算法是整個故障定位系統(tǒng)的核心,這里重點闡述下故障推理算法的實現(xiàn)方式。
故障定位算法采用機(jī)器學(xué)習(xí)中的二叉決策樹的方式實現(xiàn):
- 一方面希望將故障所產(chǎn)生的所有告警信息整合為一條信息,減少告警量。
- 另一方面希望能夠智能定位出故障點,減少工程師排查問題的時間,并引入自動化處理。
以某公司網(wǎng)絡(luò)故障根因定位為例,實現(xiàn)上述目標(biāo)需要三步:
第一步:將問題排障過程的經(jīng)驗提煉成二叉決策樹。
第二步:將告警信息按照時間分片算法進(jìn)行分類分組。
第三步:將分組的告警信息輸出給決策樹進(jìn)行自動推理輸出推理結(jié)果。
看看推理樹是怎么構(gòu)建的呢?
根據(jù)某公司目前網(wǎng)絡(luò)故障時的告警特點和網(wǎng)絡(luò)工程師運維的特點,得出下面的一些結(jié)論,而這些結(jié)論可幫助我們構(gòu)建出經(jīng)驗推理樹。
A、告警信息是分層次的:
- 第一層是交換機(jī)級別,如ROUTER_ID、CPU、TM告警。
- 第二層次是板卡告警,比如板卡芯片問題,板卡故障。
- 第三層次是端口告警,LINK-NEW告警等與端口相關(guān)的告警。
B、每一層的告警又可分為原子告警,衍生性告警。
比如:
第三層告警,LINK-NEW便是衍生性的告警,而PORT DOWN的告警為原子告警,即PORT DOWN了一定會有LINK-NEW的告警,反之不然。
根據(jù)以上結(jié)論,故障定位的原則為:重要性從最高層往最低層報,每層中重要性從原子告警到衍生性告警報。
比如:
收到了ROUTER_ID,PORT DOWN, LINK-NEW的告警,那么只需報ROUTER_ID的告警。
如果只有PORT DOWN, LINK-NEW的告警,就重點報`PORT。
DOWN的告警,如果只有LINK-NEW的告警,則只能報LINK-NEW`的告警。
引入故障追蹤列表,比如第二層的【BOARD告警】引起第三層的告警【PORT、OSPF、LINK-NEW】,每個故障追蹤列表形成一個Case,即Case的生成過程不是以某交換機(jī)為單位,而是以故障追蹤列表為單位。
根據(jù)上述的分析,設(shè)計推理樹如下圖所示:
沒太看明白?看看推理樹的構(gòu)建原則和實現(xiàn)方式
A、推理樹的構(gòu)建有以下四個原則:
原則一:告警從高層向底層,在邏輯層次上面,越根源性的告警越先判斷。
例如:
A出現(xiàn)問題必然導(dǎo)致B出現(xiàn)問題,B出現(xiàn)問題必然導(dǎo)致C出現(xiàn)問題,在邏輯層次上面,A的根源性最高,當(dāng)A、B、C告警同時到達(dá),先判斷A,判定A、B、C故障的根因為A。
在告警關(guān)聯(lián)度上面,越明確關(guān)聯(lián)的告警越先判斷。
例如:
故障A對應(yīng)有A1、A2、A3三種告警,關(guān)聯(lián)度依次為A1 > A2 > A3,先判斷A1,由A1直接確定A1、A2、A3的故障根因為A。
原則二:從原子到衍生告警。
原則三:推理樹的建立根據(jù)告警來定。
原則四:驗證規(guī)則,根據(jù)經(jīng)驗和知識庫來定。
B、推理過程實現(xiàn),有以下三種方式:
方式一:
給出特征 —> 推理機(jī) —> 結(jié)論 —> 驗證 —> 發(fā)出結(jié)果
方式二:
自主收集特征 —> 推理機(jī) —> 結(jié)論 —> 驗證 —> 發(fā)出結(jié)果
方式三:
數(shù)據(jù) —> 根據(jù)特征設(shè)計的推理機(jī) —> 結(jié)論 —> 驗證 —> 發(fā)出結(jié)果
簡單來說,方式一就是半人工方式、方式二就是簡單機(jī)器學(xué)習(xí)方式、方式三就是智能機(jī)器學(xué)習(xí)方式。
來個總結(jié)吧!4步搭建你的故障根因定位系統(tǒng)
看完是不是有點小激動,想動手試試如何構(gòu)建一套智能故障根因定位系統(tǒng),需要如下幾個步驟:
第一步:構(gòu)建CMDB
CMDB是監(jiān)控系統(tǒng)的基礎(chǔ),數(shù)據(jù)部分通常分為靜態(tài)、動態(tài)兩大類。
就網(wǎng)絡(luò)設(shè)備而言,靜態(tài)數(shù)據(jù)通常包括:
- 機(jī)框
- 矩陣
- 板卡
- 模塊
- 端口
動態(tài)數(shù)據(jù)通常包括:
- IP地址
- 路由
- 端口狀態(tài)
- 端口流量
第二步: 告警標(biāo)準(zhǔn)化
需要統(tǒng)一告警信息的格式,便于故障定位系統(tǒng)提取關(guān)鍵特征級并進(jìn)行分類分組。
第三步:梳理告警關(guān)系
理清告警之間的關(guān)聯(lián)關(guān)系,關(guān)聯(lián)關(guān)系需要是邏輯上面的,形成必要的關(guān)系,例如A是B上游模塊,A出現(xiàn)問題必然會導(dǎo)致B出現(xiàn)問題。
第四步: 構(gòu)建推理樹
根據(jù)人工故障定位判斷邏輯,構(gòu)建推理樹,設(shè)定每個推理節(jié)點的判決條件。
OK啦!做完以上幾步,您就搭建了一個簡單的故障根因自動定位系統(tǒng),通過對每個推理節(jié)點判斷條件的不斷優(yōu)化,您可以不斷提升故障自動定位準(zhǔn)確率,讓您的運維效率得到大幅提升,IT運營水平逐步與BAT等超級互聯(lián)網(wǎng)公司運營水平對齊。
如果您需要任何幫助,也加入由靈犀linkedsee和高效運維共同建立的微信群,與本文作者和更多同行進(jìn)行交流。
同時您也可以免費體驗?zāi)壳办`犀linkedsee對外發(fā)布的產(chǎn)品。