使用 Grafana Agent 通过 eBPF 进行性能分析
eBPF 是一种嵌入到 Linux 内核中的高级技术。它代表增强型 伯克利数据包过滤器,彻底改变了在内核空间内安全运行沙箱代码的能力。这项技术可用于多种用例,例如网络、安全和性能监控,而无需更改内核代码或加载其他模块。
使用 eBPF 进行持续性能分析的优势和权衡
在应用程序性能分析方面,eBPF 因其高效率和最小的性能开销而备受瞩目。eBPF 能够将强大的监控代码动态插入到实时生产系统中。通过利用 eBPF,开发人员可以深入了解应用程序行为,跟踪资源使用情况,并以传统性能分析工具无法比拟的方式检测瓶颈。eBPF 的低开销和细粒度数据收集使其成为性能敏感环境中进行持续实时性能分析的理想选择。
但是,eBPF 有一些局限性,使其不适合某些用例。
- 它不适合对未用支持语言编写的应用程序进行性能分析。
- 它不能用于对未在 Linux 上运行的应用程序进行性能分析。
- 它不支持所有配置文件类型,例如内存和争用/锁定性能分析。
- eBPF 需要主机上的 root 访问权限,这在某些环境中可能是一个问题。
支持的语言
此 eBPF 性能分析器仅收集 CPU 配置文件。通常,支持像 C/C++、Go 和 Rust 这样的原生编译语言。有关其他要求,请参阅 未知符号故障排除。
只要python_enabled=true
,Python 是唯一支持的高级语言。其他高级语言,例如 Java、Ruby、PHP 和 JavaScript,需要额外的工作才能正确显示这些语言中方法的堆栈跟踪。目前,这些语言的 CPU 使用情况被报告为属于运行时的 方法。
通过 Grafana Agent 使用 eBPF
注意
Grafana Alloy 是我们分发的 OTel 收集器的名称。Grafana Agent 已弃用,并处于长期支持 (LTS) 状态,直至 2025 年 10 月 31 日。Grafana Agent 将于 2025 年 11 月 1 日达到使用寿命终止 (EOL)。阅读更多关于我们建议迁移到Grafana Alloy 的原因。
Grafana Agent 是一款轻量级的一体化代理,可以收集、转换和发送可观测性数据。对于性能分析,可以配置 Grafana Agent 收集 eBPF 性能分析数据并将其发送到 Pyroscope。
本节包含有关安装和配置 Grafana Agent 以收集 eBPF 性能分析数据的说明。有关 Grafana Agent 本身的更多信息,请参阅Grafana Agent 文档。