You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Grafana 11.1.1面板数据查询API咨询:导出时序点数据至数据库

在Grafana 11.1.1中获取面板时序数据(含点数)的API方案

要导出Grafana面板的时序数据并获取点数量,核心通过两个API配合实现:

1. 获取仪表板的面板查询配置(可选前置步骤)

如果不清楚目标面板的查询参数,先调用Dashboard API拿到面板的查询定义:

  • 请求方式:GET
  • 端点:/api/dashboards/uid/:uid(替换:uid为你的仪表板UID,可从仪表板URL中提取)
  • 响应中每个面板的targets字段即为该面板的查询配置,包含数据源ID、查询语句等关键信息。

2. 调用Query API获取带点数的时序数据

这是获取原始时序数据的核心API,直接执行面板的查询并返回包含所有数据点的结果:

  • 请求方式:POST
  • 端点:/api/ds/query
  • 请求体参数:
    • dsId:数据源的ID(可从Dashboard API响应或Grafana数据源设置页获取)
    • queries:数组,元素为从Dashboard API中提取的target对象(每个对象对应面板中的一个查询)
    • from/to:时间范围,支持相对时间(如now-7d)或绝对时间戳
  • 响应解析:
    响应的results字段下,每个series对象的datapoints数组就是该时序的所有数据点,datapoints.length就是你需要的时序点数量。每个数据点格式为[数值, 时间戳],可直接用于转换入库。

请求示例(curl)

curl -X POST -H "Authorization: Bearer YOUR_GRAFANA_API_KEY" \
  -H "Content-Type: application/json" \
  http://your-grafana-instance/api/ds/query \
  -d '{
    "dsId": 2,
    "queries": [
      {
        "expr": "node_cpu_seconds_total{mode=\"idle\"}",
        "refId": "A",
        "datasourceUid": "xyz789"
      }
    ],
    "from": "now-24h",
    "to": "now"
  }'

数据转换与入库建议

拿到响应后,可按以下流程处理:

  • 遍历每个series,提取时序名称(series.name)、标签(series.labels)、数据点数组和点数量
  • 将每个datapoints中的[值, 时间戳]拆分为单独的数据库记录,或者根据业务需求按系列聚合存储
  • 注意处理JSON格式的嵌套结构,比如将标签字段展开为数据库的列或单独的关联表

权限说明

确保你的API密钥拥有Viewer及以上权限,能够访问目标仪表板和对应的数据源。

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

火山引擎 最新活动