作為中國(guó)移動(dòng)智慧中臺(tái)的統(tǒng)一技術(shù)底座,磐基 PaaS 平臺(tái)提供了高效的集群管理和調(diào)度功能,滿足多元化的業(yè)務(wù)場(chǎng)景需求。該平臺(tái)攜手 DeepFlow 借助 eBPF 技術(shù),解決了 APM 落地困難和組件追蹤斷路中的挑戰(zhàn),實(shí)現(xiàn)了全棧且無(wú)侵?jǐn)_的應(yīng)用可觀測(cè)性。磐基 PaaS 平臺(tái)將 eBPF 數(shù)據(jù)與現(xiàn)有的可觀測(cè)數(shù)據(jù)整合,提供了開(kāi)箱即用的應(yīng)用可觀測(cè)性,全棧無(wú)盲點(diǎn)的調(diào)用鏈追蹤等能力,大大提升了各業(yè)務(wù)系統(tǒng)云化的底氣,并促進(jìn)了平臺(tái)本身的快速推廣。未來(lái),平臺(tái)還針對(duì)運(yùn)營(yíng)商等特定行業(yè)場(chǎng)景,進(jìn)一步深化可觀測(cè)性數(shù)據(jù)的融合,并將創(chuàng)新性地拓展其 AI 能力,以增強(qiáng)市場(chǎng)競(jìng)爭(zhēng)力。
背景介紹
磐基 PaaS 平臺(tái)是中國(guó)移動(dòng)智慧中臺(tái)統(tǒng)一技術(shù)底座,為算力網(wǎng)絡(luò)提供編排調(diào)度能力,提供分鐘級(jí)的集群交付,實(shí)現(xiàn) ARM/X86/混部架構(gòu)集群統(tǒng)一管控,按需調(diào)度,支撐 B、O、M 三域用戶交互、計(jì)算密集、數(shù)據(jù)密集、交易密集等多種類型的業(yè)務(wù)系統(tǒng),具備萬(wàn)級(jí) POD 承載能力,構(gòu)建雙棧網(wǎng)絡(luò),使在線業(yè)務(wù)穩(wěn)定運(yùn)行、平穩(wěn)應(yīng)對(duì)業(yè)務(wù)高峰。
磐基 PaaS 平臺(tái)整合了磐基容器平臺(tái)、磐舟 Devops、算力管控、磐維數(shù)據(jù)庫(kù)、磐智 AI 平臺(tái)及相關(guān)能力,以戰(zhàn)略指導(dǎo)、統(tǒng)一規(guī)劃、能力解耦、有機(jī)組裝、需求驅(qū)動(dòng)、場(chǎng)景匹配、敏捷迭代、低感升級(jí)為原則,全面布局云原生 PaaS 產(chǎn)品能力圖譜,均衡發(fā)展。
磐基 PaaS 平臺(tái)目前納管 700+集群,4 萬(wàn)+節(jié)點(diǎn),6 千多套組件,支撐省分公司包括 CRM 核心系統(tǒng)、BOSS 計(jì)費(fèi)系統(tǒng),IT 公司、各專業(yè)公司 IT 系統(tǒng)包括 AI、大數(shù)據(jù)系統(tǒng)等 600 多個(gè)業(yè)務(wù)系統(tǒng)上云。
云原生 PaaS 產(chǎn)品能力圖譜
目前磐基 PaaS 平臺(tái)基于可觀測(cè)性三大基石(指標(biāo)+追蹤+日志)的指導(dǎo)思想,已經(jīng)使用不同的組件構(gòu)建完成,利用 Prometheus 獲取了云原生基礎(chǔ)設(shè)施資源(Docker、K8s 自身)、中間件(Redis、Nginx)等指標(biāo)數(shù)據(jù),利用自研的 APM 實(shí)現(xiàn)了微服務(wù)在代碼級(jí)別的調(diào)用鏈追蹤,利用自研日志平臺(tái)收集主機(jī)、Kubernetes、組件、應(yīng)用實(shí)例的日志數(shù)據(jù)。但是在業(yè)務(wù)真正落地過(guò)程中,還是存在以下一些問(wèn)題:
推廣支撐力度不夠
信任度不足:傳統(tǒng) APM 探針技術(shù)主要采用字節(jié)碼注入技術(shù),該技術(shù)雖無(wú)需業(yè)務(wù)系統(tǒng)研發(fā)人員關(guān)注代碼實(shí)現(xiàn),但對(duì)業(yè)務(wù)系統(tǒng)仍有代碼侵入特性,進(jìn)而占用業(yè)務(wù)系統(tǒng)資源,或影響業(yè)務(wù)性能。高并發(fā)生產(chǎn)系統(tǒng)往往因探針可能產(chǎn)生的影響,而質(zhì)疑其收益性。
?語(yǔ)言依賴強(qiáng):字節(jié)碼注入技術(shù)依賴業(yè)務(wù)系統(tǒng)代碼語(yǔ)言和代碼框架,導(dǎo)致傳統(tǒng) APM 技術(shù)需提供各種語(yǔ)言和框架的探針,才能滿足企業(yè)級(jí) PaaS 平臺(tái)的可觀測(cè)能力,因而在能力建設(shè)上的投入往往落后于實(shí)際生產(chǎn)需要。
?遷移難度大:SkyWalking 等 APM 產(chǎn)品早在非容器化時(shí)代便已普及,云原生時(shí)代同步提供了容器化操作。當(dāng)業(yè)務(wù)系統(tǒng)與 APM 產(chǎn)品深度融合后,變更觀測(cè)產(chǎn)品的推動(dòng)力便極其微弱。
觀測(cè)能力覆蓋不足
?云設(shè)施觀測(cè)能力不全:云原生全棧式可觀測(cè)融合視圖應(yīng)包含云原生網(wǎng)絡(luò)層能力,但傳統(tǒng)探針技術(shù)在 CoreDNS、NodeLocal DNS 等 Kubernetes 網(wǎng)絡(luò)層還存在盲區(qū)。
?組件觀測(cè)能力弱:可觀測(cè)能力應(yīng)盡可能地呈現(xiàn)業(yè)務(wù)系統(tǒng)及其相關(guān)的依賴組件、基礎(chǔ)設(shè)施的全貌,但傳統(tǒng)的探針技術(shù)因語(yǔ)言和框架的依賴性,在觀測(cè)系統(tǒng)所依賴的組件內(nèi)部的呈現(xiàn)能力還顯得不足,往往只能到其表面請(qǐng)求入口,內(nèi)部仍是黑盒狀態(tài)。
基于以上痛點(diǎn),磐基 PaaS 平臺(tái)開(kāi)展 ebpf 技術(shù)能力特性的研究,并與 deepflow 社區(qū)開(kāi)展合作,啟動(dòng)基于 ebpf 技術(shù)的可觀測(cè)平臺(tái)能力建設(shè),突破創(chuàng)新性的技術(shù)壁壘,致力于完善云原生場(chǎng)景下的應(yīng)用觀測(cè)圖譜。
為什么引入 DeepFlow?
DeepFlow 基于 eBPF 實(shí)現(xiàn)了應(yīng)用性能指標(biāo)、分布式追蹤、持續(xù)性能剖析等觀測(cè)信號(hào)的零侵?jǐn)_(Zero Code)采集,并結(jié)合智能標(biāo)簽(SmartEncoding)技術(shù)實(shí)現(xiàn)了所有觀測(cè)信號(hào)的全棧(Full Stack)關(guān)聯(lián)和高效存取。
零侵?jǐn)_的方式支持主流應(yīng)用協(xié)議的解析,包括 HTTP 1/2、HTTPS(Golang/openssl)、Dubbo、gRPC、ProtobufRPC、SOFARPC、MySQL、PostgreSQL、Redis、Kafka、MQTT、DNS,未來(lái)還將擴(kuò)展更多應(yīng)用協(xié)議的支持。提供了查看所有微服務(wù)應(yīng)用的 RED(Request/Error/Delay)黃金指標(biāo),所有微服務(wù)之間的全景調(diào)用關(guān)系,以及網(wǎng)絡(luò)協(xié)議棧 L4 層的吞吐、時(shí)延、建連異常、重傳、零窗等指標(biāo)。
開(kāi)箱即用
利用 eBPF 和 Wasm 技術(shù)零侵?jǐn)_實(shí)現(xiàn)分布式追蹤,支持任意語(yǔ)言的應(yīng)用程序,完整覆蓋網(wǎng)關(guān)、服務(wù)網(wǎng)格、數(shù)據(jù)庫(kù)、消息隊(duì)列、DNS、網(wǎng)卡等各類基礎(chǔ)設(shè)施,不留下任何追蹤盲點(diǎn)。
零侵?jǐn)_分布式追蹤
依托 eBPF 技術(shù)獲得的無(wú)插碼零侵?jǐn)_能力,DeepFlow 基本能做到獨(dú)立應(yīng)用部署,對(duì)應(yīng)用開(kāi)箱即用,對(duì)外提供的 Grafana Dashboard 也非常豐富。
磐基 eBPF 應(yīng)用可觀測(cè)性實(shí)踐
DeepFlow 對(duì)外提供統(tǒng)一的 SQL 接口查詢所有類型的觀測(cè)數(shù)據(jù),磐基平臺(tái)可以非常方便的將 DeepFlow 數(shù)據(jù)與自身可觀測(cè)平臺(tái)集成,目前磐基可觀測(cè)平臺(tái)基于 eBPF 數(shù)據(jù)實(shí)現(xiàn)了網(wǎng)絡(luò)流量拓?fù)湔故尽BPF 調(diào)用鏈火焰圖展示、告警閾值配置、并將 eBPF 數(shù)據(jù)與現(xiàn)有的指標(biāo)、日志、調(diào)用鏈數(shù)據(jù)融合,以實(shí)現(xiàn)全棧一體化的可觀測(cè)性平臺(tái)。
平臺(tái)架構(gòu)
流量拓?fù)湔故荆С侄喾N維度拓?fù)湟晥D(應(yīng)用 POD/NODE、網(wǎng)絡(luò) POD/NODE);支持跨集群流量調(diào)用展示;支持黃金指標(biāo)(吞吐量、錯(cuò)誤率、延遲等)進(jìn)行告警閾值配置找到異常網(wǎng)絡(luò)路徑;支持告警閾值配置控制線條顏色,展示不同顏色拓?fù)渚€條,并實(shí)時(shí)告警通知;支持靈活的過(guò)濾條件(集群、分區(qū)、工作負(fù)載、協(xié)議、節(jié)點(diǎn))。
流量拓?fù)?01
流量拓?fù)?02
調(diào)用鏈火焰圖,展示單條請(qǐng)求的全棧調(diào)用關(guān)系,包括系統(tǒng)進(jìn)程、主機(jī)、容器節(jié)點(diǎn)、POD 容器內(nèi)的請(qǐng)求耗時(shí)情況。
調(diào)用鏈火焰圖
deepflow-agent、deepflow-server、deepflow-app 等鏡像進(jìn)行重新編譯和底包 OpenEuler 操作系統(tǒng)替換,并通過(guò)鏡像安全掃描。
從統(tǒng)一門(mén)戶,資源中心獲取用戶和業(yè)務(wù)系統(tǒng)等數(shù)據(jù),和 eBPF 可觀測(cè)數(shù)據(jù)進(jìn)行融合,做多租戶權(quán)限隔離。
將 deepflow-server 端元數(shù)據(jù)查詢存儲(chǔ)引擎 MySQL 進(jìn)行改造,使其能夠同時(shí)適配磐維數(shù)據(jù)庫(kù)和 Postgres。
將磐基自身 APM 數(shù)據(jù)轉(zhuǎn)換成 OpenTelemetry 標(biāo)準(zhǔn)的調(diào)用鏈數(shù)據(jù),并將 OpenTelemetry、eBPF 獲取到的追蹤數(shù)據(jù)進(jìn)行關(guān)聯(lián), 覆蓋一個(gè)應(yīng)用從業(yè)務(wù)代碼、系統(tǒng)函數(shù)、網(wǎng)絡(luò)接口的全棧調(diào)用路徑,實(shí)現(xiàn)真正的全鏈路分布式追蹤。
未來(lái)展望
通過(guò)一段時(shí)間的探索和實(shí)踐,磐基 PaaS 基于 eBPF 可觀測(cè)取得了一些階段性成果,后續(xù)將加速磐基 eBPF 應(yīng)用可觀測(cè)性平臺(tái)在各個(gè)地域上生產(chǎn),給業(yè)務(wù)系統(tǒng)上云提升信心。也將繼續(xù)在功能上快速迭代,大致計(jì)劃:
?進(jìn)一步融合 eBPF 可觀測(cè)性數(shù)據(jù)與指標(biāo)、日志及調(diào)用鏈追蹤數(shù)據(jù),構(gòu)建全棧一體化可觀測(cè)性平臺(tái)
?利用 WASM plugin 實(shí)現(xiàn) eBPF 內(nèi)核可編程,實(shí)現(xiàn)業(yè)務(wù)私有協(xié)議解析能力、私有字段數(shù)據(jù)脫敏能力
?利用 eBPF 采集進(jìn)程的性能剖析數(shù)據(jù),實(shí)現(xiàn) CPU、內(nèi)存全棧性能數(shù)據(jù)分析展示
?結(jié)合 AI 能力,提供根因分析、故障預(yù)測(cè)、大模型智能助手等功能
同時(shí)將進(jìn)一步加強(qiáng)與 DeepFlow 社區(qū)的合作,把磐基 eBPF 可觀測(cè)性在運(yùn)營(yíng)商行業(yè)的實(shí)際應(yīng)用經(jīng)驗(yàn)和成果分享給社區(qū),促進(jìn)開(kāi)源社區(qū)