

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 控制面板 JSON 模型
<a name="v12-dash-dashboard-json-model"></a>

****  
本文档主题专为**支持** Grafana 版本 12.x 的 Grafana 工作空间而设计。  
对于支持 Grafana 10.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 10](using-grafana-v10.md)。  
对于支持 Grafana 9.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 9](using-grafana-v9.md)。  
对于支持 Grafana 8.x 版本的 Grafana 工作区，请参阅[使用 Grafana 版本 8](using-grafana-v8.md)。

Grafana 中的控制面板由 JSON 对象表示，该对象存储其控制面板的元数据。控制面板元数据包括控制面板属性、面板元数据、模板变量和面板查询。

**查看控制面板 JSON 对象**

1. 导航到控制面板。

1. 在顶部导航菜单中，选择**控制面板设置**（齿轮）图标。

1. 选择 **JSON 模型**。

## JSON 字段
<a name="v12-dash-json-fields"></a>

当用户创建新控制面板时，将使用以下字段初始化新的控制面板 JSON 对象。

**注意**  
在以下 JSON 中，ID 显示为 null，这是在保存控制面板之前分配的默认值。保存控制面板后，会为 `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 中的每个字段。


| Name | 用法 | 
| --- | --- | 
| `id` | 控制面板的唯一数字标识符（由数据库生成） | 
| `uid` | 任何人都可以生成的唯一控制面板标识符，字符串（8-40） | 
| `title` | 控制面板的当前标题 | 
| `tags` | 与控制面板关联的标签，字符串数组 | 
| `style` | 控制面板的主题，例如 `dark` 或 `light` | 
| `timezone` | 控制面板的时区，例如 `utc` 或 `browser` | 
| `editable` | 控制面板是否可编辑 | 
| `graphTooltip` | 0 表示无共享十字准线或工具提示（默认），1 表示共享十字准线，2 表示共享十字准线和共享工具提示 | 
| `time` | 控制面板的时间范围，例如 `last 6 hours` 或 `last 7 days` | 
| `timepicker` | 时间选取器元数据，详情请参阅[时间选取器部分](#v12-dash-json-panels) | 
| `templating` | 模板化元数据，详情请参阅[模板化部分](#v12-dash-json-panels) | 
| `annotations` | 注释元数据，有关如何添加注释，请参阅[注释](v12-dash-annotations.md) | 
| `refresh` | 自动刷新间隔 | 
| `schemaVersion` | JSON 架构的版本（整数），每当 Grafana 更新对此架构进行更改时都会递增 | 
| `version` | 控制面板的版本（整数），每次更新控制面板时都会递增 | 
| `panels` | 面板阵列（详情请参阅下一部分） | 

## 面板
<a name="v12-dash-json-panels"></a>

面板是控制面板的组成部分。由数据来源查询、图形类型、别名等构成。面板 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**

```
"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"
  }
```

**模板化**

`templating` 字段包含一组模板变量，及其保存的值和一些其他元数据。

```
"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"
      }
    ]
  }
```

下表介绍了模板化字段的使用。


| Name | 用法 | 
| --- | --- | 
| `enable` | 模板化是否已启用 | 
| `list` | 一组对象，每个对象代表一个模板变量 | 
| `allFormat` | 从数据来源获取所有值时使用的格式，包括 `wildcard`、`glob`、`regex` 和 `pipe`。 | 
| `current` | 在仪表板 text/value 上显示当前选定的变量 | 
| `datasource` | 显示变量的数据来源 | 
| `includeAll` | 所有值选项是否可用 | 
| `multi` | 是否可以从变量值列表中选择多个值 | 
| `multiFormat` | 从数据来源获取时间序列时使用的格式 | 
| `name` | 变量名称 | 
| `options` | 可在仪表板上选择的变量 text/value 对数组 | 
| `query` | 用于获取变量值的数据来源查询 | 
| `refresh` | 配置何时刷新变量 | 
| `regex` | 提取序列名称或指标节点分段的一部分 | 
| `type` | 变量类型 `custom`、`query` 或 `interval` | 