菜单
开源 RSS

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 性能分析

  1. 确保您的系统运行 Linux 内核版本 4.9 或更高版本。
  2. 在目标机器或容器上安装收集器,例如 Grafana Alloy(首选)或 Grafana Agent(旧版)。
  3. 配置 Agent 以使用 eBPF 进行性能分析。有关详细步骤,请参阅 eBPF 文档
  4. 收集器收集 eBPF 配置文件并将它们发送到 Pyroscope 服务器。

支持的语言

此 eBPF 性能分析器仅收集 CPU 配置文件。通常,支持诸如 C/C++、Go 和 Rust 之类的原生编译语言。有关其他要求,请参阅 疑难解答未知符号

只要python_enabled=true,Python 是唯一支持的高级语言。其他高级语言,如 Java、Ruby、PHP 和 JavaScript,需要额外的工作才能正确显示这些语言中方法的堆栈跟踪。目前,这些语言的 CPU 使用情况被报告为属于运行时的函数。

Golang 拉取模式下的性能分析

在拉取模式下,采集器会定期从 Golang 应用程序中检索性能分析数据,特别针对 pprof 端点。

Golang 拉取模式下性能分析的优势

  • 非侵入式:无需修改应用程序的源代码。
  • 集中式性能分析:适用于具有多个 Golang 应用程序或微服务的环境。
  • 自动:代理处理性能分析数据的拉取和发送,只需最少的配置。

设置 Golang 拉取模式下的性能分析

  1. 确保您的 Golang 应用程序公开了 pprof 端点。
  2. 在应用程序运行的同一台机器或容器上安装和配置采集器(Alloy 或 Agent)。
  3. 确保采集器设置为拉取模式并针对正确的 pprof 端点。有关分步说明,请访问Go(拉取模式)文档。
  4. 采集器查询 Golang 应用程序的 pprof 端点,收集性能分析数据,并将其转发到 Pyroscope 服务器。

后续步骤

无论使用 eBPF 进行多功能系统和应用程序性能分析,还是依赖 Golang 内置的 pprof 端点在拉取模式下工作,Grafana Agent 和 Grafana Alloy 采集器都提供了简化的流程来收集必要的性能分析数据。选择最适合您的应用程序和基础设施需求的方法。