Grafana 中的仪表板由一个 JSON 对象表示,该对象存储了仪表板的元数据。仪表板元数据包括仪表板属性、面板元数据、模板变量、面板查询等。
要查看仪表板的 JSON,请执行以下操作
(1)导航到仪表板。
(2)在顶部导航菜单中单击仪表盘设置(齿轮)图标。
(3)单击 JSON 模型:
当用户创建一个新的仪表板时,会使用以下字段初始化一个新的仪表板 JSON 对象:
注意:在以下 JSON 中,id 显示为空,这是在保存仪表盘之前为其分配的默认值。保存仪表盘后,将为 id 字段分配一个整数值。
{ "id": null, "uid": "cLV5GDCkz", "title": "New dashboard", "tags": [], "timezone": "browser", "editable": true, "graphTooltip": 1, "panels": [], "time": { "from": "now-6h", "to": "now" }, "timepicker": { "time_options": [], "refresh_intervals": [] }, "templating": { "list": [] }, "annotations": { "list": [] }, "refresh": "5s", "schemaVersion": 17, "version": 0, "links": [] }
下面将解释仪表板 JSON 中每个字段的用法:
名称 | 用途 |
id | 仪表板的唯一数字标识符。(由数据库生成) |
uid | 任何人都可以生成的唯一仪表板标识符,字符串 (8-40) |
title | 当前仪表板标题 |
tags | 与仪表板相关联的标记,字符串数组 |
style | 仪表板主题,即dark或light |
timezone | 仪表板的时区,即 UTC 或浏览器 |
editable | 仪表板是否可编辑 |
graphTooltip | 0 表示不共享十字准线或工具提示(默认),1 表示共享十字准线,2 表示共享十字准线和工具提示 |
time | 仪表盘的时间范围,如过去 6 小时、过去 7 天等 |
timepicker | 时间选择器元数据 |
templating | 模板元数据 |
annotations | 注释元数据 |
refresh | 自动刷新间隔 |
schemaVersion | JSON 模式的版本(整数),每次 Grafana 更新对该模式进行更改时都会递增 |
version | 仪表板的版本(整数),每次更新仪表板时递增 |
panels | 面板数组 |
面板是仪表盘的构建模块。它包括数据源查询、图表类型、别名等。面板 JSON 由 JSON 对象数组组成,每个对象代表一个不同的面板。大多数字段对于所有面板都是通用的,但有些字段取决于面板类型。以下是文本面板 JSON 的示例。
"panels": [ { "type": "text", "title": "Panel Title", "gridPos": { "x": 0, "y": 0, "w": 12, "h": 9 }, "id": 4, "mode": "markdown", "content": "# title" }
gridPos 属性以网格坐标描述面板大小和位置。
w 1-24(仪表盘的宽度分为 24 列)
h 以网格高度为单位,每个高度代表 30 个像素。
x x 位置,单位与 w 相同。
y Y 位置,单位与 h 相同。
网格具有负重力,如果面板上方有空位,则会将面板向上移动。
"timepicker": { "collapse": false, "enable": true, "notice": false, "now": true, "refresh_intervals": [ "5s", "10s", "30s", "1m", "5m", "15m", "30m", "1h", "2h", "1d" ], "status": "Stable", "type": "timepicker" }
各字段的用法说明如下:
Name | 用途 |
collapse | 时间选择器是否折叠 |
enable | 是否启用时间选择器 |
notice | |
now | |
refresh_intervals | |
status | |
type |
模板字段包含一个模板变量数组,其中有它们的保存值和一些其他元数据,例如:
"templating": { "enable": true, "list": [ { "allFormat": "wildcard", "current": { "tags": [], "text": "prod", "value": "prod" }, "datasource": null, "includeAll": true, "name": "env", "options": [ { "selected": false, "text": "All", "value": "*" }, { "selected": false, "text": "stage", "value": "stage" }, { "selected": false, "text": "test", "value": "test" } ], "query": "tag_values(cpu.utilization.average,env)", "refresh": false, "type": "query" }, { "allFormat": "wildcard", "current": { "text": "apache", "value": "apache" }, "datasource": null, "includeAll": false, "multi": false, "multiFormat": "glob", "name": "app", "options": [ { "selected": true, "text": "tomcat", "value": "tomcat" }, { "selected": false, "text": "cassandra", "value": "cassandra" } ], "query": "tag_values(cpu.utilization.average,app)", "refresh": false, "regex": "", "type": "query" } ] }
下面将解释模板部分中上述字段的用法:
名称 | 用途 |
enable | 是否启用模板 |
list | 对象数组,每个对象代表一个模板变量 |
allFormat | 从数据源获取所有值时使用的格式,例如:通配符、glob、regex、管道等。 |
current | 在仪表板上显示当前选定的变量文本/值 |
data source | 显示变量的数据源 |
includeAll | 是否提供全部可用选项 |
multi | 是否可以从变量值列表中选择多个值 |
multiFormat | 从数据源获取时间序列时使用的格式 |
name | 变量名 |
options | 可在仪表板上选择的变量文本/值对数组 |
query | 数据源查询,用于获取变量的值 |
refresh | 配置何时刷新变量 |
regex | 提取系列名称或度量节点段的部分内容 |
type | 变量类型,即自定义变量、查询变量或区间变量 |