京東科技全鏈路故障診斷智能運(yùn)維實(shí)踐
一、京東科技智能運(yùn)維整體能力
我們?cè)?018年就開始建設(shè)了智能運(yùn)維,針對(duì)京東科技內(nèi)部,我們運(yùn)維面臨的問題主要是三點(diǎn):
- 難度逐步增加
- 體系化要求越來越高
- 成本要全面節(jié)省
我們?cè)诮ㄔO(shè)智能運(yùn)維的基本目標(biāo)與業(yè)界是一致的,主要都是為了降低故障的平均修復(fù)時(shí)間,延長(zhǎng)系統(tǒng)的無故障的運(yùn)行的時(shí)間,以此提升系統(tǒng)的可用性以及運(yùn)維效率。在京東內(nèi)部,主要依托于三大技術(shù)底座:運(yùn)維知識(shí)圖譜、運(yùn)維大數(shù)據(jù)處理技術(shù)、運(yùn)維算法技術(shù)。
為賦能三大技術(shù)底座,我們主要做了兩件事情:
- 一是通過運(yùn)維算法技術(shù),賦能我們的業(yè)務(wù)運(yùn)維的監(jiān)控,做到故障的快速發(fā)現(xiàn)和快速定位;
- 二是運(yùn)維算法賦能智能調(diào)度,提升資源的利用率。以及在去年開始,我們?cè)谟布使收项A(yù)測(cè)上也投入了研發(fā),并實(shí)現(xiàn)了場(chǎng)景落地。
下圖是我們智能運(yùn)維的一個(gè)技術(shù)架構(gòu)圖,主要包含數(shù)據(jù)采集計(jì)算層、數(shù)據(jù)存儲(chǔ)層、數(shù)據(jù)服務(wù)層、數(shù)據(jù)應(yīng)用層。
此外,我們也會(huì)在每年618雙十一大促前,會(huì)對(duì)我們的業(yè)務(wù)應(yīng)用進(jìn)行應(yīng)用健康度的體檢,并對(duì)核心應(yīng)用也會(huì)進(jìn)行整改,整體能力依托于我們運(yùn)維知識(shí)圖譜的建設(shè)。
上圖我們整個(gè)京東科技智能運(yùn)維產(chǎn)品的一個(gè)全景圖,主要包含數(shù)據(jù)層(腦)、學(xué)件層(心)、業(yè)務(wù)層(眼)。
二、運(yùn)維算法賦能業(yè)務(wù)可觀測(cè)性落地經(jīng)驗(yàn)
1、指標(biāo)異常檢測(cè)
指標(biāo)異常檢測(cè)主要是為實(shí)現(xiàn)集中管理監(jiān)控指標(biāo),并通過運(yùn)維算法技術(shù)自動(dòng)化地對(duì)在線的時(shí)序監(jiān)控指標(biāo)進(jìn)行異常診斷。
在日志分析上,我們能夠?qū)€上服務(wù)組件這類日志進(jìn)行實(shí)時(shí)聚類分析,包括通過日志實(shí)時(shí)語義匹配轉(zhuǎn)成指標(biāo)等監(jiān)控手段,從日志、指標(biāo)層面的不足。
在故障定位上,主要分為兩種,一是基于apm調(diào)用鏈的關(guān)聯(lián)分析掃描全局的故障根因,二是將NLP日志模板提取技術(shù),與運(yùn)維圖譜關(guān)系進(jìn)行融合,集中對(duì)整體的故障根因進(jìn)行掃描分析。
異常檢測(cè)最開始引入了統(tǒng)計(jì)學(xué)習(xí)落地試點(diǎn),后面則引入了時(shí)序聚類、時(shí)序網(wǎng)絡(luò)等異常檢測(cè)算法,相比于固定閾值,能否自適應(yīng)去適配不同場(chǎng)景下的監(jiān)控?cái)?shù)據(jù)。除了異常檢測(cè)外,我們還做了一套自回歸動(dòng)態(tài)基線的預(yù)測(cè)算法能力沉淀。在京東內(nèi)部,主要落地了兩個(gè)場(chǎng)景:
一是學(xué)習(xí)歷史數(shù)據(jù)7-14天的指標(biāo)波動(dòng)規(guī)律性,對(duì)指標(biāo)的未來趨勢(shì)及動(dòng)態(tài)波動(dòng)區(qū)間做預(yù)測(cè),當(dāng)?shù)苿?dòng)態(tài)區(qū)間時(shí),就會(huì)實(shí)時(shí)發(fā)出這類告警;
二是做事前的判斷,比如內(nèi)存使用率開始從20%增加到30%-40%時(shí),不會(huì)引起運(yùn)維同學(xué)的關(guān)注,但可能突然間10-15分鐘會(huì)達(dá)到80%,這時(shí)候可能就會(huì)反應(yīng)不歸來,因此,我們會(huì)去提前發(fā)下這類數(shù)據(jù)的增長(zhǎng)趨勢(shì),在故障真正發(fā)生的時(shí)候,爭(zhēng)取故障處理的響應(yīng)時(shí)間。
另外,在異常檢測(cè)以及動(dòng)態(tài)基線預(yù)測(cè)模型上,我們?cè)趦?nèi)部多個(gè)數(shù)據(jù)集上的準(zhǔn)確率評(píng)估有90%以上,目前這套模型也有被IEEE的國(guó)際論文所收錄。
2、智能文本分析
京東科技有一款自研產(chǎn)品能夠支持包括基礎(chǔ)組件、容器、中間件、數(shù)據(jù)庫(kù)等多類型的日志接入,日志接入之后,能夠支持分布式日志檢索并進(jìn)入智能分析層。因此,故障發(fā)生的時(shí)候,運(yùn)維同學(xué)除了接收智能告警之外,還能通過平臺(tái)快速查詢,去看實(shí)時(shí)的日志。
在日志接入智能分析層后,會(huì)對(duì)運(yùn)維日志進(jìn)行模板的提取和預(yù)聚類,能及時(shí)發(fā)現(xiàn)一些線上未知的業(yè)務(wù)問題。此外,如果出現(xiàn)監(jiān)控指標(biāo)沒有采集上來、配置的監(jiān)控告警并不準(zhǔn)確、告警沒有及時(shí)發(fā)出等問題,我們也可以通過日志分析的手段,結(jié)合圖譜關(guān)系定位到真正的根因。
智能文本分析主要引入了NLP的技術(shù),對(duì)全量運(yùn)維日志進(jìn)行聚類分析,訓(xùn)練生成日志模板,運(yùn)維、研發(fā)同學(xué)會(huì)在平臺(tái)標(biāo)注關(guān)心的問題,再生成模板庫(kù),在線實(shí)時(shí)匹配已知問題。也就是說,我們會(huì)將原始的運(yùn)維日志,按照預(yù)定義好的類別進(jìn)行語義匹配,并轉(zhuǎn)成時(shí)序的監(jiān)控指標(biāo),當(dāng)一類問題日志突增時(shí),我們也會(huì)及時(shí)發(fā)出告警。
我們?cè)趯?shí)踐中也發(fā)現(xiàn),不管是哪一種運(yùn)維場(chǎng)景,對(duì)日志里面的動(dòng)詞、形容詞、名詞都是較關(guān)心的,所以為了提升整個(gè)日志分析模型的準(zhǔn)確度,我們引入了詞性分析技術(shù),做了一部分特征增強(qiáng)。模型部分我們也是用Bert預(yù)訓(xùn)練模型,并對(duì)Bert模型進(jìn)行微調(diào)。
和業(yè)界deep log、logclass等比較火的模型相比,我們這套模型的效果都是較優(yōu)的,目前這套模型有被IEEE論文所收錄。
大家在做運(yùn)維日志NLP分析的時(shí)候,可能會(huì)面臨一個(gè)問題:到底要標(biāo)注對(duì)少日志,才算完成了模型學(xué)習(xí)?
針對(duì)這個(gè)問題,我們采用的是半監(jiān)督的方式。比如運(yùn)維、研發(fā)同學(xué)會(huì)定期收到告警通知,里面會(huì)詳細(xì)記錄新日志產(chǎn)生量、占比量及告知標(biāo)注需要,他們就會(huì)進(jìn)入智能運(yùn)維平臺(tái),對(duì)所關(guān)心的問題進(jìn)行定義,標(biāo)注出來的部分則訓(xùn)練出基于詞性標(biāo)注的命名實(shí)體抽取模型,將其他相似文本中比較關(guān)系的實(shí)體抽取出來,再輔以運(yùn)維、研發(fā)同學(xué)進(jìn)行日志問題標(biāo)注。
下面對(duì)京東科技內(nèi)部的智能文本分析案例-k8s場(chǎng)景進(jìn)行介紹:
我們通過k8s核心組件日志的實(shí)時(shí)聚類以及實(shí)時(shí)語義匹配,發(fā)現(xiàn)一些在指標(biāo)層面發(fā)生不了的問題,比如日志占用文件句柄沒釋放、孤兒pod問題等。
上面是去年雙十一大促備戰(zhàn)前的案例,應(yīng)用程序去調(diào)用集群時(shí),我們發(fā)現(xiàn)它在往某一個(gè)集群緩存的節(jié)點(diǎn)頻繁打印日志。自動(dòng)觸發(fā)診斷告警后,PE同學(xué)緊急排查,發(fā)現(xiàn)這個(gè)節(jié)點(diǎn)關(guān)聯(lián)到的是大促比較核心的一個(gè)應(yīng)用,聯(lián)系應(yīng)用研發(fā)同學(xué)后發(fā)現(xiàn),確實(shí)是線上程序開啟了調(diào)試模式,導(dǎo)致應(yīng)用調(diào)用集群時(shí),頻繁往這個(gè)節(jié)點(diǎn)打印日志,調(diào)試模式關(guān)閉后,也規(guī)避了在大促中可能出現(xiàn)的計(jì)算瓶頸問題。
在京東內(nèi)部落地時(shí),除了有按場(chǎng)景的服務(wù)組件日志,還有緩存、大數(shù)據(jù)、MySQL、網(wǎng)絡(luò)設(shè)備的日志。另外,近兩年做的比較多的k8s的node日志分析,實(shí)現(xiàn)了快速發(fā)現(xiàn)線上未知故障,發(fā)現(xiàn)了之前通過監(jiān)控發(fā)現(xiàn)不了的那些問題。
另外,運(yùn)維日志分析落地到了不同場(chǎng)景,包括日志聚類、模板訓(xùn)練提取、語義分析和日志分類等,我們也做了部分的模型蒸餾,這部分的實(shí)踐目前IEEE論文收錄了5項(xiàng)。
另外,我們也做了應(yīng)用告警日志的MySQL、Redis根因分析。
3、健康度巡檢
接下來是健康度巡檢,其主要方式是結(jié)合運(yùn)維專家排障制定巡檢的規(guī)則及異常檢測(cè)的能力,主動(dòng)對(duì)線上核心的應(yīng)用進(jìn)行巡檢,去發(fā)現(xiàn)一些潛在問題,并分析數(shù)據(jù)健康度等,并且在大促重保之前,我們會(huì)對(duì)這些亞健康的應(yīng)用進(jìn)行核心整改。
另外,通過這套自動(dòng)化巡檢能力,我們也能夠提升緩存的命中率,提升閑置服務(wù)器資源的使用率,經(jīng)過歷年運(yùn)維場(chǎng)景的經(jīng)驗(yàn)積累,我們目前有100+的應(yīng)用業(yè)務(wù)巡檢規(guī)則。
4、全鏈路監(jiān)控體系
接下來全鏈路故障定位落地實(shí)踐,其中包括移動(dòng)端、前端、服務(wù)端等監(jiān)控。
服務(wù)一旦發(fā)生瓶頸,可以綜合分析調(diào)用鏈、接口耗時(shí)、返回狀態(tài)碼、異常日志,網(wǎng)絡(luò)日志等,快速診斷問題。
同時(shí),我們還能通過這套全鏈路監(jiān)控的追蹤能力,去看每一塊節(jié)點(diǎn)的耗時(shí)占比情況。
另外,我們自動(dòng)化生成了調(diào)用鏈拓?fù)潢P(guān)系,直觀展示服務(wù)之間的依賴強(qiáng)弱,實(shí)時(shí)監(jiān)控每一個(gè)應(yīng)用的服務(wù)質(zhì)量(TPS、耗時(shí)、成功率、可用率)。
再者,將整個(gè)全鏈路的監(jiān)控?cái)?shù)據(jù),統(tǒng)一地收集起來輸入到智能運(yùn)維監(jiān)控中心,再做全局的根因定位。
在京東內(nèi)部,主機(jī)問題定位及排查、操作變更、網(wǎng)絡(luò)/數(shù)據(jù)庫(kù)等場(chǎng)景,都覆蓋了這套全鏈路監(jiān)控,大促等重保期間都會(huì)投入使用,出現(xiàn)問題故障時(shí),運(yùn)維、研發(fā)用都較依賴于這套全鏈路監(jiān)控體系。
上圖關(guān)于日志模板根因定位的一個(gè)案例,在2022年618大促期間,我們從緩存服務(wù)端的組件層面發(fā)現(xiàn)一類日志模板大量突增,是一個(gè)AOF盤阻塞問題,恰好該問題直接關(guān)聯(lián)到業(yè)務(wù)營(yíng)銷應(yīng)用,關(guān)聯(lián)到的客戶端連接數(shù)超過最大連接數(shù)限制,造成刷盤阻塞的報(bào)警,關(guān)聯(lián)到的業(yè)務(wù)成功率也有下跌,當(dāng)時(shí)業(yè)務(wù)監(jiān)控告警沒有提前發(fā)出,所以重保團(tuán)隊(duì)非常關(guān)注,最后我們通過這套能力及時(shí)發(fā)現(xiàn)了這類問題。
5、多維指標(biāo)根因定位
除此之外,我們做了多維指標(biāo)明細(xì)的根因定位,主要是定位web場(chǎng)景的異常,當(dāng)某個(gè)域名的TP耗時(shí)/TPS發(fā)生異常產(chǎn)生告警后,可按省份、運(yùn)營(yíng)商、機(jī)房、機(jī)柜、主機(jī)等各維度的TP耗時(shí)/錯(cuò)誤狀態(tài)碼TPS突增等指標(biāo)進(jìn)行明細(xì)下鉆分析,通過強(qiáng)化學(xué)習(xí)搜索算法從數(shù)萬維度交叉組合數(shù)據(jù)中快速定位出異常的維度組合。
三、運(yùn)維算法賦能降本增效落地經(jīng)驗(yàn)
1、智能調(diào)度
我們會(huì)將master、node等監(jiān)控?cái)?shù)據(jù)統(tǒng)一輸入到智能調(diào)度器,對(duì)應(yīng)用資源使用情況及未來使用情況進(jìn)行預(yù)測(cè),將在線、離線應(yīng)用進(jìn)行合理的混合部署調(diào)度,以此提升資源利用率。
京東云在支持京東全線業(yè)務(wù)正常運(yùn)行下,超大規(guī)模集群的CPU資源利用率提升3倍,單位訂單資源成本下降30%,內(nèi)存平均使用率提升57%,目前這套模型也有被IEEE論文所收錄。
2、硬件故障預(yù)測(cè)
2022年開始,我們把運(yùn)維算法落地到了硬件故障預(yù)測(cè)場(chǎng)景,和業(yè)界實(shí)踐同樣面臨著標(biāo)簽不充分的問題。
因此,我們引入了半監(jiān)督學(xué)習(xí)的方式,去擴(kuò)充硬盤的故障數(shù)據(jù);另我們基于時(shí)間窗口計(jì)算增強(qiáng)smart特征,輸入給時(shí)間注意力分析模型,讓模型得以充分訓(xùn)練,提升硬盤故障預(yù)測(cè)準(zhǔn)確性。
在支撐京東全線業(yè)務(wù)正常運(yùn)行下,硬盤故障預(yù)測(cè)模型平均準(zhǔn)確率達(dá)90%以上,平均召回率達(dá)80%左右,在業(yè)界處在靠前的水平。
3、運(yùn)維算法
從2018年開始,我們開始沉淀智能運(yùn)維算法能力,比如動(dòng)態(tài)基線預(yù)測(cè)、運(yùn)維日志預(yù)訓(xùn)練模型、蒙特卡洛樹根因定位、相似度計(jì)算、告警共性分析算法、因果推斷算法等。
以告警共性分析算法為例,在內(nèi)部落地比較核心的就是pingmesh場(chǎng)景(網(wǎng)絡(luò)場(chǎng)景)。在源和目的IP相互ping的時(shí)候,會(huì)有大量的延時(shí)以及丟包的指標(biāo)監(jiān)控,當(dāng)延時(shí)和丟包大量突增時(shí),中間經(jīng)過的網(wǎng)絡(luò)設(shè)備共性的路徑是什么?這個(gè)時(shí)候,我們就是通過告警共性分析算法去分析解決的。
4、模型工廠
模型工廠主要用以整個(gè)智能運(yùn)維算法學(xué)件的數(shù)據(jù)集快速增量學(xué)習(xí),幫助運(yùn)維算法迭代更新及再訓(xùn)練,這其中包含前面介紹的8大組件。
5、運(yùn)維監(jiān)控可視化大屏
除了以上功能,我們整個(gè)智能運(yùn)維平臺(tái)也支持可視化。
做可觀測(cè)性實(shí)踐,一部分要做到快速定位,還要做到分布式的全鏈路追蹤,快速發(fā)現(xiàn)并響應(yīng),還有一部分是可視化,實(shí)現(xiàn)全局?jǐn)?shù)據(jù)概覽。
講師介紹
張靜,京東科技智能運(yùn)維算法高級(jí)經(jīng)理。碩士畢業(yè)于東北大學(xué),持續(xù)深耕智能運(yùn)維領(lǐng)域多年,帶領(lǐng)團(tuán)隊(duì)致力于京東智能運(yùn)維算法迭代,把智能算法能力落地京東線上橫向業(yè)務(wù)場(chǎng)景,算法在監(jiān)控、數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)、資源調(diào)度等多個(gè)縱向場(chǎng)景取得突破,提升了產(chǎn)品和運(yùn)維的技術(shù)競(jìng)爭(zhēng)力。善于將實(shí)踐中沉淀的技術(shù)與日常算法工作中積累的技術(shù)與創(chuàng)新總結(jié)成專利和IEEE論文,申請(qǐng)智能運(yùn)維發(fā)明專利50余項(xiàng),IEEE國(guó)際會(huì)議論文收錄9篇。