当告警响起,OpenSRE 如何自动从 Grafana 拉取日志、指标和链路数据,并在你打开电脑之前完成根因分析?这篇文章带你从头搭建 OpenSRE ↔ Grafana 的连接。
先认识两位主角
OpenSRE
OpenSRE 是 Tracer Cloud 开源的 AI SRE Agent 框架。它的核心思路很简单:把告警调查这件事交给 AI agent。
当生产环境告警触发时,OpenSRE 会自动:
- 接收告警 — 从 Prometheus Alertmanager、Datadog、Grafana Alerting 等渠道接入
- 收集上下文 — 拉取关联日志、指标曲线、调用链、最近部署记录
- 多假设并行推理 — 自动形成多个根因假设并逐一验证
- 输出报告 — 给出结构化的根因分析 + 建议操作,推送到 Slack / PagerDuty
一句话总结:你起床看到的是结论,不是一堆告警噪音。
Grafana(在 OpenSRE 语境下)
在 OpenSRE 的集成体系里,Grafana 不只是那个画仪表盘的工具,而是作为可观测性数据中枢被接入。OpenSRE 通过 Grafana 的 API 间接访问其背后的三大数据引擎:
| 组件 | 用途 | 对 OpenSRE 的意义 |
|---|---|---|
| Loki | 日志聚合 | AI agent 检索异常时间窗口内的日志,快速定位报错堆栈 |
| Mimir | 指标存储 | 查询 CPU / 内存 / QPS 等时序指标,判断是否有资源瓶颈 |
| Tempo | 分布式追踪 | 追踪请求在微服务间的调用链路,找到第一个出错的节点 |
OpenSRE 目前支持 60+ 工具集成,Grafana 是其中最重要的观测性接入点之一。
第一步:在 Grafana 创建 Service Account Token
OpenSRE 通过 Grafana 的 HTTP API 来查询 Loki / Mimir / Tempo 的数据。因此,你需要在 Grafana 里创建一个 Service Account 并生成令牌。
⚠️ 注意:Service Account 和 API Key 不同。Grafana 已经将 API Key 标记为过时,推荐使用 Service Account Token。
操作步骤
1. 进入 Service Account 管理页面
登录 Grafana → 左侧菜单点击 Administration → Users and access → Service accounts。
2. 新建 Service Account
点击 Add service account,填写 Display name(例如 opensre-agent),点击 Create。
命名建议:使用一致的命名规范,如
<应用>-<环境>,方便后续管理多实例。
3. 生成 Token
进入刚创建的 Service Account → 点击 Add service account token → 填写 Token 名称(如 opensre-read-token)→ 可选设置过期时间 → 点击 Generate token。
4. 复制并保存 Token
Token 只显示这一次,格式类似 glsa_xxxxxxxxxxxxxxxxxxxxxxxxxxxx。复制后妥善保管。
5. 分配权限
为新创建的 Service Account 分配角色。至少需要:
- 对 Loki / Mimir / Tempo 数据源的 查询权限(
datasources:query) - 对相关 Dashboard 的 读取权限(
datasources:read)
如果使用 Grafana Enterprise,还可以借助 RBAC 实现更精细的权限控制。最简方案是直接赋予 Viewer 角色。
第二步:在 OpenSRE 中配置 Grafana 集成
OpenSRE 的配置有两种路径:**Web UI(企业版)**和 CLI 环境变量,选其一即可。
方式一:Web UI 配置(推荐,适用于团队使用)
- 登录 app.tracer.cloud
- 进入 Integrations → Grafana
- 填写以下信息:
| 字段 | 说明 | 示例 |
|---|---|---|
| Name | 自定义名称,用于区分多实例 | prod-grafana |
| Endpoint URL | Grafana 实例地址 | https://grafana.your-company.com |
| API Key | 上一步生成的 Service Account Token | glsa_xxxx... |
- 点击 Save
配置完成后,同一组织下的所有成员都能使用这个集成。
方式二:CLI 环境变量(适用于本地开发 / 单机部署)
如果用的是 opensre CLI 二进制文件,通过环境变量配置:
export GRAFANA_INSTANCE_URL="https://grafana.your-company.com" |
运行 opensre integrations verify 验证连接是否正常:
opensre integrations verify grafana |
多实例配置:生产 / 预发布隔离
实际场景中,一个团队往往有多个 Grafana 实例(生产环境 + 预发布环境)。OpenSRE 支持多实例配置,让 AI agent 在排查不同环境的告警时自动路由到正确的数据源。
环境变量方式
export GRAFANA_INSTANCES='[ |
告警中指定实例
告警载荷可以携带 grafana_instance 字段,OpenSRE 会据此选择对应的实例:
{ |
如果告警未指定实例,OpenSRE 默认使用配置列表中的第一个实例。
OpenSRE 如何使用 Grafana 数据?
连接打通之后,来看看一次完整的自动化排查流程:
告警触发 |
关键设计亮点:
- 并行查询 — 不是逐个排查,而是同时拉取日志、指标、链路,大幅缩短调查时间
- 证据关联 — 每个结论都附带数据来源,不是凭空猜测
- 置信度评估 — AI 会对每个假设给出置信度,低置信度时建议人工介入
实战演示
启动交互式排查
opensre |
进入 REPL 后,用自然语言描述问题:
grafana 告警说 payment-service 的 P99 延迟飙到 3 秒了,帮我查一下 |
OpenSRE 会:
- 自动读取 Grafana 告警规则配置
- 查询 Mimir 中 payment-service 的延迟指标
- 在 Loki 中搜索对应时间窗口的 ERROR 日志
- 通过 Tempo 追踪慢请求链路
- 询问你最近有没有部署或配置变更
- 给出根因分析
文件式排查
opensre investigate -i alert_payload.json --output rca.json |
alert_payload.json 示例:
{ |
输出文件结构:
theory/hypothesis_1.md # 假设1:数据库连接池耗尽 |
常见问题排查
Q1: opensre integrations verify grafana 报 401
原因:Token 无效或已过期。
解决:
- 检查 Token 是否完整复制(不要漏掉
glsa_前缀) - 在 Grafana 中确认 Service Account 未被禁用
- 如果 Token 过期,重新生成
Q2: 能连接 Grafana,但查不到 Loki / Mimir / Tempo 数据
原因:Service Account 权限不足。
解决:
- 确认 Service Account 至少有
Viewer角色 - 检查数据源权限:Grafana → Data Sources → 目标数据源 → Permissions → 确认 Service Account 有 Query 权限
- 验证命令:用 Token 直接调用 Grafana API 测试
curl -H "Authorization: Bearer glsa_xxxx" \ |
Q3: 多实例配置不生效
原因:环境变量 GRAFANA_INSTANCES 和本地存储文件 ~/.config/opensre/integrations.json 冲突时,存储文件优先级更高。
解决:
- 要么删除存储文件中对应的 Grafana 记录,仅使用环境变量
- 要么直接在存储文件中配置多实例
最佳实践
- Token 最小权限原则 — 只给
Viewer角色,OpenSRE 只需要读数据 - 多实例命名规范 — 使用
prod/staging/dev等统一标签,方便告警路由 - Token 定期轮换 — 建议每 90 天更换一次,可以设置 Service Account Token 的过期时间
- 先验证再上线 — 每次修改配置后执行
opensre integrations verify grafana - 告警中携带实例信息 — 多环境场景下,在告警规则里添加
grafana_instance注解
总结
OpenSRE 接通 Grafana 的精髓只有两步:
- 在 Grafana 创建 Service Account Token(30 秒)
- 在 OpenSRE 填入 URL + Token(30 秒)
一分钟打通后,这个 AI agent 就拥有了读取你全部日志(Loki)、指标(Mimir)和链路(Tempo)的能力。当告警凌晨响起来,它在你睡着的时候就把根因查好了。
这不是魔法,只是把 SRE 日常的排查动作流程化、并行化,交给了 AI。
参考文档: