预置仪表盘和数据源
介绍
了解如何通过从版本控制的配置文件预置 Grafana,在多个团队之间重用仪表盘和数据源。
在本教程中,您将
- 预置仪表盘。
- 预置数据源。
先决条件
- Grafana 7.0
- 您进行本教程操作的系统上的管理员权限
配置即代码
配置即代码是一种实践,它将系统配置存储为一组版本控制的、人类可读的配置文件,而不是存储在数据库中。这些配置文件可以在不同环境中重用,以避免资源重复。
随着组织内仪表盘和数据源数量的增长,手动管理变更会变得繁琐且容易出错。鼓励重用变得非常重要,以避免多个团队重复设计相同的仪表盘。
Grafana 通过预置支持配置即代码。目前支持预置的资源有
设置预置目录
在开始预置资源之前,Grafana 需要知道在哪里找到预置目录。预置目录包含 Grafana 启动时应用并在运行时持续更新的配置文件。
默认情况下,Grafana 会在安装 Grafana 的系统上的配置目录 (grafana > conf) 中查找预置目录。但是,如果您是 Grafana 管理员,您可能希望将配置文件放在网络文件夹等共享资源中,因此需要更改预置目录的路径。
您可以通过在主配置文件中设置 paths.provisioning
属性来设置不同的路径
[paths]
provisioning = <path to config files>
有关配置文件的更多信息,请参阅 Grafana 文档中的配置。
预置目录应具有以下结构
provisioning/
datasources/
<yaml files>
dashboards/
<yaml files>
接下来,我们将了解如何预置数据源。
预置数据源
每个数据源预置配置文件都包含一个清单 (manifest),用于指定一组已预置数据源的期望状态。
启动时,Grafana 会加载配置文件并预置清单中列出的数据源。
让我们配置一个 TestData 数据源,您可以在仪表盘中使用它。
创建一个数据源清单
在
provisioning/datasources/
目录中,创建一个名为default.yaml
的文件,内容如下apiVersion: 1 datasources: - name: TestData type: testdata
重启 Grafana 以加载新更改。
在侧边栏中,将鼠标悬停在配置(齿轮)图标上,然后单击数据源。TestData 会出现在数据源列表中。
不同类型的数据源配置选项可能有所不同。有关如何配置特定数据源的更多信息,请参阅数据源。
预置仪表盘
每个仪表盘配置文件都包含一个清单 (manifest),用于指定一组仪表盘提供者 (dashboard providers) 的期望状态。
仪表盘提供者告诉 Grafana 在哪里找到仪表盘定义以及将它们放在哪里。
Grafana 会定期检查仪表盘定义的更改(默认每 10 秒一次)。
让我们定义一个仪表盘提供者,以便 Grafana 知道在哪里找到我们要预置的仪表盘。
定义一个仪表盘提供者
在 provisioning/dashboards/
目录中,创建一个名为 default.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
有关如何配置仪表盘提供者的更多信息,请参阅仪表盘。
创建一个仪表盘定义
在仪表盘提供者中指定的仪表盘定义目录(即
options.path
)中,创建一个名为cluster.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 }
重启 Grafana 以预置新的仪表盘,或等待 10 秒,Grafana 会自动创建仪表盘。
在侧边栏中,将鼠标悬停在仪表盘(方块)图标上,然后单击管理。该仪表盘将出现在一个服务文件夹中。
如果您在仪表盘定义中未指定
id
,则 Grafana 会在预置期间为其分配一个。如果您想从其他仪表盘引用该仪表盘,可以自己设置id
。注意不要对多个仪表盘使用相同的id
,这会导致冲突。
总结
在本教程中,您学习了如何通过从版本控制的配置文件预置 Grafana,在多个团队之间重用仪表盘和数据源。
随着添加更多面板和配置,仪表盘定义可能会变得难以管理。有许多开源工具可用于更轻松地管理仪表盘定义
- grafana-dash-gen (Javascript)
- grafanalib (Python)
- grafonnet-lib (Jsonnet)
- grafyaml (YAML)