精選案例 |《金融電子化》:光大銀行云原生背景下的運(yùn)維監(jiān)控體系建設(shè)
順應(yīng)“十四五”規(guī)劃中關(guān)于“加快金融機(jī)構(gòu)數(shù)字化轉(zhuǎn)型”要求,中國(guó)人民銀行印發(fā)了《金融科技發(fā)展規(guī)劃(2022-2025年)》。近幾年來(lái),金融行業(yè)牢牢占據(jù)著國(guó)內(nèi)產(chǎn)業(yè)數(shù)字化轉(zhuǎn)型市場(chǎng)投入的榜首位置。IDC調(diào)查顯示,2022上半年,中國(guó)金融云市場(chǎng)規(guī)模達(dá)到34.3億美元,同比增長(zhǎng)29.3%。
光大銀行在數(shù)字化轉(zhuǎn)型過(guò)程中積極應(yīng)用云原生技術(shù)對(duì)業(yè)務(wù)系統(tǒng)進(jìn)行了升級(jí)改造,大幅提升了底層技術(shù)平臺(tái)對(duì)上層業(yè)務(wù)的支撐能力,不過(guò)伴隨而來(lái)的全新的運(yùn)維體系建設(shè)難題的解決也變得迫在眉睫。借助博睿數(shù)據(jù)在云原生復(fù)雜環(huán)境下的可觀測(cè)性能力的突破,光大銀行不僅實(shí)現(xiàn)了傳統(tǒng)的全棧式數(shù)據(jù)采集與監(jiān)測(cè),同時(shí)通過(guò)多級(jí)融合方式將復(fù)雜的調(diào)用鏈與指標(biāo)及日志數(shù)據(jù)進(jìn)行了融合,進(jìn)而實(shí)現(xiàn)了高效的數(shù)據(jù)分析能力,以及以AI為主的智能根因定位能力。最終,該方案不僅解決了客戶現(xiàn)有運(yùn)維體系改造建設(shè)的難題,其技術(shù)的前瞻性應(yīng)用也讓對(duì)應(yīng)的案例發(fā)表在了中國(guó)人民銀行主管的《金融電子化》雜志上。
以下為原文,共計(jì)4024字,預(yù)計(jì)閱讀時(shí)間9min。
隨著數(shù)字化轉(zhuǎn)型的逐步深入,如何在保障業(yè)務(wù)穩(wěn)定運(yùn)行的同時(shí),又能夠快速高效地滿足不斷變化的業(yè)務(wù)需要,是銀行行業(yè)IT支撐部門亟待解決的一個(gè)難題。當(dāng)前,通過(guò)云原生等先進(jìn)技術(shù)建設(shè)“數(shù)字化中臺(tái)”,進(jìn)一步提升對(duì)業(yè)務(wù)的快速支撐,推動(dòng)業(yè)務(wù)技術(shù)深度融合,構(gòu)建金融科技賦能業(yè)務(wù)的綜合戰(zhàn)略決策體系,已成為銀行業(yè)IT技術(shù)的重要指引方向。云原生環(huán)境具有如下特點(diǎn):
1、不可變基礎(chǔ)設(shè)施
以鏡像、容器為基礎(chǔ),通過(guò)編排系統(tǒng)下載更新鏡像、只更新鏡像不改變?nèi)萜鬟\(yùn)行時(shí)等方式,構(gòu)建基于容器化封裝的云原生體系,確保基礎(chǔ)實(shí)施的一致性與可靠性,從而實(shí)現(xiàn)“一次構(gòu)建,到處運(yùn)行”的能力。
2、彈性的服務(wù)編排
通過(guò)集中式的編排調(diào)度系統(tǒng)實(shí)現(xiàn)對(duì)計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)等資源的自動(dòng)化統(tǒng)一調(diào)度,構(gòu)建業(yè)務(wù)的集群管理能力,提供負(fù)載均衡、資源自動(dòng)調(diào)度、動(dòng)態(tài)擴(kuò)縮容、自動(dòng)修復(fù)等能力。
3、微服務(wù)架構(gòu)
在云原生應(yīng)用設(shè)計(jì)中,通常采用微服務(wù)設(shè)計(jì),傳統(tǒng)單體應(yīng)用的功能被拆解成大量獨(dú)立、細(xì)粒度的分布式服務(wù),實(shí)現(xiàn)服務(wù)的相互解耦。通過(guò)應(yīng)用編排調(diào)度組裝,進(jìn)而實(shí)現(xiàn)等價(jià)于傳統(tǒng)的單體應(yīng)用,但卻更加靈活、易于維護(hù)。
4、可管理性和可觀測(cè)性
除了優(yōu)點(diǎn)之外,云原生環(huán)境也存在應(yīng)用調(diào)度可視化復(fù)雜,難以快速定位故障等困難。因容器漂移、自動(dòng)擴(kuò)縮容等特性,應(yīng)用的調(diào)用關(guān)系通常難以清晰展示與分析,故障現(xiàn)場(chǎng)難以還原,為業(yè)務(wù)系統(tǒng)運(yùn)維及故障排查帶來(lái)了極大的挑戰(zhàn),因此需要有專業(yè)組件或工具提升監(jiān)控管理能力。
光大銀行十分重視金融科技創(chuàng)新工作,在各級(jí)工作會(huì)議中,集團(tuán)與銀行領(lǐng)導(dǎo)多次提到“要堅(jiān)持把科技創(chuàng)新擺在發(fā)展全局的重要位置”,“要以科技創(chuàng)新為驅(qū)動(dòng),加速推進(jìn)數(shù)字化轉(zhuǎn)型”。光大銀行金融科技部堅(jiān)持貫徹科技引領(lǐng)的戰(zhàn)略目標(biāo),以科技創(chuàng)新為驅(qū)動(dòng),打造自主可控的光大技術(shù)中臺(tái),并完成了全棧云平臺(tái)建設(shè),全面支持云原生技術(shù),并遵循CNCF(云原生計(jì)算基金會(huì))OpenTelemetry理念,構(gòu)建全面的Trace(調(diào)用鏈)、Metric(指標(biāo))、Log(日志)數(shù)據(jù)分析維度,全面提升云原生環(huán)境下的可觀測(cè)性,并融合穩(wěn)態(tài)/敏態(tài)運(yùn)維管理體系,為行內(nèi)數(shù)字化轉(zhuǎn)型戰(zhàn)略護(hù)航,實(shí)現(xiàn)由大型主機(jī)運(yùn)維向分布式架構(gòu)運(yùn)維的轉(zhuǎn)型。
光大“全棧云”監(jiān)控背景


