使用 Grafana Alloy 设置 eBPF 性能分析
eBPF 是一项嵌入到 Linux 内核中的先进技术。它是增强型 伯克利数据包过滤器 的缩写,彻底改变了在内核空间内安全运行沙盒代码的能力。这项技术适用于多种用例,例如网络、安全和性能监控,而无需更改内核代码或加载额外的模块。

使用 eBPF 进行持续性能分析的优势和权衡
在应用程序性能分析方面,eBPF 具有高效率和极小的性能开销。eBPF 能够在实时生产系统中动态插入强大的监控代码。通过利用 eBPF,开发人员可以深入了解应用程序行为、跟踪资源使用情况并检测瓶颈,这是传统性能分析工具无法比拟的。eBPF 的低开销和细粒度数据收集使其成为性能敏感环境中持续实时性能分析的理想选择。
但是,eBPF 也有一些局限性,使其不适合某些用例
- 它不适用于分析非受支持语言编写的应用程序。
- 它不能用于分析不在 Linux 上运行的应用程序。
- 它不支持所有性能分析类型,例如内存和争用/锁性能分析。
- eBPF 需要 root 访问主机,这在某些环境中可能是一个问题。
支持的语言
此 eBPF 性能分析器仅收集 CPU 性能分析。通常,支持本机编译语言,如 C/C++、Go 和 Rust。有关其他要求,请参阅未知符号故障排除。
Python 是唯一受支持的高级语言,前提是 python_enabled=true
。Java、Ruby、PHP 和 JavaScript 等其他高级语言需要额外的工作才能正确显示这些语言中方法的堆栈跟踪。目前,这些语言的 CPU 使用率被报告为属于运行时的 方法。
使用 Alloy 的 eBPF
Grafana Alloy 是一款轻量级的一体化收集器,可以收集、转换和传输可观测性数据。对于性能分析,您可以配置 Alloy 以收集 eBPF 性能分析并将它们发送到 Pyroscope。
本节包含有关安装和配置 Alloy 以收集 eBPF 性能分析的说明。有关 Alloy 本身的更多信息,请参阅 Alloy 文档。