作者 |金龍
DAS(Database Autonomy Service, 數(shù)據(jù)庫(kù)自治服務(wù))面向研發(fā)和DBA,是一款為用戶提供數(shù)據(jù)庫(kù)性能分析、故障診斷、安全管理等功能的數(shù)據(jù)庫(kù)自治服務(wù)。DAS利用大數(shù)據(jù)手段、機(jī)器學(xué)習(xí)、專家經(jīng)驗(yàn),幫助用戶消除數(shù)據(jù)庫(kù)管理的復(fù)雜性及人工操作引發(fā)的服務(wù)故障,有效保障數(shù)據(jù)庫(kù)服務(wù)的穩(wěn)定和高效運(yùn)行。本文主要講述DAS的歷史背景、演進(jìn)策略、重要功能及實(shí)現(xiàn)思路,希望能對(duì)從事相關(guān)開(kāi)發(fā)的同學(xué)有所幫助或者啟發(fā)。
1 現(xiàn)狀與問(wèn)題
1.1 規(guī)模增長(zhǎng)與運(yùn)維能力發(fā)展之間的不平衡問(wèn)題凸顯
伴隨著最近幾年美團(tuán)業(yè)務(wù)的快速發(fā)展,數(shù)據(jù)庫(kù)的規(guī)模也保持著高速增長(zhǎng)。而作為整個(gè)業(yè)務(wù)系統(tǒng)的“神經(jīng)末梢”,數(shù)據(jù)庫(kù)一旦出現(xiàn)問(wèn)題,對(duì)業(yè)務(wù)造成的損失就會(huì)非常大。同時(shí),因數(shù)據(jù)庫(kù)規(guī)模的快速增長(zhǎng),出現(xiàn)問(wèn)題的數(shù)量也大大增加,完全依靠人力的被動(dòng)分析與定位已經(jīng)不堪重負(fù)。下圖是當(dāng)時(shí)數(shù)據(jù)庫(kù)實(shí)例近年來(lái)的增長(zhǎng)趨勢(shì):
圖1 數(shù)據(jù)庫(kù)實(shí)例增長(zhǎng)趨勢(shì)
1.2 理想很豐滿,現(xiàn)實(shí)很骨感
美團(tuán)數(shù)據(jù)庫(kù)團(tuán)隊(duì)當(dāng)前面臨的主要矛盾是:實(shí)例規(guī)模增長(zhǎng)與運(yùn)維能力發(fā)展之間的不平衡,而主要矛盾體現(xiàn)在數(shù)據(jù)庫(kù)穩(wěn)定性要求較高與關(guān)鍵數(shù)據(jù)缺失。由于產(chǎn)品能力不足,只能依賴專業(yè)DBA手動(dòng)排查問(wèn)題,異常處理時(shí)間較長(zhǎng)。
因此,我們決定補(bǔ)齊關(guān)鍵信息,提供自助或自動(dòng)定位問(wèn)題的能力,縮短處理時(shí)長(zhǎng)。我們復(fù)盤了過(guò)去一段時(shí)間內(nèi)的故障和告警,深入分析了這些問(wèn)題的根因,發(fā)現(xiàn)任何一個(gè)異常其實(shí)都可以按時(shí)間拆分為異常預(yù)防、異常處理和異常復(fù)盤三階段。
針對(duì)這三階段,結(jié)合MTTR的定義,然后調(diào)研了美團(tuán)內(nèi)部及業(yè)界的解決方案,我們做了一張涵蓋數(shù)據(jù)庫(kù)異常處理方案的全景圖。如下圖所示:
圖2 運(yùn)維能力的現(xiàn)狀
通過(guò)對(duì)比,我們發(fā)現(xiàn):
- 每個(gè)環(huán)節(jié)我們都有相關(guān)的工具支撐,但能力又不夠強(qiáng),相比頭部云廠商大概20%~30%左右的能力,短板比較明顯。
- 自助化和自動(dòng)化能力也不足,工具雖多,但整個(gè)鏈條沒(méi)有打通,未形成合力。
那如何解決這一問(wèn)題呢?團(tuán)隊(duì)成員經(jīng)過(guò)深入分析和討論后,我們提出了一種比較符合當(dāng)前發(fā)展階段的解決思路。
2 解決的思路
2.1 既解決短期矛盾,也立足長(zhǎng)遠(yuǎn)發(fā)展
從對(duì)歷史故障的復(fù)盤來(lái)看,80%故障中80%的時(shí)間都花在分析和定位上。解決異常分析和定位效率短期的ROI(投資回報(bào)率)最高。長(zhǎng)期來(lái)看,只有完善能力版圖,才能持續(xù)不斷地提升整個(gè)數(shù)據(jù)庫(kù)的穩(wěn)定性及保障能力。
因此,我們當(dāng)時(shí)的一個(gè)想法就是既要解決短期矛盾,又要立足長(zhǎng)遠(yuǎn)發(fā)展(Think Big Picture, Think Long Term)。新的方案要為未來(lái)留足足夠的發(fā)展空間,不能只是“頭痛醫(yī)頭、腳痛醫(yī)腳”。在宏觀層面,我們希望能將更多的功能做到自動(dòng)定位,基于自動(dòng)定位來(lái)自助或自動(dòng)地處理變更,從而提高異常恢復(fù)的效率,最終提升用戶體驗(yàn)。
將異常處理效率提高和用戶體驗(yàn)提升后,運(yùn)維人員(主要是DBA)的溝通成本將會(huì)極大被降低,這樣運(yùn)維人員就有更多時(shí)間進(jìn)行技術(shù)投入,能將更多“人肉處理”的異常變成自助或自動(dòng)處理,從而形成“飛輪效應(yīng)”。最終達(dá)成高效的穩(wěn)定性保障的目標(biāo)。在微觀層面,我們基于已有的數(shù)據(jù),通過(guò)結(jié)構(gòu)化的信息輸出,提升可觀測(cè)性,補(bǔ)齊關(guān)鍵數(shù)據(jù)缺失的短板。同時(shí),我們基于完善的信息輸出,通過(guò)規(guī)則(專家經(jīng)驗(yàn))和AI的配合,提供自助或自動(dòng)定位的能力,縮短處理時(shí)長(zhǎng)。
圖3 宏觀和微觀
2.2 夯實(shí)基礎(chǔ)能力,賦能上層業(yè)務(wù),實(shí)現(xiàn)數(shù)據(jù)庫(kù)自治
有了明確的指導(dǎo)思想,我們?cè)摬扇≡鯓拥陌l(fā)展策略和路徑呢?就當(dāng)時(shí)團(tuán)隊(duì)的人力情況來(lái)看,沒(méi)有同學(xué)有過(guò)類似異常自治的開(kāi)發(fā)經(jīng)驗(yàn),甚至對(duì)數(shù)據(jù)庫(kù)的異常分析的能力都還不具備,人才結(jié)構(gòu)不能滿足產(chǎn)品的終極目標(biāo)。
所謂“天下大事必作于細(xì),天下難事必作于易”。我們思路是從小功能和容易的地方入手,先完指標(biāo)監(jiān)控、慢查詢、活躍會(huì)話這些簡(jiǎn)單的功能,再逐步深入到全量SQL、異常根因分析和慢查詢優(yōu)化建議等這些復(fù)雜的功能,通過(guò)這些基礎(chǔ)工作來(lái)“借假修真”,不斷提升團(tuán)隊(duì)攻堅(jiān)克難的能力,同時(shí)也可以為智能化打下一個(gè)良好的基礎(chǔ)。
以下便是我們根據(jù)當(dāng)時(shí)人才結(jié)構(gòu)以及未來(lái)目標(biāo)設(shè)定的2年路徑規(guī)劃(實(shí)現(xiàn)數(shù)據(jù)自治目標(biāo)規(guī)劃在2022以后的啟動(dòng),下圖會(huì)省略掉這部分):
圖4 演進(jìn)策略
2.3 建立科學(xué)的評(píng)估體系,持續(xù)的跟蹤產(chǎn)品質(zhì)量
美國(guó)著名管理學(xué)者卡普蘭說(shuō)過(guò):“沒(méi)有度量就沒(méi)有管理”。只有建立科學(xué)的評(píng)估體系,才能推進(jìn)產(chǎn)品不斷邁向更高峰,怎樣評(píng)估產(chǎn)品的質(zhì)量并持續(xù)改善呢?之前我們也做過(guò)很多指標(biāo),但都不可控,沒(méi)有辦法指導(dǎo)我們的工作。
比如,我們最開(kāi)始考慮根因定位使用的是結(jié)果指標(biāo)準(zhǔn)確率和召回率,但結(jié)果指標(biāo)不可控難以指導(dǎo)我們的日常工作。這就需要找其中的可控因素,并不斷改善。我們?cè)趯W(xué)習(xí)亞馬遜的時(shí)候,剛好發(fā)現(xiàn)他們有一個(gè)可控輸入和輸出指標(biāo)的方法論,就很好地指導(dǎo)了我們的工作。只要在正確的可控輸入指標(biāo)上不斷優(yōu)化和提升,最終我們的輸出指標(biāo)也能夠得到提升(這也印證了曾國(guó)藩曾說(shuō)過(guò)的一句話:“在因上致力,但在果上隨緣”)。
以下是我們關(guān)于根因定位的指標(biāo)設(shè)計(jì)和技術(shù)實(shí)現(xiàn)思路(在模擬環(huán)境不斷提升可控的部分,最終線上的實(shí)際效果也會(huì)得到提升。主要包括“根因定位可控輸入和輸出指標(biāo)設(shè)計(jì)思路”和“根因定位可控輸入指標(biāo)獲取的技術(shù)實(shí)現(xiàn)思路”)。根因定位可控輸入和輸出指標(biāo)設(shè)計(jì)思路
圖5 可控輸入與輸出指標(biāo)設(shè)計(jì)
根因定位可控輸入指標(biāo)獲取的技術(shù)實(shí)現(xiàn)思路
圖6 可控輸入與輸出指標(biāo)技術(shù)設(shè)計(jì)
在圖5中,我們通過(guò)場(chǎng)景復(fù)現(xiàn)方式,用技術(shù)手段來(lái)模擬一些用低成本就能實(shí)現(xiàn)的異常(絕大部份異常)。在對(duì)于復(fù)現(xiàn)成本比較高的異常(極少部分),比如機(jī)器異常、硬件故障等,我們目前的思路是通過(guò)“人肉運(yùn)營(yíng)”的方式,發(fā)現(xiàn)和優(yōu)化問(wèn)題,等到下次線上異常重復(fù)發(fā)生后,根據(jù)優(yōu)化后診斷的結(jié)果,通過(guò)和預(yù)期比較來(lái)確定驗(yàn)收是否通過(guò)。
未來(lái)我們會(huì)建立回溯系統(tǒng),將發(fā)生問(wèn)題時(shí)刻的異常指標(biāo)保存,通過(guò)異常指標(biāo)輸入給回溯系統(tǒng)后的輸出結(jié)果,判斷系統(tǒng)改進(jìn)的有效性,從而構(gòu)建更加輕量和更廣覆蓋的復(fù)現(xiàn)方式。圖6是復(fù)現(xiàn)系統(tǒng)的具體技術(shù)實(shí)現(xiàn)思路。
有了指導(dǎo)思想,符合當(dāng)前發(fā)展階段的路徑規(guī)劃以及科學(xué)的評(píng)估體系后,接下來(lái)聊聊技術(shù)方案的構(gòu)思。
3 技術(shù)方案
3.1 技術(shù)架構(gòu)的頂層設(shè)計(jì)
在技術(shù)架構(gòu)頂層設(shè)計(jì)上,我們秉承平臺(tái)化、自助化、智能化和自動(dòng)化四步走的演進(jìn)策略。
首先,我們要完善可觀測(cè)的能力,通過(guò)關(guān)鍵信息的展示,構(gòu)建一個(gè)易用的數(shù)據(jù)庫(kù)監(jiān)控平臺(tái)。然后我們根據(jù)這些關(guān)鍵信息為變更(比如數(shù)據(jù)變更和索引變更等)提供賦能,將一部分高頻運(yùn)維工作通過(guò)這些結(jié)構(gòu)化的關(guān)鍵信息(比如索引變更,可以監(jiān)測(cè)近期是否有訪問(wèn)流量,來(lái)確保變更安全性)讓用戶自主決策,也就是自助化。接下來(lái),我們加入一些智能的元素(專家經(jīng)驗(yàn)+AI),進(jìn)一步覆蓋自助化的場(chǎng)景,并逐步將部分低風(fēng)險(xiǎn)的功能自動(dòng)化,最終通過(guò)系統(tǒng)的不斷完善,走到高級(jí)或完全自動(dòng)化的階段。
為什么我們將自動(dòng)化放在智能化之后?因?yàn)槲覀冋J(rèn)為智能化的目標(biāo)也是為了自動(dòng)化,智能化是自動(dòng)化的前提,自動(dòng)化是智能化的結(jié)果。只有不斷提升智能化,才能達(dá)到高級(jí)或者完全自動(dòng)化。下圖便是我們的頂層架構(gòu)設(shè)計(jì)(左側(cè)是演進(jìn)策略,右側(cè)是技術(shù)架構(gòu)的頂層設(shè)計(jì)以及2021年底的現(xiàn)狀):
圖7 架構(gòu)頂層設(shè)計(jì)頂層設(shè)計(jì)
只是“萬(wàn)里長(zhǎng)征第一步”,接下來(lái)我們將自底向上逐步介紹我們基于頂層設(shè)計(jì)開(kāi)展的具體工作,將從數(shù)據(jù)采集層的設(shè)計(jì)、計(jì)算存儲(chǔ)層的設(shè)計(jì)和分析決策層的設(shè)計(jì)逐步展開(kāi)。
3.2 數(shù)據(jù)采集層的設(shè)計(jì)
這上面的架構(gòu)圖里,數(shù)據(jù)采集層是所有鏈路的最底層和最重要的環(huán)節(jié),采集數(shù)據(jù)的質(zhì)量直接決定了整個(gè)系統(tǒng)的能力。同時(shí),它和數(shù)據(jù)庫(kù)實(shí)例直接打交道,任何設(shè)計(jì)上的缺陷都將可能導(dǎo)致大規(guī)模的故障。所以,技術(shù)方案上必須兼顧數(shù)據(jù)采集質(zhì)量和實(shí)例穩(wěn)定性,在二者無(wú)法平衡的情況下,寧可犧牲掉采集質(zhì)量也要保證數(shù)據(jù)庫(kù)的穩(wěn)定性。
在數(shù)據(jù)采集上,業(yè)界都采取基于內(nèi)核的方式,但美團(tuán)自研內(nèi)核較晚,而且部署周期長(zhǎng),所以我們短期的方式是采用抓包的方式做一個(gè)過(guò)渡,等基于內(nèi)核的采集部署到一定規(guī)模后再逐步切換過(guò)來(lái)。以下是我們基于抓包思路的技術(shù)方案調(diào)研:
從調(diào)研上我們可以看到,基于pf_ring和dpdk的方案都有較大的依賴性,短期難以實(shí)現(xiàn),之前也沒(méi)有經(jīng)驗(yàn)。但是,基于pcap的方式?jīng)]有依賴,我們也有過(guò)一定的經(jīng)驗(yàn),之前美團(tuán)酒旅團(tuán)隊(duì)基于抓包的方式做過(guò)全量SQL數(shù)據(jù)采集的工具,并經(jīng)過(guò)了1年時(shí)間的驗(yàn)證。
因此,我們最終采取了基于pcap抓包方式的技術(shù)方案。以下是采集層方案的架構(gòu)圖和采集質(zhì)量以及對(duì)數(shù)據(jù)庫(kù)性能帶來(lái)的影響情況。Agent的技術(shù)設(shè)計(jì)
圖8 Agent的技術(shù)設(shè)計(jì)
對(duì)數(shù)據(jù)庫(kù)的影響
圖9 Agent對(duì)數(shù)據(jù)庫(kù)的影響測(cè)試
3.3 計(jì)算存儲(chǔ)層的設(shè)計(jì)
由于美團(tuán)整個(gè)數(shù)據(jù)庫(kù)實(shí)例數(shù)量和流量巨大,而且隨著業(yè)務(wù)的快速發(fā)展,還呈現(xiàn)出快速增長(zhǎng)的態(tài)勢(shì)。所以,我們的設(shè)計(jì)不僅要滿足當(dāng)前,還要考慮未來(lái)5年及更長(zhǎng)的時(shí)間也能夠滿足要求。同時(shí),對(duì)數(shù)據(jù)庫(kù)故障分析來(lái)說(shuō),數(shù)據(jù)的實(shí)時(shí)性和完備性是快速和高效定位問(wèn)題的關(guān)鍵,而保證數(shù)據(jù)實(shí)時(shí)性和完備性需要的容量成本也不容忽視。因此,結(jié)合上述要求和其他方面的一些考慮,我們對(duì)該部分設(shè)計(jì)提出了一些原則,主要包括:
- 全內(nèi)存計(jì)算:確保所有的計(jì)算都在單線程內(nèi)或單進(jìn)程內(nèi)做純內(nèi)存的操作,追求性能跟吞吐量的極致。
- 上報(bào)原始數(shù)據(jù):MySQL實(shí)例上報(bào)的數(shù)據(jù)盡量維持原始數(shù)據(jù)狀態(tài),不做或者盡量少做數(shù)據(jù)加工。數(shù)據(jù)壓縮:由于上報(bào)量巨大,需要保障上報(bào)的數(shù)據(jù)進(jìn)行極致的壓縮。
- 內(nèi)存消耗可控:通過(guò)理論和實(shí)際壓測(cè)保障幾乎不可能會(huì)發(fā)生內(nèi)存溢出。
- 最小化對(duì)MySQL實(shí)例的影響:計(jì)算盡量后置,不在Agent上做復(fù)雜計(jì)算,確保不對(duì)RDS實(shí)例生產(chǎn)較大影響。以下是具體的架構(gòu)圖:
圖10 Agent對(duì)數(shù)據(jù)庫(kù)的影響測(cè)試
全量SQL(所有訪問(wèn)數(shù)據(jù)庫(kù)的SQL)是整個(gè)系統(tǒng)最具挑戰(zhàn)的功能,也是數(shù)據(jù)庫(kù)異常分析最重要的信息之一,因此會(huì)就全量SQL的聚合方式、聚合和壓縮的效果和補(bǔ)償設(shè)計(jì)做一些重點(diǎn)的介紹。
3.3.1 全量SQL的聚合方式
由于明細(xì)數(shù)據(jù)巨大,我們采取了聚合的方式。消費(fèi)線程會(huì)對(duì)相同模板SQL的消息按分鐘粒度進(jìn)行聚合計(jì)算,以“RDSIP+DBName+SQL模版ID+SQL查詢結(jié)束時(shí)間所在分鐘數(shù)”為聚合鍵。聚合健的計(jì)算公式為:Aggkey=RDS_IP_DBName_SQL_Template_ID_Time_Minute (Time_Minute的值取自SQL查詢結(jié)束時(shí)間所在的“年、月、日、時(shí)、分鐘”)
圖11 SQL模版聚合設(shè)計(jì)
圖12 SQL模版聚合方法
3.3.2 全量SQL數(shù)據(jù)聚合和壓縮的效果
在數(shù)據(jù)壓縮方面,遵循層層減流原則,使用消息壓縮、預(yù)聚合、字典化、分鐘級(jí)聚合的手段,保證流量在經(jīng)過(guò)每個(gè)組件時(shí)進(jìn)行遞減,最終達(dá)到節(jié)省帶寬減少存儲(chǔ)量的目的。以下是相關(guān)的壓縮環(huán)節(jié)和測(cè)試數(shù)據(jù)表現(xiàn)情況(敏感數(shù)據(jù)做了脫敏,不代表美團(tuán)實(shí)際的情況):
圖13 全量SQL壓縮設(shè)計(jì)與效果
3.3.3 全量SQL數(shù)據(jù)補(bǔ)償機(jī)制
如上所述,在數(shù)據(jù)聚合端是按一分鐘進(jìn)行聚合,并允許額外一分鐘的消息延遲,如果消息延遲超過(guò)1分鐘會(huì)被直接丟棄掉,這樣在業(yè)務(wù)高峰期延遲比較嚴(yán)重的場(chǎng)景下,會(huì)丟失比較大量的數(shù)據(jù),從而對(duì)后續(xù)數(shù)據(jù)庫(kù)異常分析的準(zhǔn)確性造成較大的影響。
因此,我們?cè)黾恿搜舆t消息補(bǔ)償機(jī)制,對(duì)過(guò)期的數(shù)據(jù)發(fā)入補(bǔ)償隊(duì)列(采用的是美團(tuán)消息隊(duì)列服務(wù)Mafka),通過(guò)過(guò)期數(shù)據(jù)補(bǔ)償?shù)姆绞?,保證延遲久的消息也能正常存儲(chǔ),通過(guò)最終一致性保證了后續(xù)的數(shù)據(jù)庫(kù)異常分析的準(zhǔn)確性。以下是數(shù)據(jù)補(bǔ)償機(jī)制的設(shè)計(jì)方案:
圖14 全量SQL補(bǔ)全技術(shù)設(shè)計(jì)
3.4 分析決策層的設(shè)計(jì)
在有了比較全的數(shù)據(jù)之后,接下來(lái)就是基于數(shù)據(jù)進(jìn)行決策,推斷出可能的根因。這部分我們使用了基于專家經(jīng)驗(yàn)結(jié)合AI的方式。我們把演進(jìn)路徑化分為了四個(gè)階段:
- 第一階段:完全以規(guī)則為主,積累領(lǐng)域經(jīng)驗(yàn),探索可行的路徑。
- 第二階段:探索AI場(chǎng)景,但以專家經(jīng)驗(yàn)為主,在少量低頻場(chǎng)景上使用AI算法,驗(yàn)證AI能力。
- 第三階段:在專家經(jīng)驗(yàn)和AI上齊頭并進(jìn),專家經(jīng)驗(yàn)繼續(xù)在已有的場(chǎng)景上迭代和延伸,AI在新的場(chǎng)景上進(jìn)行落地,通過(guò)雙軌制保證原有能力不退化。
- 第四階段:完成AI對(duì)大部分專家經(jīng)驗(yàn)的替換,以AI為主專家經(jīng)驗(yàn)為輔,極致發(fā)揮AI能力。
以下是分析決策部分整體的技術(shù)設(shè)計(jì)(我們參考了華為一篇文章:《網(wǎng)絡(luò)云根因智薦的探索與實(shí)踐》):
圖15 分析決策的技術(shù)設(shè)計(jì)
在決策分析層,我們主要采取了專家經(jīng)驗(yàn)和AI兩者方式,接下來(lái)會(huì)介紹專家經(jīng)驗(yàn)(基于規(guī)則的方式)和AI方式(基于AI算法的方式)的相關(guān)實(shí)現(xiàn)。
3.4.1 基于規(guī)則的方式
專家經(jīng)驗(yàn)部分,我們采取了GRAI(Goal、Result、Analysis和Insight的簡(jiǎn)稱)的復(fù)盤方法論來(lái)指導(dǎo)工作,通過(guò)持續(xù)、大量、高頻的復(fù)盤,我們提煉了一些靠譜的規(guī)則,并通過(guò)持續(xù)的迭代,不斷提升準(zhǔn)確率和召回率。下面例舉的是主從延遲的規(guī)則提煉過(guò)程:
圖16 專家經(jīng)驗(yàn)的復(fù)盤和改進(jìn)
3.4.2 基于AI算法的方式
異常數(shù)據(jù)庫(kù)指標(biāo)檢測(cè)
數(shù)據(jù)庫(kù)核心指標(biāo)的異常檢測(cè)依賴于對(duì)指標(biāo)歷史數(shù)據(jù)的合理建模,通過(guò)將離線過(guò)程的定期建模與實(shí)時(shí)過(guò)程的流檢測(cè)相結(jié)合,將有助于在數(shù)據(jù)庫(kù)實(shí)例存在故障或風(fēng)險(xiǎn)的情況下,有效地定位根本問(wèn)題所在,從而實(shí)現(xiàn)及時(shí)有效地解決問(wèn)題。
建模過(guò)程主要分為3個(gè)流程。首先,我們通過(guò)一些前置的模塊對(duì)指標(biāo)的歷史數(shù)據(jù)進(jìn)行預(yù)處理,包含缺失數(shù)值填充,數(shù)據(jù)的平滑與聚合等過(guò)程。隨后,我們通過(guò)分類模塊創(chuàng)建了后續(xù)的不同分支,針對(duì)不同類型的指標(biāo)運(yùn)用不同的手段來(lái)建模。最終,將模型進(jìn)行序列化存儲(chǔ)后提供Flink任務(wù)讀取實(shí)現(xiàn)流檢測(cè)。以下是檢測(cè)的設(shè)計(jì)圖
圖17 基于AI的異常檢測(cè)設(shè)計(jì)
根因診斷(構(gòu)建中)訂閱告警消息(基于規(guī)則或者異常檢測(cè)觸發(fā)),觸發(fā)診斷流程,采集、分析數(shù)據(jù),推斷出根因并篩選出有效信息輔助用戶解決。診斷結(jié)果通過(guò)大象通知用戶,并提供診斷診斷詳情頁(yè)面,用戶可通過(guò)標(biāo)注來(lái)優(yōu)化診斷準(zhǔn)確性。
圖18 基于AI的異常檢測(cè)設(shè)計(jì)
- 數(shù)據(jù)采集:采集數(shù)據(jù)庫(kù)性能指標(biāo)、數(shù)據(jù)庫(kù)狀態(tài)抓取、系統(tǒng)指標(biāo)、硬件問(wèn)題、日志、記錄等數(shù)據(jù)。
- 特征提?。簭母黝悢?shù)據(jù)中提取特征,包括算法提取的時(shí)序特征、文本特征以及利用數(shù)據(jù)庫(kù)知識(shí)提取的領(lǐng)域特征等。
- 根因分類:包括特征預(yù)處理、特征篩選、算法分類、根因排序等部分。
- 根因擴(kuò)展:基于根因類別進(jìn)行相關(guān)信息的深入挖掘,提高用戶處理問(wèn)題的效率。具體包括SQL行為分析、專家規(guī)則、指標(biāo)關(guān)聯(lián)、維度下鉆、日志分析等功能模塊。
4 建設(shè)成果
4.1 指標(biāo)表現(xiàn)
我們目前主要是通過(guò)“梳理觸發(fā)告警場(chǎng)景->模擬復(fù)現(xiàn)場(chǎng)景->根因分析和診斷->改進(jìn)計(jì)劃->驗(yàn)收改進(jìn)質(zhì)量->梳理觸發(fā)告警場(chǎng)景”的閉環(huán)方法(詳情請(qǐng)參考前文建立科學(xué)的評(píng)估體系,持續(xù)的跟蹤產(chǎn)品質(zhì)量部分),持續(xù)不斷的進(jìn)行優(yōu)化和迭代。
通過(guò)可控輸入指標(biāo)的提升,來(lái)優(yōu)化改善線上的輸出指標(biāo),從而保證系統(tǒng)不斷的朝著正確的方向發(fā)展。以下是近期根因召回率和準(zhǔn)確率指標(biāo)表現(xiàn)情況。用戶告警根因反饋準(zhǔn)確率
圖19 用戶反饋準(zhǔn)確率
告警診斷分析總體召回率
圖20 根因分析召回率
4.2 用戶案例
在根因結(jié)果推送上,我們和美團(tuán)內(nèi)部的IM系統(tǒng)(大象)進(jìn)行了打通,出現(xiàn)問(wèn)題后通過(guò)告警發(fā)現(xiàn)異常->大象推送診斷根因->點(diǎn)擊診斷鏈接詳情查看詳細(xì)信息->一鍵預(yù)案處理->跟蹤反饋處理的效果->執(zhí)行成功或者回滾,來(lái)完成異常的發(fā)現(xiàn)、定位、確認(rèn)和處理的閉環(huán)。以下是活躍會(huì)話規(guī)則觸發(fā)告警后根因分析的一個(gè)案例。自動(dòng)拉群,并給出根因
圖21 鎖阻塞導(dǎo)致活躍會(huì)話過(guò)高
點(diǎn)擊診斷報(bào)告,查看詳情
圖22 鎖阻塞導(dǎo)致活躍會(huì)話過(guò)高
以下是出現(xiàn)Load告警后,我們的一個(gè)慢查詢優(yōu)化建議推送案例(脫敏原因,采用了測(cè)試環(huán)境模擬的案例)。
圖23 慢查詢優(yōu)化建議
5 總結(jié)與未來(lái)展望
數(shù)據(jù)庫(kù)自治服務(wù)經(jīng)過(guò)2年左右的發(fā)展,已基本夯實(shí)了基礎(chǔ)能力,在部分業(yè)務(wù)場(chǎng)景上完成了初步賦能(比如針對(duì)問(wèn)題SQL,業(yè)務(wù)服務(wù)上線發(fā)布前自動(dòng)識(shí)別,提示潛在風(fēng)險(xiǎn);針對(duì)索引誤變更,工單執(zhí)行前自動(dòng)檢測(cè)索引近期訪問(wèn)流量,阻斷誤變更等)。接下來(lái),我們的目標(biāo)除了在已完成工作上繼續(xù)深耕,提升能力外,重點(diǎn)會(huì)瞄準(zhǔn)數(shù)據(jù)庫(kù)自治能力。主要的工作規(guī)劃將圍繞以下3個(gè)方向:
(1)計(jì)算存儲(chǔ)能力增強(qiáng):隨著數(shù)據(jù)庫(kù)實(shí)例和業(yè)務(wù)流量的持續(xù)高速增長(zhǎng),以及采集的信息的不斷豐富,亟需對(duì)現(xiàn)有數(shù)據(jù)通道能力進(jìn)行增強(qiáng),確保能支撐未來(lái)3-5年的處理能力。
(2)自治能力在少部分場(chǎng)景上落地:數(shù)據(jù)庫(kù)自治能力上,會(huì)采取三步走的策略:
- 第一步:建立根因診斷和SOP文檔的關(guān)聯(lián),將診斷和處理透明化;
- 第二步:SOP文檔平臺(tái)化,將診斷和處理流程化;
- 第三步:部分低風(fēng)險(xiǎn)無(wú)人干預(yù),將診斷和處理自動(dòng)化,逐步實(shí)現(xiàn)數(shù)據(jù)庫(kù)自治。
(3)更靈活的異常回溯系統(tǒng):某個(gè)場(chǎng)景根因定位算法在上線前或者改進(jìn)后的驗(yàn)證非常關(guān)鍵,我們會(huì)完善驗(yàn)證體系,建立靈活的異?;厮菹到y(tǒng),通過(guò)基于現(xiàn)場(chǎng)信息的回放來(lái)不斷優(yōu)化和提升系統(tǒng)定位準(zhǔn)確率。
6 本文作者
金龍,來(lái)自美團(tuán)基礎(chǔ)技術(shù)部/數(shù)據(jù)庫(kù)研發(fā)中心/數(shù)據(jù)庫(kù)平臺(tái)研發(fā)組。