【华为云Stack】【大架光临】第22期:华为云Stack基于eBPF的无侵入可观测实践

举报
yd_218767484 发表于 2025/07/08 17:44:35 2025/07/08
【摘要】 由于云平台固有的复杂性、动态扩缩和分布式特征,要确保系统的高效运维、业务连续性和用户体验,实施云平台的可观测方案成为各大云平台提供商的必然选择。本文描述华为云Stack基于eBPF技术的无侵入可观测实践。

1 背景

在云原生与混合云架构成为主流的今天,可观测性已成为保障系统稳定性和业务连续性的核心支柱。随着微服务、容器化和无服务器技术的普及,传统监控手段难以应对动态分布式环境的复杂性。客户不仅需要实时感知应用性能、资源利用率和故障根因,更期望通过指标(Metrics)、追踪(Traces)和日志(Logs)的融合分析实现主动运维、成本优化及体验提升。可观测性平台能帮助企业打破数据孤岛,快速定位跨云服务链路的瓶颈,将运维响应从“事后补救”转向“事前预测”,直接支撑数字化转型中的敏捷迭代与SLA承诺兑现。

华为云Stack(简称HCS)管控面和数据面要实施可观测方案,面临如下问题与挑战:

  • 非侵入&可实施:HCS有数千个现网客户,可观测方案需要与被观测的管控组件或业务网元解耦,可单独部署,侵入式方案要求同时升级管理或业务网元,难以在现网落地;
  • 业务无感:观测方案不能对被观测业务本身性能、可靠性有影响;

  • 观测需全面:观测方案不仅能观测到应用层流指标,还要观测TCP/UDP链路丢包、重传、Reset等指标,以便快速进行问题定界/定位;

  • 网络极其复杂:云平台管控面和数据面视角下,物理网络、虚拟网络、K8S集群网络并存,数据流向复杂多变,治理难度大;NAT场景、L7负载均衡等带来流跟踪割裂问题;

  • HCS版本多:经过多年发展,现网有10+版本,多个OS和Linux内核版本,可观测方案要有良好的兼容性;

  • 大规模&高并发:HCS单region虚机规模庞大,存在APIGateway、ELB、NATGW等高并发服务,产生大量观测数据,对观测本身的开销是一个很大的挑战。


2 基于eBPF的无侵入可观测技术

传统的可观测技术存在着侵入式、观测不完整、技术栈不统一等诸多问题。基于eBPF的可观测方案,由于其无侵入、高性能、安全的特点,毫无疑问使它成为可观测产品提供商的技术根基。eBPF不仅仅能提供4~7层流量的采集能力,还可以构建全链路拓扑服务,孵化性能监控平台,增强云平台运维问题根因分析能力等。

基于eBPF的可观测方案与传统技术方案对比:


2.png


eBPF可观测方案技术特征:

  • 零代码修改:传统技术方案提供各类编程语言的SDK,被观测业务需要基于SDK在业务代码中插装实现数据采集,侵入式的采集方式导致落地困难。而基于eBPF的可观测技术,通过Linux内核的插装能力和uProbe技术实现无侵入插装,与编程语言无关,且无需修改业务修改代码;
  • 零侵扰部署:eBPF可观测技术方案不仅在开发态无感(零代码修改),运行态也不需要业务感知,部署后即启用,无需重启业务进程;
  • 高性能&低开销:通过JIT编译和内核态执行减少用户态-内核态上下文切换,实现底层数据高效采集;
  • 安全稳定:内置验证器(Verifier)确保程序不会导致内核崩溃或安全漏洞;沙盒机制隔离eBPF程序运行环境,避免非法内存访问。


3 华为云Stack可观测实践

3.1 整体方案

华为云Stack采用基于eBPF的Gala-Gopher开源组件,实现无侵入链路和指标数据采集,结合NAT穿越能力、Sermant探针、CO-RE等技术实现业界领先的可观测方案。该方案通过eBPF采集的数据自动构建服务/进程间的依赖关系,实现HCS管控面和数据面服务间依赖关系和通信矩阵的快速治理;结合指标数据快速感知潜在或已发生的问题,提升告警根因分析准确度,实现管控面和数据面高效运维,例如通过对ELB应用流进行实时监控,实现ELB问题的快速定界,并辅助快速定位。

1_zh-cn_image_0000002365157381.png

Agent侧无侵入数据采集:

  1. 采用Gala-Gopher,基于eBPF实现无侵入数据采集;

  2. 在linux内核挂载TC/Socket/Syscall/IPVS/Netfilter等eBPF探针,实现经过内核协议栈的网络链路和网络指标采集,开发语言无关,普适性强

  3. 通过eBPF uProbe实现加密场景、DPDK等用户空间网络流和指标采集;

  4. 通过Sermant补充JAVA应用场景应用流和指标采集。

可观测应用:

  1. 基于链路的拓扑服务:通过链路数据构建微服务/进程间的依赖拓扑,精准还原告警传播链,辅助进行告警根因分析,辅助通信矩阵校验;

  2. 基于指标的网络诊断:通过指标数据监控网络链路质量,进行精准的网络质量实时诊断,例如ELB应用流监控。

