Grafana Alloy 和 Grafana Agent
您可以使用 Grafana Alloy 或 Grafana Agent 收集器从您的应用程序发送数据。这两个收集器都支持使用 eBPF、Java 和 Golang 以拉取模式进行性能分析。
Grafana Alloy 是 OpenTelemetry (OTel) 收集器的供应商中立分发版。Alloy 以独特的方式将社区中最好的开源可观察性信号结合在一起。Grafana Alloy 使用用 River 编写的配置文件。
建议使用 Alloy 而不是 Grafana Agent 作为收集器。新安装应该使用 Alloy。
注意
Grafana Alloy 是我们对 OTel 收集器分发版的新名称。Grafana Agent 已弃用,并将在 2025 年 10 月 31 日之前提供长期支持 (LTS)。Grafana Agent 将于 2025 年 11 月 1 日达到生命周期结束 (EOL)。阅读更多关于我们为什么建议迁移到 Grafana Alloy 的信息。
Grafana Agent 是一个用于收集和转发性能分析数据的强大工具。随着对 eBPF 支持的引入以及对 Golang 拉取模式的持续支持,Grafana Agent 的功能变得更加多样化。本文档概述了这两种性能分析模式,并指导用户进行设置。
注意
有关支持的配置文件类型的列表,请参阅 可用的性能分析类型。
eBPF 性能分析
eBPF(扩展伯克利数据包过滤器)是一种现代 Linux 内核技术,它允许安全、高效且可自定义地跟踪系统和应用程序行为,而无需修改源代码或重新启动进程。
eBPF 性能分析的优势
- 低开销:eBPF 以最小的性能影响收集数据。
- 多功能:eBPF 可以跟踪系统调用、网络数据包,甚至用户空间应用程序逻辑。
- 动态:无需重新编译或重新启动应用程序。eBPF 允许实时跟踪。
设置 eBPF 性能分析
- 确保您的系统运行 Linux 内核版本 4.9 或更高版本。
- 在目标机器或容器上安装收集器,例如 Grafana Alloy(首选)或 Grafana Agent(旧版)。
- 配置 Agent 以使用 eBPF 进行性能分析。有关详细步骤,请参阅 eBPF 文档。
- 收集器收集 eBPF 配置文件并将它们发送到 Pyroscope 服务器。
支持的语言
此 eBPF 性能分析器仅收集 CPU 配置文件。通常,支持诸如 C/C++、Go 和 Rust 之类的原生编译语言。有关其他要求,请参阅 疑难解答未知符号。
只要python_enabled=true
,Python 是唯一支持的高级语言。其他高级语言,如 Java、Ruby、PHP 和 JavaScript,需要额外的工作才能正确显示这些语言中方法的堆栈跟踪。目前,这些语言的 CPU 使用情况被报告为属于运行时的函数。
Golang 拉取模式下的性能分析
在拉取模式下,采集器会定期从 Golang 应用程序中检索性能分析数据,特别针对 pprof 端点。
Golang 拉取模式下性能分析的优势
- 非侵入式:无需修改应用程序的源代码。
- 集中式性能分析:适用于具有多个 Golang 应用程序或微服务的环境。
- 自动:代理处理性能分析数据的拉取和发送,只需最少的配置。
设置 Golang 拉取模式下的性能分析
- 确保您的 Golang 应用程序公开了 pprof 端点。
- 在应用程序运行的同一台机器或容器上安装和配置采集器(Alloy 或 Agent)。
- 确保采集器设置为拉取模式并针对正确的 pprof 端点。有关分步说明,请访问Go(拉取模式)文档。
- 采集器查询 Golang 应用程序的 pprof 端点,收集性能分析数据,并将其转发到 Pyroscope 服务器。
后续步骤
无论使用 eBPF 进行多功能系统和应用程序性能分析,还是依赖 Golang 内置的 pprof 端点在拉取模式下工作,Grafana Agent 和 Grafana Alloy 采集器都提供了简化的流程来收集必要的性能分析数据。选择最适合您的应用程序和基础设施需求的方法。