菜单
文档breadcrumb arrow Grafana 文档breadcrumb arrow 可观测性即代码breadcrumb arrow Grafana CLIbreadcrumb arrow 使用 Grafana CLI 管理资源
Grafana Cloud Enterprise 开源

使用 Grafana CLI 管理资源

注意

grafanactl 正在积极开发中。本文描述的命令行标志和子命令可能会发生变化。本文概述了该工具预期支持的目标工作流程。

在不同环境之间迁移资源

使用 configresources 选项,您可以在不同环境之间迁移 Grafana 资源,例如从开发环境迁移到生产环境。config 选项允许您定义配置上下文。将 resourcespullpushserve 结合使用,可以从一个实例拉取定义的资源,并将该资源推送到另一个实例。Serve 允许您在推送之前在本地预览更改。

使用以下步骤在不同环境之间迁移资源

注意

目前,serve 命令仅适用于仪表盘。

使用以下步骤在不同环境之间迁移资源

注意

默认情况下,资源从 ./resources 目录拉取和推送。可以使用 --directory/-d 标志配置此目录。

  1. 在您的 开发实例 中使用 Grafana UI 对仪表盘和其他资源进行更改。

  2. 将这些资源从开发环境拉取到您的本地机器

    bash
    grafanactl config use-context YOUR_CONTEXT  # for example "dev"
    grafanactl resources pull -d ./resources/ -o yaml  # or json
  3. (可选) 在推送之前在本地预览资源

    bash
    grafanactl config use-context YOUR_CONTEXT  # for example "prod"
    grafanactl resources serve -d ./resources/
  4. 切换到 生产实例 并推送资源

    bash
    grafanactl config use-context YOUR_CONTEXT  # for example "prod"
    grafanactl resources push -d ./resources/

备份 Grafana 资源

此工作流程帮助您备份一个实例中的所有 Grafana 资源,并在稍后恢复它们。这对于复制配置或执行灾难恢复非常有用。

  1. 使用 grafanactl 从您的目标环境拉取所有资源

    bash
    grafanactl config use-context YOUR_CONTEXT  # for example "prod"
    grafanactl resources pull -d ./resources/ -o yaml  # or json
  2. 将导出的资源保存到版本控制或云存储。

恢复 Grafana 资源

  1. (可选) 在本地预览备份

    bash
    grafanactl config use-context YOUR_CONTEXT  # for example "prod"
    grafanactl resources serve -d ./resources/
  2. 要在稍后恢复资源或在另一个实例上恢复它们,请推送保存的资源

    bash
    grafanactl config use-context YOUR_CONTEXT  # for example "prod"
    grafanactl resources push -d ./resources/

将仪表盘作为代码管理

通过此工作流程,您可以将仪表盘定义和管理为代码,将它们保存到像 Git 这样的版本控制系统中。这对于希望维护更改历史、协作进行仪表盘设计以及确保跨环境一致性的团队非常有用。

  1. 使用仪表盘生成脚本(例如,使用 Foundation SDK)。您可以在 Grafana as code 实践实验室仓库 中找到一个示例实现。

  2. 在本地提供服务并预览仪表盘生成器的输出

    bash
    grafanactl config use-context YOUR_CONTEXT  # for example "dev"
    grafanactl resources serve --script 'go run scripts/generate-dashboard.go' --watch './scripts'
  3. 当输出正确时,生成仪表盘 manifest 文件

    bash
    go run scripts/generate-dashboard.go --generate-resource-manifests --output './resources'
  4. 将生成的资源推送到您的 Grafana 实例

    bash
    grafanactl config use-context YOUR_CONTEXT  # for example "dev"
    grafanactl resources push -d ./resources/

从终端探索和修改资源

本节介绍如何使用 Grafana CLI 直接从您的终端与 Grafana 资源交互。这些命令允许您在不使用 Grafana UI 的情况下浏览、检查、更新和删除资源。此方法对于希望更高效地管理资源或将 Grafana 操作集成到自动化工作流程中的高级用户非常有用。

查找并删除使用无效数据源的仪表盘

使用此工作流程识别引用不正确或过时数据源的仪表盘,并在必要时将其移除。

  1. 将上下文设置为适当的环境

    bash
    grafanactl config use-context YOUR_CONTEXT  # for example "prod"
  2. 查找使用特定数据源的仪表盘

    bash
    grafanactl resources get dashboards -ojson | jq '.items | map({ uid: .metadata.name, datasources: .spec.panels | map(.datasource.uid)  })'
    [
       {
          "uid": "important-production-dashboard",
          "datasources": [
             "mimir-prod"
          ]
       },
       {
          "uid": "test-dashboard-from-dev",
          "datasources": [
             "mimir-prod",
             "mimir-dev"
          ]
       },
       {
          "uid": "test-dashboard-from-stg",
          "datasources": [
             "mimir-prod",
             "mimir-stg",
             "mimir-dev"
          ]
       }
    ]

    此命令列出仪表盘 UID 以及其面板中使用的数据源 UID。然后您可以识别正在使用无效或意外数据源的仪表盘。

  3. 直接删除已识别的仪表盘

    bash
    grafanactl resources delete dashboards/test-dashboard-from-stg,test-dashboard-from-dev
    ✔ 2 resources deleted, 0 errors

查找并弃用使用旧 API 版本的仪表盘

使用此工作流程找到使用已弃用 API 版本的仪表盘并进行相应标记。

  1. 将上下文设置为适当的环境

    bash
    grafanactl config use-context YOUR_CONTEXT  # for example "prod"
  2. 列出所有可用的资源类型和版本

    bash
    grafanactl resources list

    此命令返回资源列表,包括它们的版本、类型和数量

    bash
    GROUP                               VERSION   KIND
    folder.grafana.app                  v1        folder
    dashboard.grafana.app               v1        dashboard
    dashboard.grafana.app               v1        librarypanel
    dashboard.grafana.app               v2        dashboard
    dashboard.grafana.app               v2        librarypanel
    playlist.grafana.app                v1        playlist
  3. 查找仍在运行旧 API 版本的仪表盘

    bash
    grafanactl resources get dashboards.v1.dashboard.grafana.app

    此命令返回一个表格,显示资源类型、资源名称和关联的命名空间

    bash
    KIND         NAME                                   NAMESPACE
    dashboards   really-old-dashboard                   default
  4. 编辑每个仪表盘以添加 deprecated 标签

    bash
    grafanactl resources edit dashboards.v1.dashboard.grafana.app/really-old-dashboard -p '{"spec":{"tags":["deprecated"]}}'

提示

您可以使用 grafanactl --help 命令获取帮助。