作为中国移动智慧中台的统一技术底座,磐基 PaaS 平台提供了高效的集群管理和调度功能,满足多元化的业务场景需求。该平台携手 DeepFlow 借助 eBPF 技术,解决了 APM 落地困难和组件追踪断路中的挑战,实现了全栈且无侵扰的应用可观测性。磐基 PaaS 平台将 eBPF 数据与现有的可观测数据整合,提供了开箱即用的应用可观测性,全栈无盲点的调用链追踪等能力,大大提升了各业务系统云化的底气,并促进了平台本身的快速推广。未来,平台还针对运营商等特定行业场景,进一步深化可观测性数据的融合,并将创新性地拓展其 AI 能力,以增强市场竞争力。
背景介绍
磐基 PaaS 平台是中国移动智慧中台统一技术底座,为算力网络提供编排调度能力,提供分钟级的集群交付,实现 ARM/X86/混部架构集群统一管控,按需调度,支撑 B、O、M 三域用户交互、计算密集、数据密集、交易密集等多种类型的业务系统,具备万级 POD 承载能力,构建双栈网络,使在线业务稳定运行、平稳应对业务高峰。
磐基 PaaS 平台整合了磐基容器平台、磐舟 Devops、算力管控、磐维数据库、磐智 AI 平台及相关能力,以战略指导、统一规划、能力解耦、有机组装、需求驱动、场景匹配、敏捷迭代、低感升级为原则,全面布局云原生 PaaS 产品能力图谱,均衡发展。
磐基 PaaS 平台目前纳管 700+集群,4 万+节点,6 千多套组件,支撑省分公司包括 CRM 核心系统、BOSS 计费系统,IT 公司、各专业公司 IT 系统包括 AI、大数据系统等 600 多个业务系统上云。
目前磐基 PaaS 平台基于可观测性三大基石(指标+追踪+日志)的指导思想,已经使用不同的组件构建完成,利用 Prometheus 获取了云原生基础设施资源(Docker、K8s 自身)、中间件(Redis、Nginx)等指标数据,利用自研的 APM 实现了微服务在代码级别的调用链追踪,利用自研日志平台收集主机、Kubernetes、组件、应用实例的日志数据。但是在业务真正落地过程中,还是存在以下一些问题:
推广支撑力度不够
信任度不足:传统 APM 探针技术主要采用字节码注入技术,该技术虽无需业务系统研发人员关注代码实现,但对业务系统仍有代码侵入特性,进而占用业务系统资源,或影响业务性能。高并发生产系统往往因探针可能产生的影响,而质疑其收益性。
语言依赖强:字节码注入技术依赖业务系统代码语言和代码框架,导致传统 APM 技术需提供各种语言和框架的探针,才能满足企业级 PaaS 平台的可观测能力,因而在能力建设上的投入往往落后于实际生产需要。
迁移难度大:SkyWalking 等 APM 产品早在非容器化时代便已普及,云原生时代同步提供了容器化操作。当业务系统与 APM 产品深度融合后,变更观测产品的推动力便极其微弱。
观测能力覆盖不足
云设施观测能力不全:云原生全栈式可观测融合视图应包含云原生网络层能力,但传统探针技术在 CoreDNS、NodeLocal DNS 等 Kubernetes 网络层还存在盲区。
组件观测能力弱:可观测能力应尽可能地呈现业务系统及其相关的依赖组件、基础设施的全貌,但传统的探针技术因语言和框架的依赖性,在观测系统所依赖的组件内部的呈现能力还显得不足,往往只能到其表面请求入口,内部仍是黑盒状态。
基于以上痛点,磐基 PaaS 平台开展 ebpf 技术能力特性的研究,并与 deepflow 社区开展合作,启动基于 ebpf 技术的可观测平台能力建设,突破创新性的技术壁垒,致力于完善云原生场景下的应用观测图谱。
为什么引入 DeepFlow?
DeepFlow 基于 eBPF 实现了应用性能指标、分布式追踪、持续性能剖析等观测信号的零侵扰(Zero Code)采集,并结合智能标签(SmartEncoding)技术实现了所有观测信号的全栈(Full Stack)关联和高效存取。
零侵扰的方式支持主流应用协议的解析,包括 HTTP 1/2、HTTPS(Golang/openssl)、Dubbo、gRPC、ProtobufRPC、SOFARPC、MySQL、PostgreSQL、Redis、Kafka、MQTT、DNS,未来还将扩展更多应用协议的支持。提供了查看所有微服务应用的 RED(Request/Error/Delay)黄金指标,所有微服务之间的全景调用关系,以及网络协议栈 L4 层的吞吐、时延、建连异常、重传、零窗等指标。
利用 eBPF 和 Wasm 技术零侵扰实现分布式追踪,支持任意语言的应用程序,完整覆盖网关、服务网格、数据库、消息队列、DNS、网卡等各类基础设施,不留下任何追踪盲点。
依托 eBPF 技术获得的无插码零侵扰能力,DeepFlow 基本能做到独立应用部署,对应用开箱即用,对外提供的 Grafana Dashboard 也非常丰富。
磐基 eBPF 应用可观测性实践
DeepFlow 对外提供统一的 SQL 接口查询所有类型的观测数据,磐基平台可以非常方便的将 DeepFlow 数据与自身可观测平台集成,目前磐基可观测平台基于 eBPF 数据实现了网络流量拓扑展示、eBPF 调用链火焰图展示、告警阈值配置、并将 eBPF 数据与现有的指标、日志、调用链数据融合,以实现全栈一体化的可观测性平台。
流量拓扑展示,支持多种维度拓扑视图(应用 POD/NODE、网络 POD/NODE);支持跨集群流量调用展示;支持黄金指标(吞吐量、错误率、延迟等)进行告警阈值配置找到异常网络路径;支持告警阈值配置控制线条颜色,展示不同颜色拓扑线条,并实时告警通知;支持灵活的过滤条件(集群、分区、工作负载、协议、节点)。
调用链火焰图,展示单条请求的全栈调用关系,包括系统进程、主机、容器节点、POD 容器内的请求耗时情况。
deepflow-agent、deepflow-server、deepflow-app 等镜像进行重新编译和底包 OpenEuler 操作系统替换,并通过镜像安全扫描。
从统一门户,资源中心获取用户和业务系统等数据,和 eBPF 可观测数据进行融合,做多租户权限隔离。
将 deepflow-server 端元数据查询存储引擎 MySQL 进行改造,使其能够同时适配磐维数据库和 Postgres。
将磐基自身 APM 数据转换成 OpenTelemetry 标准的调用链数据,并将 OpenTelemetry、eBPF 获取到的追踪数据进行关联, 覆盖一个应用从业务代码、系统函数、网络接口的全栈调用路径,实现真正的全链路分布式追踪。
未来展望
通过一段时间的探索和实践,磐基 PaaS 基于 eBPF 可观测取得了一些阶段性成果,后续将加速磐基 eBPF 应用可观测性平台在各个地域上生产,给业务系统上云提升信心。也将继续在功能上快速迭代,大致计划:
进一步融合 eBPF 可观测性数据与指标、日志及调用链追踪数据,构建全栈一体化可观测性平台
利用 WASM plugin 实现 eBPF 内核可编程,实现业务私有协议解析能力、私有字段数据脱敏能力
利用 eBPF 采集进程的性能剖析数据,实现 CPU、内存全栈性能数据分析展示
结合 AI 能力,提供根因分析、故障预测、大模型智能助手等功能
同时将进一步加强与 DeepFlow 社区的合作,把磐基 eBPF 可观测性在运营商行业的实际应用经验和成果分享给社区,促进开源社区的共同发展。
评论