Grafana Assistant 扩展至 30 多种数据源:自然语言开始串联可观测性上下文

2026-07-28 24 预计阅读时间: 1 分钟
来源: infoq.com AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:8 分钟

Grafana Labs 已将 Grafana Assistant 的查询能力扩展到 30 多种数据源。变化的重点不只是“支持列表变长”,而是让 AI 助手可以通过自然语言跨数据源查询并关联信息:工程师不必在指标、日志、追踪和事件页面之间反复切换,而可以从一个故障问题出发,逐步收集证据。

从查询一种数据,走向关联多个信号

传统排障经常沿着固定路径展开:先看监控指标确认异常时间,再检索日志寻找错误,随后打开追踪系统定位慢调用,最后检查部署或事件记录。每一步都可能使用不同的数据源、查询语言和标签体系。

当助手能够访问 30 多种数据源后,自然语言可以成为这些查询入口之上的统一交互层。例如,值班工程师可以提出这类问题:

找出过去 30 分钟结账服务延迟升高的时间段,并关联同一时间范围内的错误日志和异常请求链路。

这里真正困难的不是生成一句查询语句,而是完成三个动作:

  • 识别“结账服务”在不同数据源中的名称、标签或资源属性;
  • 将指标异常映射到准确的时间窗口;
  • 使用该窗口和服务标识继续检索日志、追踪或其他运维数据。

因此,数据源数量只是能力边界的一部分。跨系统的命名一致性、时间对齐和访问权限,才决定关联结果是否可靠。

自然语言不会自动修复数据质量

AI 助手降低了查询门槛,但无法替代可观测性治理。如果指标使用 service="checkout",日志写入 app="checkout-api",追踪数据却记录 service.name="payment-web",助手就很难稳定判断它们是否属于同一个服务。

团队在引入跨数据源问答前,至少应检查以下基础约定:

  • 服务名称是否在指标、日志和追踪中保持一致;
  • environmentclusternamespaceregion 等关键维度是否统一;
  • 时间戳、时区和数据保留期是否满足关联分析需要;
  • 数据源账号是否遵循最小权限原则;
  • 敏感日志、客户标识和安全事件是否允许进入 AI 辅助工作流。

还要注意,自然语言回答适合帮助工程师形成调查路径,不应天然被视为最终事实。缺失数据、错误标签、采样策略和查询时间范围都可能改变结论。对于生产事故,关键判断仍应回到原始面板、查询结果和变更记录进行核验。

可以这样实践:先盘点 Grafana 数据源

下面的示例使用 Grafana HTTP API 列出当前实例中的数据源,并按类型统计数量。它不调用 Grafana Assistant,也不代表助手的内部 API;它是一段可以用于接入前盘点的实践脚本。

运行前设置 Grafana 地址和具有读取权限的 Service Account Token:

export GRAFANA_URL="https://grafana.example.com"
export GRAFANA_TOKEN="glsa_your_service_account_token"

curl --fail --silent --show-error \
  --header "Authorization: Bearer ${GRAFANA_TOKEN}" \
  "${GRAFANA_URL}/api/datasources" \
  | jq -r 'group_by(.type)[] | "\(length)\t\(.[0].type)"' \
  | sort -nr

如果环境中还没有 jq,可在 Debian 或 Ubuntu 上安装:

sudo apt-get update
sudo apt-get install -y jq

还可以只输出适合审计的字段,避免把数据源配置中的其他内容带入工单或日志:

curl --fail --silent --show-error \
  --header "Authorization: Bearer ${GRAFANA_TOKEN}" \
  "${GRAFANA_URL}/api/datasources" \
  | jq '[.[] | {
      name,
      type,
      uid,
      access,
      isDefault
    }]'

不要把令牌写入仓库或命令历史。生产环境可以通过 CI 密钥、临时环境变量或组织已有的密钥管理系统注入凭据,并为盘点任务使用只读账号。

把问题写成可验证的调查步骤

自然语言提示越具体,跨数据源关联越容易验证。可以把提问组织为“对象、范围、基线、证据、输出”五部分:

对象:production 环境中的 checkout-api 服务
时间范围:过去 45 分钟
基线:与过去 7 天同一时段比较
调查步骤:
1. 找出 p95 延迟和 5xx 错误率同时上升的时间窗口。
2. 在这些窗口中检索相同 service.name、cluster 和 namespace 的错误日志。
3. 查找持续时间最长或包含错误状态的请求链路。
4. 分开列出观察到的事实、推测以及缺失的数据。
输出:给出每条结论对应的数据源、时间范围和可复查条件。

这类提示不会保证回答正确,但能减少范围漂移,并强制输出可检查的证据。对于高风险操作,还应明确要求助手只读查询,不执行告警修改、数据源变更或生产操作。

采用时先从只读排障开始

更稳妥的落地方式,是选择一个标签规范较完整的服务和一组只读数据源,使用历史事故复盘来检验结果。团队应记录助手能否找到正确时间窗口、是否遗漏关键证据,以及回答能否被原始查询复现。

上线前可以使用这份检查清单:

  • 为 Assistant 和相关数据源配置最小读取权限;
  • 统一服务名称与核心资源标签;
  • 明确哪些数据不得进入 AI 查询上下文;
  • 要求重要结论附带数据源、时间范围和过滤条件;
  • 用已知事故建立评测集,比较答案的准确性和稳定性;
  • 保留人工核验与传统查询入口。

支持 30 多种数据源扩大了 Grafana Assistant 可处理的可观测性范围,但实际价值取决于数据是否能被正确关联。自然语言可以缩短调查入口,统一的数据模型、严格的权限和可复查的证据链则决定它能否进入日常生产排障流程。


相关推荐