开启 eBPF 可观测性之前你需要了解的那些事

云杉 世纪

2024年3月4日

产品资讯

DeepFlow 开源以来,社区反馈活跃,eBPF 相关问题主要集中于安全、性能影响、内核适配等方面。本次议题分享 DeepFlow 在落地 eBPF 过程中遇到的问题和解决办法;介绍 DeepFlow 针对 eBPF性能开销问题的持续测试机制、测试数据、以及所做的优化;并分享 DeepFlow 落地 eBPF 过程中踩过的一些坑。
CORE – 浅析 BPF 程序的可移植性问题及解决方案
BPF 程序的可移植性意味着什么?什么是 BPF CO-RE ?我们将了解编写可以跨多个内核版本工作的 BPF 程序的挑战是什么,以及 BPF CO-RE 如何帮助解决这个问题。通过一组实例,我们将看到如何在真实世界中解决 BPF 程序的可移植性问题。
QA环节
Q1|针对 3.10 内核,CentOS 7 系统,eBPF 有没有比较好的解决方法?
A:CentOS 7 是非常老的系统了,如果可能,建议迁移到 OpenCloudOS 8/9,社区可以提供技术支持,参考
https://mp.weixin.qq.com/s/mOS0XBWxtNhuVJ35qg_M_Q
在比较老的系统上,可观测性问题可以考虑使用 Kprobe,推荐使用工具
https://github.com/OpenCloudOS/perf-prof
我本人并没有 CentOS 7 的实践经验,在 BCC 社区,部分用户反馈过可以使用 BCC 工具(这可能也需要升级内核)
Q1|eBPF Agent 性能占用怎么样,DeepFlow 有压测数据吗?
A:我们通过自动化测试跟踪 DeepFlow 迭代过程中的性能影响变化,并公开了结果
https://ce-demo.deepflow.yunshan.net/d/ydfUoKB4z/agent-performance-analysis
目前 deepflow-agent 性能占用主要来自于原始应用数据的采集、应用协议的解析,其中 eBPF uprobe 的性能消耗会相对较高。DeepFlow 的自动化测试也会持续迭代,覆盖 agent 和 server 更多场景下的资源消耗情况,并公开结果。
Q2|eBPF 和 AF_PACKET 拿到的数据有什么区别吗?能不能砍掉一边?
A:eBPF 的数据 Tag 更丰富一些,比如会有 eBPF 采集到的进程名、PID 等信息,能不能砍掉其中一边我们建议是看下你的实际需求。如果不需要排查网络的问题,在有 eBPF 数据的情况下,是可以关掉 cBPF 采集的 l7_flow_log 的;如果不需要 eBPF 或其中的 uprobe 数据,也有开关可单独关掉。
Q3|大压力会不会反而造成过载?
A:PPT 中的数据可以回答这个问题,延迟显著增长均是发生在 CPU 资源濒临耗尽的时候,在CPU 资源足够时,引入的开销增长还是很稳定的、可预期的。资源开销和可观测性需要在实际落地中做好取舍,并对资源消耗做好监控。
Q4|如果要还原报文内容,这个从内核态到用户态的传递,有没有比较好的解决办法?
A:DeepFlow 企业版支持存储原始报文内容,并下载为 PCAP 文件。目前社区版没有开放此能力。
Q5| Java、Erlang 等带虚拟机语言的 SSL 怎么解决?
A:如果应用使用了 openssl 库是可以支持的。但如果应用使用的是语言自己的 SSL 库,目前 eBPF 没有很好的办法来采集明文数据。

Related Posts

根因分析假 running 真故障 记一次电力行业的 SRE 实践

云杉 世纪

2024年3月8日

产品资讯

用户:某省级电网企业 挑战 定界困难:当发生故障,业务部门和网络部门互相推诿,而不是解决问题; 监控颗粒度不足 […]

Read More

云杉网络 DeepFlow 联合 OpenCloudOS 完成技术兼容互认证

云杉 世纪

2024年3月6日

产品资讯

北京云杉世纪网络科技有限公司(以下简称:云杉网络)的云原生可观测性产品 DeepFlow 与 OpenClou […]

Read More