配置仪表板和数据源

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,在多个团队中重用仪表板和数据源。

随着面板和配置的增加,仪表板定义可能会变得笨重。有一些开源工具可以帮助您更轻松地管理仪表板定义

了解更多