基于OpenTelemetry的可编程观测性数据收集器,支持指标、日志、链路追踪和持续性能分析
Grafana Agent 项目详细介绍
项目概述
Grafana Agent是一个基于OpenTelemetry Collector的分发版本,配置风格受Terraform启发。它被设计为灵活、高性能且与多种生态系统兼容的观测性数据收集器,包括Prometheus和OpenTelemetry。
⚠️ 重要提醒: Grafana Agent已被弃用,现在处于长期支持模式。建议迁移到基于Grafana Agent Flow构建的新版本Grafana Alloy。
核心特性
1. 供应商中立性
- 全兼容性:完全兼容Prometheus、OpenTelemetry和Grafana开源生态系统
- 多信号支持:收集指标、日志、链路追踪和持续性能分析数据
- 灵活部署:可在任意数量的机器上部署,处理数百万活跃序列和TB级日志
2. 组件化架构
Grafana Agent基于组件构建。组件被连接在一起,形成可编程的观测性管道,用于遥测数据的收集、处理和传输。
3. 数据收集与传输
Grafana Agent可以收集、转换并发送数据到:
- Prometheus生态系统
- OpenTelemetry生态系统
- Grafana开源生态系统(包括Loki、Grafana、Tempo、Mimir、Pyroscope)
4. 企业级特性
- 可扩展性:支持大规模部署,处理数百万活跃序列
- 战斗验证:扩展了Prometheus和OpenTelemetry Collector项目经过实战验证的代码
- 强大功能:支持编写可编程管道,并提供内置UI进行调试
- 开箱即用:与MySQL、Kubernetes、Apache等系统集成
技术架构
Flow模式
该页面主要关注"Flow模式",这是Grafana Agent受Terraform启发的修订版本。Flow模式提供了更直观的配置方式,使用户能够:
- 轻松设置和检查配置
- 快速迭代遥测管道
- 降低学习曲线
配置示例
// 发现Kubernetes pods以收集指标
discovery.kubernetes "pods" {
role = "pod"
}
// 从Kubernetes pods收集指标
prometheus.scrape "default" {
targets = discovery.kubernetes.pods.targets
forward_to = [prometheus.remote_write.default.receiver]
}
// 从磁盘获取API密钥
local.file "apikey" {
filename = "/var/data/my-api-key.txt"
is_secret = true
}
// 发送指标到Prometheus remote_write端点
prometheus.remote_write "default" {
endpoint {
url = "http://localhost:9009/api/prom/push"
basic_auth {
username = "MY_USERNAME"
password = local.file.apikey.content
}
}
}
项目状态与迁移
弃用说明
Grafana Alloy是我们OTel收集器分发版的新名称。Grafana Agent已被弃用,将在2025年10月31日之前提供长期支持(LTS)。Grafana Agent将在2025年11月1日达到生命周期结束(EOL)。
迁移建议
项目维护者强烈建议用户迁移到Grafana Alloy,原因包括:
- 更好的性能和稳定性
- 更丰富的企业级功能
- 持续的功能更新和支持
安装与部署
支持平台
- Linux、macOS、Windows
- Docker容器
- Kubernetes集群
- 云平台(AWS、GCP、Azure等)
快速开始
项目提供了完整的文档和示例:
- 详细的安装指南
- 入门教程
- 组件参考文档
- Docker Compose示例环境
典型使用场景
1. 大规模监控
适用于需要处理数百万活跃序列的大规模Prometheus部署
2. 多信号收集
统一收集指标、日志、链路追踪和性能分析数据
3. 混合云环境
在多云和混合云环境中提供一致的观测性解决方案
4. DevOps集成
与CI/CD管道和GitOps工作流程深度集成
总结
Grafana Agent作为一个成熟的观测性数据收集器,为用户提供了强大的遥测数据收集、处理和传输能力。虽然项目已进入维护模式,但其核心理念和架构为新一代的Grafana Alloy奠定了坚实基础。对于现有用户,建议根据官方指南逐步迁移到Grafana Alloy以获得更好的性能和持续支持。