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




