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