预置仪表盘和数据源

Grafana Labs Team
作者:Grafana Labs 团队

最后更新于 2024 年 8 月 29 日

中级

介绍

了解如何通过从版本控制的配置文件预置 Grafana,在多个团队之间重用仪表盘和数据源。

在本教程中,您将

  • 预置仪表盘。
  • 预置数据源。

先决条件

  • Grafana 7.0
  • 您进行本教程操作的系统上的管理员权限

配置即代码

配置即代码是一种实践,它将系统配置存储为一组版本控制的、人类可读的配置文件,而不是存储在数据库中。这些配置文件可以在不同环境中重用,以避免资源重复。

随着组织内仪表盘和数据源数量的增长,手动管理变更会变得繁琐且容易出错。鼓励重用变得非常重要,以避免多个团队重复设计相同的仪表盘。

Grafana 通过预置支持配置即代码。目前支持预置的资源有

设置预置目录

在开始预置资源之前,Grafana 需要知道在哪里找到预置目录。预置目录包含 Grafana 启动时应用并在运行时持续更新的配置文件。

默认情况下,Grafana 会在安装 Grafana 的系统上的配置目录 (grafana > conf) 中查找预置目录。但是,如果您是 Grafana 管理员,您可能希望将配置文件放在网络文件夹等共享资源中,因此需要更改预置目录的路径。

您可以通过在主配置文件中设置 paths.provisioning 属性来设置不同的路径

ini
[paths]
provisioning = <path to config files>

有关配置文件的更多信息,请参阅 Grafana 文档中的配置

预置目录应具有以下结构

provisioning/
  datasources/
    <yaml files>
  dashboards/
    <yaml files>

接下来,我们将了解如何预置数据源。

预置数据源

每个数据源预置配置文件都包含一个清单 (manifest),用于指定一组已预置数据源的期望状态。

启动时,Grafana 会加载配置文件并预置清单中列出的数据源。

让我们配置一个 TestData 数据源,您可以在仪表盘中使用它。

创建一个数据源清单

  1. provisioning/datasources/ 目录中,创建一个名为 default.yaml 的文件,内容如下

    yaml
    apiVersion: 1
    
    datasources:
      - name: TestData
        type: testdata
  2. 重启 Grafana 以加载新更改。

  3. 在侧边栏中,将鼠标悬停在配置(齿轮)图标上,然后单击数据源。TestData 会出现在数据源列表中。

不同类型的数据源配置选项可能有所不同。有关如何配置特定数据源的更多信息,请参阅数据源

预置仪表盘

每个仪表盘配置文件都包含一个清单 (manifest),用于指定一组仪表盘提供者 (dashboard providers) 的期望状态。

仪表盘提供者告诉 Grafana 在哪里找到仪表盘定义以及将它们放在哪里。

Grafana 会定期检查仪表盘定义的更改(默认每 10 秒一次)。

让我们定义一个仪表盘提供者,以便 Grafana 知道在哪里找到我们要预置的仪表盘。

定义一个仪表盘提供者

provisioning/dashboards/ 目录中,创建一个名为 default.yaml 的文件,内容如下

yaml
apiVersion: 1

providers:
  - name: Default # A uniquely identifiable name for the provider
    folder: Services # The folder where to place the dashboards
    type: file
    options:
      path:
        <path to dashboard definitions>
        # Default path for Windows: C:/Program Files/GrafanaLabs/grafana/public/dashboards
        # Default path for Linux is: /var/lib/grafana/dashboards

有关如何配置仪表盘提供者的更多信息,请参阅仪表盘

创建一个仪表盘定义

  1. 在仪表盘提供者中指定的仪表盘定义目录(即 options.path)中,创建一个名为 cluster.json 的文件,内容如下

    json
    {
      "__inputs": [],
      "__requires": [],
      "annotations": {
        "list": []
      },
      "editable": false,
      "gnetId": null,
      "graphTooltip": 0,
      "hideControls": false,
      "id": null,
      "links": [],
      "panels": [
        {
          "aliasColors": {},
          "bars": false,
          "dashLength": 10,
          "dashes": false,
          "datasource": "TestData",
          "fill": 1,
          "gridPos": {
            "h": 8,
            "w": 24,
            "x": 0,
            "y": 0
          },
          "id": 2,
          "legend": {
            "alignAsTable": false,
            "avg": false,
            "current": false,
            "max": false,
            "min": false,
            "rightSide": false,
            "show": true,
            "total": false,
            "values": false
          },
          "lines": true,
          "linewidth": 1,
          "links": [],
          "nullPointMode": "null",
          "percentage": false,
          "pointradius": 5,
          "points": false,
          "renderer": "flot",
          "repeat": null,
          "seriesOverrides": [],
          "spaceLength": 10,
          "stack": false,
          "steppedLine": false,
          "targets": [],
          "thresholds": [],
          "timeFrom": null,
          "timeShift": null,
          "title": "CPU Usage",
          "tooltip": {
            "shared": true,
            "sort": 0,
            "value_type": "individual"
          },
          "type": "graph",
          "xaxis": {
            "buckets": null,
            "mode": "time",
            "name": null,
            "show": true,
            "values": []
          },
          "yaxes": [
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": true
            },
            {
              "format": "short",
              "label": null,
              "logBase": 1,
              "max": null,
              "min": null,
              "show": true
            }
          ]
        }
      ],
      "refresh": "",
      "rows": [],
      "schemaVersion": 16,
      "tags": ["kubernetes"],
      "templating": {
        "list": []
      },
      "time": {
        "from": "now-6h",
        "to": "now"
      },
      "timepicker": {},
      "timezone": "browser",
      "title": "Cluster",
      "version": 0
    }
  2. 重启 Grafana 以预置新的仪表盘,或等待 10 秒,Grafana 会自动创建仪表盘。

  3. 在侧边栏中,将鼠标悬停在仪表盘(方块)图标上,然后单击管理。该仪表盘将出现在一个服务文件夹中。

如果您在仪表盘定义中未指定 id,则 Grafana 会在预置期间为其分配一个。如果您想从其他仪表盘引用该仪表盘,可以自己设置 id。注意不要对多个仪表盘使用相同的 id,这会导致冲突。

总结

在本教程中,您学习了如何通过从版本控制的配置文件预置 Grafana,在多个团队之间重用仪表盘和数据源。

随着添加更多面板和配置,仪表盘定义可能会变得难以管理。有许多开源工具可用于更轻松地管理仪表盘定义

了解更多