配置仪表盘和数据源

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>

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

配置数据源

每个数据源配置配置文件都包含一个 *清单*,该清单指定一组配置数据源的所需状态。

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

让我们配置一个 TestData 数据源,您可以将其用于仪表盘。

创建数据源清单

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

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

  3. 在侧边栏中,将光标悬停在 **配置** (齿轮)图标上,然后单击 **数据源**。TestData 将显示在数据源列表中。

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

配置仪表盘

每个仪表盘配置文件都包含一个清单,该清单指定一组 *仪表盘提供程序* 的所需状态。

仪表盘提供程序告诉 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,跨多个团队重用仪表盘和数据源。

随着仪表盘中添加更多面板和配置,仪表盘定义可能会变得难以管理。有一些开源工具可用于简化仪表盘定义的管理

了解更多