Grafana Agent
注意
Grafana Alloy 是我们 OTel collector 分发版的新名称。Grafana Agent 已被弃用,并处于长期支持 (LTS) 阶段,直到 2025 年 10 月 31 日。Grafana Agent 将于 2025 年 11 月 1 日到达生命周期结束 (EOL)。阅读更多关于我们为什么推荐迁移到 Grafana Alloy 的信息。
Grafana Agent 是一个遥测数据收集器,用于将指标、日志和追踪数据发送到规范的 Grafana 可观测性堆栈。
注意
Grafana Alloy 提供了工具,可将您的 Agent Static 或 Flow 配置文件转换为 Alloy 可以使用的格式。
更多信息,请参阅迁移到 Alloy。
它通常用作追踪流水线,负责从应用程序卸载追踪数据并将其转发到存储后端。Grafana Agent 追踪堆栈是使用 OpenTelemetry 构建的。
Grafana Agent 支持接收多种格式的追踪数据:OTLP (OpenTelemetry)、Jaeger、Zipkin 和 OpenCensus。
除了接收和导出追踪数据外,Grafana Agent 还包含许多功能,这些功能使您的分布式追踪系统更加健壮,并充分利用流水线中处理的所有数据。
Agent 模式
Grafana Agent 有两种不同变体:
Grafana Agent Flow 配置文件使用 River 编写。Static 配置文件使用 YAML 编写。本文档中的示例适用于 Flow 模式。
更多信息,请参阅 Grafana Agent 简介。
架构
Grafana Agent 可以配置为运行一组追踪流水线,从您的应用程序收集数据并将其写入 Tempo。流水线是使用 OpenTelemetry 构建的,由接收器
、处理器
和导出器
组成。其架构类似于 OTel Collector 的设计。请参阅配置参考获取所有可用的配置选项。
这允许您配置多个不同的追踪流水线,每个流水线收集单独的 Span 并将其发送到不同的后端。
接收追踪
Grafana Agent 支持多种摄取接收器:OTLP (OpenTelemetry)、Jaeger、Zipkin、OpenCensus 和 Kafka。
每个追踪流水线都可以配置为接收所有这些格式的追踪数据。到达流水线的追踪数据将流经该流水线中定义的接收器/处理器/导出器。
流水线处理
Grafana Agent 在处理流经流水线的追踪数据时,使分布式追踪系统更加可靠,并利用这些数据用于其他目的,例如追踪发现、基于尾部的采样和生成指标。
批量处理
Agent 支持追踪的批量处理。批量处理有助于更好地压缩数据,减少出站连接数,是一种推荐的最佳实践。要配置它,请参阅配置参考中的 batch
块。
属性操作
Grafana Agent 允许对通过此 Agent 的 Span 上的属性进行通用操作。一个常见的用例可能是添加环境变量或集群变量。要配置它,请参阅配置参考中的 attributes
块。
使用 Prometheus 服务发现附加元数据
Prometheus 服务发现机制使您能够将与指标相同的元数据附加到您的追踪数据上。例如,对于 Kubernetes 用户,这意味着您可以动态地附加发送 Span 的命名空间、Pod 和容器名称的元数据。
traces:
...
scrape_configs:
- bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
job_name: kubernetes-pods
kubernetes_sd_configs:
- role: pod
relabel_configs:
- source_labels: [__meta_kubernetes_namespace]
target_label: namespace
- source_labels: [__meta_kubernetes_pod_name]
target_label: pod
- source_labels: [__meta_kubernetes_pod_container_name]
target_label: container
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
insecure_skip_verify: false
然而,此功能不仅对 Kubernetes 用户有用。这里支持 Prometheus 的各种服务发现机制。这意味着您可以在指标、日志和追踪之间使用相同的 scrape_configs
来获取相同的标签集,并在从指标、日志和追踪切换时轻松地在可观测性数据之间转换。
请参阅Agent 配置参考中的 scrape_configs
块。
通过自动日志记录进行追踪发现
自动日志记录写入格式良好的日志行,有助于追踪发现。
要更深入地了解此功能,请访问自动日志记录。
基于尾部的采样
Agent 为分布式追踪系统和多实例 Agent 部署实现了基于尾部的采样。通过此功能,采样决策可以基于追踪数据,而不是完全依赖概率方法。
有关详细说明,请参阅基于尾部的采样。
更多信息,请参阅博客文章:Grafana Tempo 和 Grafana Agent 追踪采样介绍。
从 Span 生成指标
Agent 可以利用流经流水线的 Span 数据来生成 Prometheus 指标。
请参阅Span 指标,获取此功能的更详细解释。
服务图指标
服务图指标表示分布式系统中服务之间的关系。
此服务图处理器通过分析追踪数据构建服务地图,目标是找到边。边是具有父子关系的 Span,表示两个服务之间的跳跃,例如请求。请求的数量及其持续时间被记录为指标,用于表示服务图。
要阅读更多关于此处理器的信息,请访问其章节。
导出 Span
Grafana Agent 可以为每个追踪流水线将追踪数据导出到多个不同的后端。导出功能是使用 OpenTelemetry Collector 的OTLP 导出器构建的。Agent 支持以 OTLP 格式导出追踪数据。
除了端点和身份验证外,导出器还提供故障重试机制,并为瞬时故障(例如网络问题)实现队列缓冲机制。
要查看所有可用选项,请参阅Agent 配置参考中的 remote_write
块。