光大銀行通過(guò)開發(fā)測(cè)試云、生產(chǎn)云、金融生態(tài)云三朵云的全棧云體系建設(shè),全面支持業(yè)務(wù)的敏捷開發(fā)、持續(xù)交付和穩(wěn)定運(yùn)行,技術(shù)棧全面兼容X86架構(gòu)與國(guó)產(chǎn)化ARM架構(gòu),全面支持混合云架構(gòu),提供兩地三中心及異地多活能力,逐步推進(jìn)行內(nèi)應(yīng)用云原生改造步伐,實(shí)現(xiàn)以云原生應(yīng)用為主,傳統(tǒng)應(yīng)用為輔的全棧云技術(shù)支撐體系,如圖1所示。與此同時(shí),光大還構(gòu)建了完整的云原生監(jiān)控體系,實(shí)現(xiàn)了從基礎(chǔ)架構(gòu)監(jiān)控(ITIM)、到應(yīng)用性能監(jiān)控(APM)、網(wǎng)絡(luò)性能監(jiān)控(NPM)以及用戶體驗(yàn)監(jiān)控(DEM)的全鏈路監(jiān)控體系,全面監(jiān)控云原生環(huán)境以及穩(wěn)態(tài)系統(tǒng)中業(yè)務(wù)運(yùn)行的穩(wěn)定性,如圖2所示。
云原生應(yīng)用監(jiān)控實(shí)踐

