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

使用 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 文档。