注:Gala-Gopher是openEuler社区开源的一款采集组件是一款结合eBPF、Java agent等非侵入可观测技术的观测平台,探针是Gala-Gopher用于观测和采集数据的主要工具,通过探针式架构Gala-Gopher可以轻松实现增加、减少探针。更多内容可参考 https://gitee.com/openeuler/gala-gopher

3.2 NAT/代理场景链路还原

云网络场景存在着大量K8S集群service访问、L4LB、L7LB、NATGW、APIGW等NAT场景,客户端感知的目标IP不一定是真实的服务端IP,而服务端感知的源IP也不一定是真实的客户端IP,因而需要通过特别的处理来还原服务间的访问关系,以便准确地确定服务间的依赖关系。


222.png



华为云Stack通过TCP Options注入, 实现各类容器网络、NAT网关、代理的穿越,真实还原数据链路;

  • ≥5.10内核时,采用eBPF Sockops随包注入TCP Options;

  • <5.10内核时,采用eBPF TC Clone数据包,并注入TCP Optons;

  • 七层代理场景,通过TOA识别和注入实现转发跟踪。

3.3 eBPF采集短板及补充方案

面对加密场景和Java这类解释执行的应用程序,eBPF需要通过uProbe来实现数据的采集,但其存在场景覆盖不全、对业务影响大等局限性。例如:

  • JSSE提供两种SSL加解密库函数,其中SSLEngine仅提供加解密“工具”,在JSSE中并不维护Socket本身信息,即便使用uProbe也无法通过eBPF获取链路信息;

  • Java应用场景下gRPC、Dubbo3.0等多种L7应用层指标采集受限、且uProbe程序的执行需要陷入内核,增加业务处理时延…

HCS可观测方案引入Sermant解决eBPF在Java场景下的能力不足问题。Sermant是由华为云开源,在CNCF孵化的基于Java字节码增强技术的云原生无代理服务网格,可用于的Java程序数据采集,详细参考https://sermant.io/zh/。

在Gala-Gopher框架下扩展Sermant探针:

1_zh-cn_image_0000002331239074.png


3.4 CO-RE/chroot技术提升OS兼容性

eBPF程序依赖于Linux内核的支持,不同的内核版本eBPF能力不同,同时采集组件用户态程序也依赖libbpf/glibc等组件,这些组件对不同OS版本的支持也不统一,因而eBPF无侵入采集对OS的兼容性是一大挑战。

HCS通过eBPF的CO-RE技术实现“Compile once, run everywhere”;通过chroot实现轻量容器,隔离Agent运行环境,提升对OS的兼容能力:

111.png

① CO-RE技术 ② Chroot技术

3.5 极致性能

考虑成本、可靠性等因素,在保证数据完整有效的情况下,数据采集、处理、存储的资源开销越小越好,而且需要对被观测业务无影响。HCS通过按需采集、自适应采样率、压缩传输、标签编码存储等手段,尽可能降低资源开销和对业务的影响:


1_zh-cn_image_0000002365157385.png

优化效果:

  • 采集数据存储空间需求降低到1/3
  • 采集数据上传的传输带宽降低到1/15
  • Agent对被观测业务时延、吞吐等无影响;
  • Agent极小基础开销:CPU单核占用<1%, 内存占用<50M;
  • 网关类大流量观测场景Agent 占用管理面资源,CPU开销是业务所占CPU的10%以内。


4 技术方案效果

方案第一阶段实施效果:

  1. HCS管控面核心云服务拓扑准确率达成99%

  2. HCS云服务通信矩阵测试效率提升: 1周->1天/云服务

  3. ELB应用流跟踪,提升问题定位/解决效率:

1_zh-cn_image_0000002331079202.png


序号

问题

原因

eBPF实现ELB应用流采集

客户通过7层ELB压测,三万条有几十条报错

【后端业务问题】

后端超时配置错误导致回复Reset报文。

取代抓包,偶现故障精准定位:

eBPF可以采集到Socket数据中的Reset报文,拓扑上指标可直接体现后端业务异常,同时可生成系统告警。

APIC 服务异常,客户反馈影响某实时交易的业务

【ELB数据面问题】Nginx进程单核卡死

关键指标波动回溯查询:

采集进程CPU占用率可知Nginx进程异常;

Nginx和后端服务的数据量减小,时延增大

客户某业务经过ELB达不到性能要求

【ELB性能问题】

后端服务器抓包判断ELB负载合理,最终原因是服务经过云外带宽受限

流量分布快速理清:

拓扑可以直接体现Nginx和后端服务器的连接情况和数据量,判断负载均衡是否合理。


应用流拓扑图+指标监控


333.png


应用流直方图指标监控:

1_zh-cn_image_0000002365077501.png

5 总结

通过eBPF采集的数据自动构建服务/进程间的依赖关系,实现HCS管控面和数据面服务间依赖关系和通信矩阵的快速治理;结合指标数据快速感知潜在或已发生的问题,提升告警根因分析准确度,实现管控面和ELB应用流的高效运维。由于eBPF方案在无侵入、代码无关、全栈观测的特点,使其成为HCS这类政企云平台商业软件的更优选择。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。