仪表板 API
如果您正在运行 Grafana 企业版,对于某些端点,您需要具有特定权限。有关更多信息,请参阅 基于角色的访问控制权限。
标识符 (id) 与唯一标识符 (uid)
仪表板的标识符 (id) 是一个自增的数值,并且只在每个 Grafana 安装中是唯一的。
仪表板的唯一标识符 (uid) 可以在多个 Grafana 安装之间唯一地识别仪表板。如果没有提供,在创建仪表板时会自动生成。uid 允许仪表板访问时具有一致的 URL,以及在多个 Grafana 安装之间同步仪表板时,有关更多信息,请参阅 仪表板配置。这意味着更改仪表板的标题不会破坏任何指向该仪表板的已收藏链接。
uid 的最大长度为 40 个字符。
创建 / 更新仪表板
POST /api/dashboards/db
创建一个新的仪表板或更新现有的仪表板。当更新现有仪表板时,如果您没有定义 folderId
或 folderUid
属性,则仪表板将移动到根级别。(您只需要定义一个属性,而不是两个)。
注意: 此端点不是用于创建文件夹的,请使用
POST /api/folders
来创建文件夹。
所需权限
请参阅介绍中的注释以获取解释。
操作 | 范围 |
---|---|
dashboards:create |
|
dashboards:write |
|
新仪表板的示例请求:
POST /api/dashboards/db HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
{
"dashboard": {
"id": null,
"uid": null,
"title": "Production Overview",
"tags": [ "templated" ],
"timezone": "browser",
"schemaVersion": 16,
"refresh": "25s"
},
"folderUid": "l3KqBxCMz",
"message": "Made changes to xyz",
"overwrite": false
}
JSON Body模式
- dashboard – 完整的仪表板模型。
- dashboard.id – id = null 用于创建新仪表板。
- dashboard.uid – 在创建仪表板时可选的唯一标识符。uid = null 将生成新的 uid。
- dashboard.refresh - 设置仪表板的刷新间隔。如果这低于最小刷新间隔,则 Grafana 将忽略它并强制执行最小刷新间隔。
- folderId – 要保存仪表板的文件夹的 id。
- folderUid – 要保存仪表板的文件夹的 UID。覆盖
folderId
。 - overwrite – 如果您想用较新版本覆盖现有仪表板,请将其设置为 true,或者在文件夹中具有相同仪表板标题或相同仪表板 uid。
- message - 为版本历史设置提交信息。
更新仪表板的示例请求:
POST /api/dashboards/db HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
{
"dashboard": {
"id": 1,
"title": "Production Overview Updated",
"tags": [ "templated" ],
"timezone": "browser",
"schemaVersion": 16,
"version": 1,
"refresh": "25s"
},
"folderUid": "l3KqBxCMz",
"message": "Made changes to xyz",
"overwrite": false
}
示例响应:
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 78
{
"id": 1,
"uid": "e883f11b-77c0-4ee3-9a70-3ba223d66e56",
"url": "/d/e883f11b-77c0-4ee3-9a70-3ba223d66e56/production-overview-updated",
"status": "success",
"version": 2
"slug": "production-overview-updated",
}
状态码
- 200 – 已创建
- 400 – 错误(无效的 JSON、缺少或无效的字段等)
- 401 – 未授权
- 403 – 访问被拒绝
- 412 – 预先条件失败
状态码 412 用于解释您无法创建仪表板以及原因。这可能有不同的原因
- 仪表板已被其他人更改,
status=version-mismatch
- 文件夹中已存在具有相同名称的仪表板,
status=name-exists
- 已存在具有相同 uid 的仪表板,
status=name-exists
- 仪表板属于插件
<plugin title>
,status=plugin-dashboard
响应体将具有以下属性
HTTP/1.1 412 Precondition Failed
Content-Type: application/json; charset=UTF-8
Content-Length: 97
{
"message": "The dashboard has been changed by someone else",
"status": "version-mismatch"
}
如果标题已存在,则 status
属性将为 name-exists
。
通过 uid 获取仪表板
GET /api/dashboards/uid/:uid
将返回具有仪表板唯一标识符(uid)的仪表板。有关包含请求仪表板的文件夹的唯一标识符的信息,可能可以在元数据中找到。
所需权限
请参阅介绍中的注释以获取解释。
操作 | 范围 |
---|---|
dashboards:read |
|
示例请求:
GET /api/dashboards/uid/cIBgcSjkk HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
示例响应:
HTTP/1.1 200
Content-Type: application/json
{
"dashboard": {
"id": 1,
"uid": "cIBgcSjkk",
"title": "Production Overview",
"tags": [ "templated" ],
"timezone": "browser",
"schemaVersion": 16,
"version": 0
},
"meta": {
"isStarred": false,
"url": "/d/cIBgcSjkk/production-overview",
"folderId": 2,
"folderUid": "l3KqBxCMz",
"slug": "production-overview" //deprecated in Grafana v5.0
}
}
状态码
- 200 – 找到
- 401 – 未授权
- 403 – 访问被拒绝
- 404 – 未找到
通过 uid 删除仪表板
DELETE /api/dashboards/uid/:uid
将删除具有指定唯一标识符(uid)的仪表板。
所需权限
请参阅介绍中的注释以获取解释。
操作 | 范围 |
---|---|
dashboards:delete |
|
示例请求:
DELETE /api/dashboards/uid/cIBgcSjkk HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
示例响应:
HTTP/1.1 200
Content-Type: application/json
{
"title": "Production Overview",
"message": "Dashboard Production Overview deleted",
"id": 2
}
状态码
- 200 – 已删除
- 401 – 未授权
- 403 – 访问被拒绝
- 404 – 未找到
通过 uid 执行硬删除仪表板
注意
此功能目前正在私人预览中,位于dashboardRestore
功能切换之后。
DELETE /api/dashboards/uid/:uid/trash
将永久删除具有指定唯一标识符(uid)的仪表板。
所需权限
请参阅介绍中的注释以获取解释。
操作 | 范围 |
---|---|
dashboards:delete |
|
示例请求:
DELETE /api/dashboards/uid/cIBgcSjkk/trash HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
示例响应:
HTTP/1.1 200
Content-Type: application/json
{
"title": "Production Overview",
"message": "Dashboard Production Overview deleted",
"uid": "cIBgcSjkk"
}
状态码
- 200 – 已删除
- 401 – 未授权
- 403 – 访问被拒绝
- 404 – 未找到
通过 uid 恢复已删除的仪表板
注意
此功能目前正在私人预览中,位于dashboardRestore
功能切换之后。
PATCH /api/dashboards/uid/:uid/trash
将恢复具有指定唯一标识符(uid)的已删除仪表板。
所需权限
请参阅介绍中的注释以获取解释。
操作 | 范围 |
---|---|
dashboards:create |
|
示例请求:
PATCH /api/dashboards/uid/cIBgcSjkk/trash HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
示例响应:
HTTP/1.1 200
Content-Type: application/json
{
"title": "Production Overview",
"message": "Dashboard Production Overview restored",
"uid": "cIBgcSjkk"
}
状态码
- 200 – 已删除
- 401 – 未授权
- 403 – 访问被拒绝
- 404 – 未找到
获取主页仪表板
GET /api/dashboards/home
将返回主页仪表板。
示例请求:
GET /api/dashboards/home HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
示例响应:
HTTP/1.1 200
Content-Type: application/json
{
"dashboard": {
"editable":false,
"nav":[
{
"enable":false,
"type":"timepicker"
}
],
"style":"dark",
"tags":[],
"templating":{
"list":[
]
},
"time":{
},
"timezone":"browser",
"title":"Home",
"version":5
},
"meta": {
"isHome":true,
"canSave":false,
"canEdit":false,
"canStar":false,
"url":"",
"expires":"0001-01-01T00:00:00Z",
"created":"0001-01-01T00:00:00Z"
}
}
仪表板标签
GET /api/dashboards/tags
获取所有仪表板标签
示例请求:
GET /api/dashboards/tags HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
示例响应:
HTTP/1.1 200
Content-Type: application/json
[
{
"term":"tag1",
"count":1
},
{
"term":"tag2",
"count":4
}
]
仪表板搜索
请参阅文件夹/仪表板搜索 API。