You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Grafana v10.0.3通过API导出告警JSON数据失败排查

问题排查与修正方案

1. 注释语法错误

Python不支持//作为注释符号,你的代码中alert_name = "NetworkDevice Down" //alert name这行会直接报错,导致脚本无法正常执行。应改为Python标准的#注释:

alert_name = "NetworkDevice Down"  # alert name

2. API端点版本不匹配

Grafana v10.x使用统一告警系统(Unified Alerting),旧的/api/alerts端点仅兼容旧版告警系统,新版对应的API端点分两种场景:

  • 若要获取告警规则配置,使用/api/v1/provisioning/alert-rules
  • 若要获取当前触发的告警实例,使用/api/v1/alerts

原脚本调用的旧端点在v10.x环境下可能返回空数据或不兼容结构,导致后续匹配不到目标告警。

3. 字段名不匹配

新版API返回的告警规则中,名称字段是title而非name,原代码中alert['name'] == alert_name的判断永远无法命中,自然没有输出。

4. 权限验证

确保你的API Token拥有alert:read权限,否则请求会返回403状态码。


修正后的脚本示例(获取告警规则)

import requests
import json

# 替换为你的实际Token
token = "your_api_token_here"

grafana_url = "https://domain.grafana.net"
alert_title = "NetworkDevice Down"  # 对应新版API的title字段

headers = {
    "Authorization": f"Bearer {token}",
    "Accept": "application/json",
    "Content-Type": "application/json"
}

# 使用新版告警规则API端点
response = requests.get(f"{grafana_url}/api/v1/provisioning/alert-rules", headers=headers)

if response.status_code == 200:
    alert_rules = response.json()
    # 取消注释可查看完整返回结构,方便调试
    # print(json.dumps(alert_rules, indent=4))
    for rule in alert_rules:
        if rule['title'] == alert_title:
            print(json.dumps(rule, indent=4))
else:
    print(f"请求失败,状态码:{response.status_code}")
    # 打印响应内容排查错误
    print(response.text)

调试建议

  • 先取消注释print(json.dumps(alert_rules, indent=4)),查看API返回的完整数据结构,确认字段名称和格式
  • 若返回4xx状态码,检查Token权限和端点正确性;若返回5xx,联系Grafana Cloud支持排查服务问题

内容的提问来源于stack exchange,提问作者Faisal Shani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 15:06:05