光大銀行在全棧云平臺(tái)構(gòu)建應(yīng)用性能監(jiān)控(APM)解決方案,通過(guò)智能探針技術(shù)(SmartAgent),實(shí)現(xiàn)對(duì)平臺(tái)應(yīng)用系統(tǒng)的自動(dòng)安裝與監(jiān)控。探針監(jiān)控使用字節(jié)碼等相關(guān)技術(shù),無(wú)需對(duì)程序代碼進(jìn)行修改,即可實(shí)現(xiàn)對(duì)應(yīng)用程序的執(zhí)行過(guò)程進(jìn)行全面監(jiān)控與追蹤。APM平臺(tái)服務(wù)端采用大數(shù)據(jù)處理架構(gòu),主要技術(shù)框架如圖3所示。
通過(guò)APM產(chǎn)品中全棧(Full-Stack)探針的能力和平臺(tái)的數(shù)據(jù)分析能力,實(shí)現(xiàn)了應(yīng)用性能評(píng)分體系、調(diào)用鏈路追蹤、代碼級(jí)故障定位以及指標(biāo)/日志關(guān)聯(lián)分析等能力。
一、應(yīng)用評(píng)分體系
通過(guò)對(duì)應(yīng)用性能體驗(yàn)相關(guān)指標(biāo)的綜合評(píng)分,構(gòu)建應(yīng)用評(píng)分體系。評(píng)分體系通過(guò)對(duì)應(yīng)用的Apdex評(píng)價(jià)、響應(yīng)速度及錯(cuò)誤率作為評(píng)價(jià)依據(jù),通過(guò)100分制的權(quán)重計(jì)算,得出應(yīng)用系統(tǒng)的性能評(píng)分。
Apdex為Application Performance Index的縮寫,是Apdex 聯(lián)盟開放的用于評(píng)估應(yīng)用性能的工業(yè)標(biāo)準(zhǔn),通過(guò)應(yīng)用響應(yīng)時(shí)間評(píng)估用戶滿意程度,并量化為0~1的滿意度評(píng)價(jià)(數(shù)值越趨近于1代表用戶越滿意,應(yīng)用的最終評(píng)分也就越高)。

