你好,我是悟空。
前言
之前我在學(xué)習(xí) CodeBuddy AI 編程工具時(shí),就自己搭了一個(gè) MCP Server 用來部署網(wǎng)站,通過用自然語言對話的方式實(shí)現(xiàn)自動(dòng)化部署,算是一個(gè) AiOps 的縮影。詳見這篇文章:[《巧用智能體+100行代碼的MCP服務(wù),打造一個(gè)簡易版“智能化運(yùn)維”平臺(tái)》](https://mp.weixin.qq.com/s/ZUZj8YzDeXoezRtWCLfcaQ)
我在工作中不斷思考,如何利用 AiOps 的思想來節(jié)省運(yùn)維的成本,提高工作的效率,為公司帶來更大的價(jià)值,通過在學(xué)習(xí) TiDB 的過程中,我們是否可以將 TiDB 和 AiOps 結(jié)合在一起了,本篇我們來探討下。
2016 年,Gartner 創(chuàng)新性地提出了 AIOps 的概念,開創(chuàng)了人工智能輔助運(yùn)維決策的新篇章。
AIOps 系統(tǒng)能夠持續(xù)收集 IT 系統(tǒng)的各種運(yùn)行數(shù)據(jù),利用機(jī)器學(xué)習(xí)算法分析這些數(shù)據(jù),及時(shí)發(fā)現(xiàn)異常情況、故障根源,并提供智能化的修復(fù)建議。它可以減輕運(yùn)維人員的工作強(qiáng)度,提高故障處理效率。
而傳統(tǒng)的運(yùn)維方式往往依賴數(shù)個(gè)具備專業(yè)知識(shí)的運(yùn)維人員對某個(gè)特定場景下的服務(wù)進(jìn)行監(jiān)控與決策。隨著公司體量的成長,業(yè)務(wù)場景及數(shù)量指數(shù)型增長,傳統(tǒng)運(yùn)維將面臨著決策時(shí)間長、決策難度大、人力成本高等問題,一旦出現(xiàn)重大決策失誤,就可能造成巨大的商業(yè)損失。然而,海量的數(shù)據(jù)正好是機(jī)器學(xué)習(xí)的擅長領(lǐng)域。
痛點(diǎn)
從 2009 年雙十一開始到現(xiàn)在,已經(jīng)經(jīng)歷了 16 個(gè)雙十一,數(shù)據(jù)規(guī)模呈現(xiàn)爆發(fā)式的增長,業(yè)務(wù)系統(tǒng)的復(fù)雜度也急劇上升,這對開發(fā)人員和運(yùn)維人員的挑戰(zhàn)性也更大。
在第一次雙十一之后,國內(nèi)各企業(yè)看到了互聯(lián)網(wǎng)的威力,紛紛開始進(jìn)行數(shù)字化轉(zhuǎn)型,而數(shù)據(jù)就成為了企業(yè)的核心資產(chǎn),但是互聯(lián)網(wǎng)的一個(gè)特點(diǎn)就是數(shù)據(jù)量和訪問量巨大,依靠傳統(tǒng)的人工經(jīng)驗(yàn)來運(yùn)維已經(jīng)不堪重負(fù)了。
我記得 2018 年國慶的時(shí)候,我們產(chǎn)品上線了一個(gè)充值幣的秒殺活動(dòng),上線前還得提前報(bào)備給運(yùn)維團(tuán)隊(duì),且需要項(xiàng)目團(tuán)隊(duì)預(yù)估流量和服務(wù)器資源,然后運(yùn)維同事在活動(dòng)期間的進(jìn)行擴(kuò)容,而且運(yùn)行期間還需要一名運(yùn)維同事專門盯著訪問流量和系統(tǒng)性能,這種傳統(tǒng)運(yùn)維方式凸顯出了很多弊端,確實(shí)需要做出轉(zhuǎn)變了。
正式在這樣的背景下,TiDB 與 AiOps(智能運(yùn)維)的結(jié)合,給我們營造了一個(gè)數(shù)據(jù)庫智能運(yùn)維的清晰的藍(lán)圖:自動(dòng)化、智能化、可預(yù)測的新模式。
為什么 TiDB 需要 AiOps
通過不斷地對 TiDB 的學(xué)習(xí),我了解到了 TiDB 作為一款先進(jìn)的分布式數(shù)據(jù)庫,核心優(yōu)勢在與彈性擴(kuò)縮容、高可用性、強(qiáng)一致性和實(shí)時(shí)的 HTAP 能力。但是,這些優(yōu)勢也引入了新的復(fù)雜度。主要包括以下幾個(gè)方面。
組件繁多
一個(gè) TiDB 集群就包含了 TiDB-Server、TiKV、PD、TiFlash 等多個(gè)組件,監(jiān)控的指標(biāo)維度多,數(shù)量大。如下圖所示,這個(gè)是 TiDB 的體系架構(gòu)。
動(dòng)態(tài)性強(qiáng),容易誤報(bào)
擴(kuò)縮容、數(shù)據(jù)調(diào)度、負(fù)載均衡等都是動(dòng)態(tài)進(jìn)行的,傳統(tǒng)靜態(tài)閾值監(jiān)控方式極易產(chǎn)生誤報(bào)。
根因定位困難
TiDB Server 內(nèi)部包含多個(gè)模塊,一個(gè)慢查詢問題,可能源于 SQL 本身、業(yè)務(wù)負(fù)載激增、TiKV 磁盤 IO、網(wǎng)絡(luò)延遲或 PD 調(diào)度問題,人工排查如同大海撈針。
容量規(guī)劃復(fù)雜
傳統(tǒng)的運(yùn)維方式是預(yù)估需要的服務(wù)器資源,然后乘以 2 倍的資源,就是上線時(shí)資源,但隨著業(yè)務(wù)的增長,如何科學(xué)地規(guī)劃硬件資源,避免資源浪費(fèi)或不足,也是對開發(fā)團(tuán)隊(duì)和運(yùn)維團(tuán)隊(duì)一個(gè)比較大的挑戰(zhàn)。
通過上面的幾個(gè)痛點(diǎn),我們知道單純依賴運(yùn)維人員盯著 Dashboard,手動(dòng)分析日志和指標(biāo),已經(jīng)無法有效管理大規(guī)模的 TiDB 集群了,我們需要更強(qiáng)大的武器 - AiOps。
AiOps 的宗旨
將傳統(tǒng)的值班方式改為二十四小時(shí)不間斷的異常監(jiān)控和異常處理。
將個(gè)人的運(yùn)維經(jīng)驗(yàn)轉(zhuǎn)變成集體智慧。
傳統(tǒng)的運(yùn)維方式往往是處理故障,屬于故障發(fā)生之后再去止血補(bǔ)救,而智能運(yùn)維很大程度上賦能了主動(dòng)運(yùn)維這個(gè)概念,在故障出現(xiàn)前通過一些前兆特征加以規(guī)避,或者使故障范圍最小化。
AiOps 能給 TiDB 帶來什么?
AiOps 通過融合大數(shù)據(jù)與機(jī)器學(xué)習(xí)算法,將運(yùn)維數(shù)據(jù)(Metrics, Logs, Traces)轉(zhuǎn)化為深入的洞察和自動(dòng)化的行動(dòng)。它為 TiDB 運(yùn)維帶來了以下幾個(gè)核心價(jià)值。
異常檢測與預(yù)警:從“被動(dòng)救火”到“主動(dòng)預(yù)警”
傳統(tǒng)方式:我們之前的運(yùn)維團(tuán)隊(duì)都是采用設(shè)置靜態(tài)閾值的方式進(jìn)行告警,如 CPU 使用率 > 85%,這種方式靈活性差,容易漏報(bào)或誤報(bào)。
AiOps 方式:那現(xiàn)在我們可以利用機(jī)器學(xué)習(xí)算法(如孤立森林、SVM、LSTM),學(xué)習(xí)每個(gè)指標(biāo)在不同時(shí)間段(工作日/周末)的歷史正常模式。它能發(fā)現(xiàn)人眼難以察覺的微小異常波動(dòng),并在潛在問題影響業(yè)務(wù)前發(fā)出預(yù)警,實(shí)現(xiàn)“治未病”。
如下圖所示,這是一個(gè)案例的分析:
根因分析:從“大海撈針”到“一鍵定位”
當(dāng)問題發(fā)生時(shí),系統(tǒng)會(huì)采集到數(shù)百個(gè)關(guān)聯(lián)指標(biāo)的變化。AiOps 通過相關(guān)性分析、拓?fù)潢P(guān)系圖和有向無環(huán)圖(DAG)等技術(shù),自動(dòng)分析異常事件之間的因果關(guān)系,快速將根本原因定位到具體的組件、機(jī)器甚至某個(gè) SQL 語句,極大縮短平均恢復(fù)時(shí)間(MTTR)。
算法選型建議
初級(jí):Pearson相關(guān)系數(shù) + 拓?fù)鋫鞑?/p>
中級(jí):格蘭杰因果檢驗(yàn) + PageRank
高級(jí):貝葉斯結(jié)構(gòu)學(xué)習(xí) + 深度因果發(fā)現(xiàn)
某電商平臺(tái)實(shí)施效果
智能容量規(guī)劃:從“經(jīng)驗(yàn)猜測”到“數(shù)據(jù)驅(qū)動(dòng)”
通過對歷史負(fù)載數(shù)據(jù)(QPS、數(shù)據(jù)量、CPU/內(nèi)存/磁盤使用率)進(jìn)行時(shí)間序列分析,AiOps 可以預(yù)測未來一段時(shí)間(如“618”、“雙11”)的業(yè)務(wù)增長和資源需求。它可以給出科學(xué)的擴(kuò)縮容建議,例如:“根據(jù)預(yù)測,下月初數(shù)據(jù)庫存儲(chǔ)將達(dá)到瓶頸,建議提前擴(kuò)容兩個(gè) TiKV 節(jié)點(diǎn)”,實(shí)現(xiàn)成本與性能的最優(yōu)平衡。
實(shí)施效益對比
維度 人工規(guī)劃 AIops智能規(guī)劃 預(yù)測周期 通常<1周 可預(yù)測3-6個(gè)月 準(zhǔn)確率 ±40%誤差 ±15%誤差(置信區(qū)間95%) 資源利用率 普遍<50% 穩(wěn)定在65-75% 應(yīng)急擴(kuò)容頻率 大促期間平均3次 趨近于0 典型成本節(jié)約 - 基礎(chǔ)設(shè)施支出降低35%
如下圖所示,這是一個(gè) TiDB 智能容量規(guī)劃系統(tǒng):
智能調(diào)優(yōu)與自治:從“手動(dòng)執(zhí)行”到“自動(dòng)優(yōu)化”
我們大膽推測一番,系統(tǒng)可以自動(dòng)分析慢查詢?nèi)罩荆岢鏊饕齼?yōu)化建議,甚至自動(dòng)創(chuàng)建索引。它可以基于負(fù)載模式,自動(dòng)調(diào)整 TiDB 的參數(shù)配置。在未來,我們甚至可以期待數(shù)據(jù)庫實(shí)現(xiàn)完全的自愈能力,如自動(dòng)故障轉(zhuǎn)移、自動(dòng)流量調(diào)度等。
TiDB智能自治系統(tǒng)示例:
TiDB + AiOps 實(shí)踐路徑
采集數(shù)據(jù)
全面、高質(zhì)量地采集 TiDB 集群的全鏈路數(shù)據(jù)。
Metrics:使用 Prometheus 無縫采集 TiDB 豐富的內(nèi)部監(jiān)控指標(biāo)。
Logs:收集 TiDB 各組件的日志,并接入 ELK 或 Loki 等日志平臺(tái)。
Traces:通過開啟分布式鏈路追蹤(如 OpenTelemetry),追蹤 SQL 請求的全生命周期。
如下圖所示:
平臺(tái)建設(shè)
將采集到的數(shù)據(jù)都接入到 AiOps 平臺(tái)或數(shù)據(jù)湖中。
平臺(tái)需要具備強(qiáng)大的數(shù)據(jù)加工、算法模型管理和可視化能力。
迭代
初級(jí)階段:對核心的性能指標(biāo)實(shí)現(xiàn)智能的異常檢測。
中級(jí)階段:實(shí)施根因分析,并指出問題所在以及處理方案。
高級(jí)階段:輔助決策、自動(dòng)化整改,如自動(dòng)擴(kuò)容、SQL 優(yōu)化自動(dòng)執(zhí)行等。
TiDB + AiOps 的優(yōu)勢
我思考了,TiDB 相比其他的數(shù)據(jù)庫真的是具有天然的優(yōu)勢:
因?yàn)?TiDB 本身根據(jù)具有豐富的監(jiān)控指標(biāo),為機(jī)器學(xué)習(xí)提供了高質(zhì)量的數(shù)據(jù)源。
且 TiDB 完美支持 Prometheus、Grafana 等云原生監(jiān)控生態(tài),易于集成。
以及它的分布式架構(gòu),無狀態(tài)計(jì)算層(TiDB-Server)和彈性存儲(chǔ)層(TiKV)的設(shè)計(jì),使得自動(dòng)化擴(kuò)縮容等非常方便。
總結(jié)
TiDB + AiOps 的結(jié)合,我覺得不是 1+1 的計(jì)算題,而是思維的轉(zhuǎn)變,一場深刻的運(yùn)維變革。就像現(xiàn)在我們團(tuán)隊(duì)一直用 Jenkins 來打包部署,和之前的人工打包相比,真的是徹底解放了雙手,部署的時(shí)候還能喝一杯咖啡。而 TiDB + AiOps 可以將 DBA 從繁瑣重復(fù)的日常監(jiān)控和救火中解放出來,使其能更加專注于數(shù)據(jù)庫架構(gòu)設(shè)計(jì)、性能優(yōu)化等更高層次的工作。
我之前寫過 TiDB MCP Server 的實(shí)踐文章,通過自然語言查詢數(shù)據(jù)、操作數(shù)據(jù)庫,我相信在未來,隨著 AI Agent 的不斷發(fā)展,我們可以通過自然語言與這套結(jié)合的系統(tǒng)進(jìn)行交互,比如幫我分析下昨天的數(shù)據(jù)庫性能瓶頸,或者幫我整理一份雙十一的資源擴(kuò)容計(jì)劃等等。而 TiDB 依據(jù)自身架構(gòu)的天然優(yōu)勢、以及開放的生態(tài)、友好的社區(qū)氛圍,將走在這場變革的最前沿,真心祝愿 TiDB 越走越好!