響應(yīng)速度為該應(yīng)用業(yè)務(wù)請(qǐng)求的平均響應(yīng)速度,響應(yīng)速度越快,評(píng)分越高。
錯(cuò)誤率是指應(yīng)用調(diào)用過(guò)程中出現(xiàn)各類錯(cuò)誤樣本占總樣本數(shù)的比率。錯(cuò)誤包含常見的網(wǎng)絡(luò)錯(cuò)誤、程序執(zhí)行報(bào)錯(cuò)、數(shù)據(jù)庫(kù)錯(cuò)誤等,這些錯(cuò)誤都有可能會(huì)影響到用戶使用業(yè)務(wù)的效果及性能體驗(yàn)。因此,錯(cuò)誤率越低,最終評(píng)分越高。
通過(guò)掌握應(yīng)用系統(tǒng)的橫向評(píng)分對(duì)比以及歷史得分參考,通過(guò)評(píng)分快速掌握當(dāng)前應(yīng)用系統(tǒng)的總體運(yùn)行狀況,由原來(lái)對(duì)應(yīng)用運(yùn)行好壞的主觀評(píng)價(jià),變?yōu)榱炕u(píng)估。
二、調(diào)用鏈路追蹤
通過(guò)TraceID自動(dòng)寫入技術(shù),實(shí)現(xiàn)對(duì)應(yīng)用從程序入口到執(zhí)行全鏈路進(jìn)行監(jiān)控與追蹤,自動(dòng)繪制程序調(diào)用拓?fù)?。APM探針在應(yīng)用調(diào)用的入口方法的Header中,自動(dòng)注入唯一的TraceID及調(diào)用層級(jí),隨著應(yīng)用的不斷調(diào)用,將TraceID在不同調(diào)用的Header中進(jìn)行傳遞,并記錄每一個(gè)調(diào)用層級(jí)數(shù)據(jù),通過(guò)探針將上述數(shù)據(jù)及性能監(jiān)控?cái)?shù)據(jù)進(jìn)行回傳,基于有向無(wú)環(huán)圖(DAG)的原理,構(gòu)建應(yīng)用的調(diào)用鏈追蹤拓?fù)洹?/p>
在同步中,基于應(yīng)用性能好壞,通過(guò)不同顏色標(biāo)注,綠色表示優(yōu)秀/正常,黃色表示緩慢,使用紅色的圓環(huán)表示錯(cuò)誤率的占比。從而直觀發(fā)現(xiàn)應(yīng)用性能問(wèn)題,提升云原生環(huán)境下的可觀測(cè)性,實(shí)現(xiàn)應(yīng)用故障的快速定位及影響范圍分析。
三、代碼級(jí)故障定位
通過(guò)字節(jié)碼、自研SuperTrace等技術(shù),實(shí)現(xiàn)對(duì)應(yīng)用程序在內(nèi)存執(zhí)行過(guò)程的全面監(jiān)控。
以Java應(yīng)用舉例,字節(jié)碼技術(shù)是指當(dāng)被監(jiān)控對(duì)象的類加載時(shí),通過(guò)java.lang.instrument包提供的字節(jié)碼增強(qiáng)技術(shù),對(duì)所加載類進(jìn)行動(dòng)態(tài)修改,以獲取各個(gè)方法執(zhí)行開始時(shí)間、結(jié)束時(shí)間、返回狀態(tài)等相關(guān)數(shù)據(jù),可實(shí)現(xiàn)對(duì)常見數(shù)據(jù)庫(kù)調(diào)用、消息中間件調(diào)用、遠(yuǎn)程RPC調(diào)用以及自定義方法調(diào)用等各種程序執(zhí)行過(guò)程的全面監(jiān)控,從而掌握應(yīng)用程序緩慢根因,快速定位應(yīng)用故障或緩慢是由哪個(gè)或者Class(類)、Method(方法)的問(wèn)題所導(dǎo)致的,并可定位到故障/問(wèn)題所在代碼行號(hào)。
自研的SuperTrace技術(shù)則是通過(guò)JDK所提供的JVM監(jiān)控技術(shù),對(duì)內(nèi)存堆棧中各方法的入棧、出棧時(shí)間進(jìn)行實(shí)時(shí)掃描,并通過(guò)出入棧時(shí)間和各個(gè)方法相互訪問(wèn)調(diào)用關(guān)系,通過(guò)本地Agent進(jìn)行數(shù)據(jù)上報(bào)。為節(jié)約探針端內(nèi)存掃描的資源開銷,探針會(huì)從服務(wù)端獲取數(shù)據(jù)采集策略。平臺(tái)可配置數(shù)據(jù)采集的觸發(fā)閾值,只有當(dāng)方法執(zhí)行時(shí)間≥100ms時(shí),才會(huì)對(duì)相關(guān)方法的明細(xì)數(shù)據(jù)進(jìn)行采集,從而大幅降低了JVM掃描頻次和系統(tǒng)資源占用。
上述相關(guān)方式抓取到的數(shù)據(jù),支持以單次請(qǐng)求(以TraceID為唯一標(biāo)識(shí))維度進(jìn)行查看,以快照形式進(jìn)行存儲(chǔ)與展示,在平臺(tái)以程序調(diào)用瀑布圖的方式進(jìn)行展示,可以直觀發(fā)現(xiàn)慢請(qǐng)求的發(fā)生位置以及各個(gè)方法的調(diào)用次序。
四、關(guān)聯(lián)分析能力
通過(guò)將故障發(fā)生時(shí)的基礎(chǔ)架構(gòu)相關(guān)指標(biāo),如CPU、內(nèi)存、JVM等數(shù)據(jù)進(jìn)行聯(lián)動(dòng)分析,快速定位故障成因是基礎(chǔ)設(shè)施資源問(wèn)題導(dǎo)致還是程序本身問(wèn)題導(dǎo)致。
當(dāng)前探針在采集APM應(yīng)用性能相關(guān)數(shù)據(jù)的同時(shí),還會(huì)通過(guò)JNI接口(Java native interface,Java本地接口)中的相關(guān)API,同步獲取操作系統(tǒng)的底層數(shù)據(jù)信息,如CPU、內(nèi)存、磁盤IO、網(wǎng)絡(luò)流量開銷、系統(tǒng)IO、進(jìn)程數(shù)據(jù)、內(nèi)存數(shù)據(jù)等一系列基礎(chǔ)架構(gòu)監(jiān)控的指標(biāo)數(shù)據(jù)。
再通過(guò)基于事件、時(shí)間戳和節(jié)點(diǎn)信息的關(guān)聯(lián)分析,將APM數(shù)據(jù)與基礎(chǔ)架構(gòu)指標(biāo)數(shù)據(jù)進(jìn)行聯(lián)動(dòng),同步分析該應(yīng)用發(fā)生性能問(wèn)題時(shí)的基礎(chǔ)架構(gòu)監(jiān)控指標(biāo)變動(dòng)情況,從而實(shí)現(xiàn)問(wèn)題關(guān)聯(lián)分析的能力。
五、智能探針技術(shù)
通過(guò)SmartAgent技術(shù),全面兼容非容器/容器環(huán)境的各類應(yīng)用,支持獨(dú)立進(jìn)程、DaemonSet、Image等多種方式進(jìn)行探針安裝,全面兼容K8S,從而實(shí)現(xiàn)了探針的簡(jiǎn)易部署、自動(dòng)監(jiān)控。
智能探針可支持通過(guò)守護(hù)進(jìn)程對(duì)容器的調(diào)度情況進(jìn)行監(jiān)控,當(dāng)發(fā)現(xiàn)有被監(jiān)控容器生成時(shí),將先判斷該容器環(huán)境應(yīng)適配哪個(gè)類型的探針(如Java、Python、Node.js等),然后自動(dòng)將匹配好的探針進(jìn)行自動(dòng)裝載和配置信息修改,實(shí)現(xiàn)探針的自動(dòng)發(fā)現(xiàn)、自動(dòng)注入的能力。
同時(shí),在APM平臺(tái)還可配置不同的監(jiān)控策略和批量進(jìn)行探針啟停管理??墒褂眠M(jìn)程名稱、鏡像名稱、環(huán)境變量、正則表達(dá)式等多種方式,進(jìn)行服務(wù)進(jìn)程的命名與合并,定義服務(wù)與應(yīng)用的邏輯層級(jí)關(guān)系。
通過(guò)上述自動(dòng)發(fā)現(xiàn)能力自動(dòng)注入、探針統(tǒng)一調(diào)度策略管理等能力,實(shí)現(xiàn)了容器漂移或重啟時(shí)自動(dòng)監(jiān)控的相關(guān)功能。
端到端監(jiān)控實(shí)踐
光大銀行除了在應(yīng)用服務(wù)端進(jìn)行性能監(jiān)控實(shí)踐之外,還針對(duì)應(yīng)用系統(tǒng)如網(wǎng)上銀行、手機(jī)銀行等前端應(yīng)用進(jìn)行了用戶體驗(yàn)監(jiān)控(DEM)實(shí)踐。通過(guò)DEM的產(chǎn)品建設(shè),掌握用戶真實(shí)業(yè)務(wù)使用過(guò)程中的性能體驗(yàn)及問(wèn)題,并通過(guò)端到端打通的方式,構(gòu)建從用戶到代碼的全鏈路監(jiān)控體系。
通過(guò)前后端關(guān)聯(lián)分析的能力,可以通過(guò)平臺(tái)快速了解當(dāng)前系統(tǒng)的整體運(yùn)行狀態(tài),分析主要問(wèn)題是發(fā)生在網(wǎng)頁(yè)端、手機(jī)APP端還是H5頁(yè)面端。從數(shù)據(jù)中心內(nèi)部看,問(wèn)題是在哪個(gè)集群、哪一類應(yīng)用上,主要問(wèn)題是應(yīng)用本身問(wèn)題,還是遠(yuǎn)程調(diào)用,或是數(shù)據(jù)庫(kù)問(wèn)題導(dǎo)致。
前端監(jiān)控分別通過(guò)主動(dòng)模擬監(jiān)控方式和JS/SDK注入方式,獲取用戶使用業(yè)務(wù)過(guò)程中的網(wǎng)絡(luò)請(qǐng)求性能數(shù)據(jù)、頁(yè)面加載性能數(shù)據(jù)及使用中遇到的慢卡頓等各類問(wèn)題,全面掌握業(yè)務(wù)在各個(gè)區(qū)域、各類網(wǎng)絡(luò)、各個(gè)機(jī)型和重要業(yè)務(wù)流程中的可用性與連續(xù)性。
平臺(tái)具備端到端的關(guān)聯(lián)分析能力,基于TraceID在Header中傳導(dǎo)的原理,將前后端的性能數(shù)據(jù)進(jìn)行關(guān)聯(lián),實(shí)現(xiàn)針對(duì)單一調(diào)用前后端關(guān)聯(lián)分析的能力。舉例來(lái)說(shuō),一個(gè)用戶請(qǐng)求較慢,發(fā)現(xiàn)服務(wù)端處理用時(shí)偏高 :點(diǎn)擊進(jìn)入到快照分析中,找到相關(guān)快照記錄,通過(guò)點(diǎn)擊服務(wù)端快照的方式,當(dāng)前端應(yīng)用發(fā)現(xiàn)性能問(wèn)題,定位為后端服務(wù)響應(yīng)速度慢時(shí),可以通過(guò)快照跳轉(zhuǎn)的方式,跳轉(zhuǎn)到APM平臺(tái)進(jìn)行關(guān)聯(lián)分析,直至定位到問(wèn)題的故障代碼。
收益與展望
通過(guò)本期項(xiàng)目建設(shè),構(gòu)建了應(yīng)用系統(tǒng)前后端的性能監(jiān)測(cè)能力,全面兼容光大全棧云平臺(tái),實(shí)現(xiàn)對(duì)云原生業(yè)務(wù)的Trace、Metric和日志數(shù)據(jù)的收集分析,并通過(guò)前后端關(guān)聯(lián)的方式,了解了應(yīng)用可用性指標(biāo)與運(yùn)行狀態(tài),實(shí)現(xiàn)了問(wèn)題代碼級(jí)根因定位的能力。
按照Gartner對(duì)于IT運(yùn)維系統(tǒng)建設(shè)步驟的建議,將IT建設(shè)過(guò)程分為5個(gè)階段,從低到高可分為可用性監(jiān)控階段、指標(biāo)體系建設(shè)階段、故障根因定位階段、業(yè)務(wù)洞察階段和流程自動(dòng)化階段。當(dāng)前光大銀行系統(tǒng)建設(shè)已經(jīng)完成了第一到三階段中可用性監(jiān)控、指標(biāo)體系建設(shè)和事務(wù)追蹤的初步監(jiān)控能力,實(shí)現(xiàn)了故障的根因定位與診斷能力,基本完成了第三階段的建設(shè)目標(biāo)。后續(xù)項(xiàng)目建設(shè)將在現(xiàn)有基礎(chǔ)上,實(shí)現(xiàn)以下內(nèi)容 :首先,進(jìn)一步完善指標(biāo)體系和性能監(jiān)控范圍與標(biāo)準(zhǔn),構(gòu)建統(tǒng)一客觀的評(píng)價(jià)體系。其次,基于現(xiàn)有監(jiān)控指標(biāo)數(shù)據(jù),實(shí)現(xiàn)業(yè)務(wù)的商業(yè)洞察,了解用戶的使用流程和軌跡,從性能和收入角度綜合分析IT服務(wù)支撐效果和用戶使用習(xí)慣,真正從運(yùn)維入手,來(lái)促進(jìn)和提升業(yè)務(wù)運(yùn)營(yíng)。第三,實(shí)現(xiàn)多維度數(shù)據(jù)的不斷積累,為全面的自動(dòng)化運(yùn)維奠定良好的數(shù)據(jù)基礎(chǔ)和實(shí)踐基礎(chǔ),構(gòu)建不同維度的AIOps落地場(chǎng)景,在奠定基礎(chǔ)的同時(shí)提升運(yùn)維及業(yè)務(wù)收益。
博睿數(shù)據(jù)作為中國(guó)領(lǐng)先的智能可觀測(cè)平臺(tái)代表廠商,目前也是對(duì)應(yīng)產(chǎn)品方案能夠落地四大行生產(chǎn)環(huán)境的重要廠商。博睿數(shù)據(jù)將近年優(yōu)秀實(shí)踐整理為《金融行業(yè)精選客戶案例集》,在上一版收錄建設(shè)銀行、農(nóng)業(yè)銀行、泰康保險(xiǎn)等客戶的基礎(chǔ)上,本次新增光大銀行、平安銀行、中銀證券等優(yōu)秀的行業(yè)案例,希望通過(guò)拋磚引玉,為行業(yè)提供一批可復(fù)制可操作的先進(jìn)經(jīng)驗(yàn),同時(shí)希望能夠促進(jìn)更多業(yè)界的合作與交流。
掃描海報(bào)下方二維碼,免費(fèi)獲取博睿數(shù)據(jù)最新版《金融行業(yè)精選客戶案例集》。
