使用 Grafana CLI 管理资源
注意
grafanactl
正在积极开发中。本文描述的命令行标志和子命令可能会发生变化。本文概述了该工具预期支持的目标工作流程。
在不同环境之间迁移资源
使用 config
和 resources
选项,您可以在不同环境之间迁移 Grafana 资源,例如从开发环境迁移到生产环境。config
选项允许您定义配置上下文。将 resources
与 pull
、push
和 serve
结合使用,可以从一个实例拉取定义的资源,并将该资源推送到另一个实例。Serve
允许您在推送之前在本地预览更改。
使用以下步骤在不同环境之间迁移资源
注意
目前,
serve
命令仅适用于仪表盘。
使用以下步骤在不同环境之间迁移资源
注意
默认情况下,资源从
./resources
目录拉取和推送。可以使用--directory
/-d
标志配置此目录。
在您的 开发实例 中使用 Grafana UI 对仪表盘和其他资源进行更改。
将这些资源从开发环境拉取到您的本地机器
grafanactl config use-context YOUR_CONTEXT # for example "dev" grafanactl resources pull -d ./resources/ -o yaml # or json
(可选) 在推送之前在本地预览资源
grafanactl config use-context YOUR_CONTEXT # for example "prod" grafanactl resources serve -d ./resources/
切换到 生产实例 并推送资源
grafanactl config use-context YOUR_CONTEXT # for example "prod" grafanactl resources push -d ./resources/
备份 Grafana 资源
此工作流程帮助您备份一个实例中的所有 Grafana 资源,并在稍后恢复它们。这对于复制配置或执行灾难恢复非常有用。
使用
grafanactl
从您的目标环境拉取所有资源grafanactl config use-context YOUR_CONTEXT # for example "prod" grafanactl resources pull -d ./resources/ -o yaml # or json
将导出的资源保存到版本控制或云存储。
恢复 Grafana 资源
(可选) 在本地预览备份
grafanactl config use-context YOUR_CONTEXT # for example "prod" grafanactl resources serve -d ./resources/
要在稍后恢复资源或在另一个实例上恢复它们,请推送保存的资源
grafanactl config use-context YOUR_CONTEXT # for example "prod" grafanactl resources push -d ./resources/
将仪表盘作为代码管理
通过此工作流程,您可以将仪表盘定义和管理为代码,将它们保存到像 Git 这样的版本控制系统中。这对于希望维护更改历史、协作进行仪表盘设计以及确保跨环境一致性的团队非常有用。
使用仪表盘生成脚本(例如,使用 Foundation SDK)。您可以在 Grafana as code 实践实验室仓库 中找到一个示例实现。
在本地提供服务并预览仪表盘生成器的输出
grafanactl config use-context YOUR_CONTEXT # for example "dev" grafanactl resources serve --script 'go run scripts/generate-dashboard.go' --watch './scripts'
当输出正确时,生成仪表盘 manifest 文件
go run scripts/generate-dashboard.go --generate-resource-manifests --output './resources'
将生成的资源推送到您的 Grafana 实例
grafanactl config use-context YOUR_CONTEXT # for example "dev" grafanactl resources push -d ./resources/
从终端探索和修改资源
本节介绍如何使用 Grafana CLI 直接从您的终端与 Grafana 资源交互。这些命令允许您在不使用 Grafana UI 的情况下浏览、检查、更新和删除资源。此方法对于希望更高效地管理资源或将 Grafana 操作集成到自动化工作流程中的高级用户非常有用。
查找并删除使用无效数据源的仪表盘
使用此工作流程识别引用不正确或过时数据源的仪表盘,并在必要时将其移除。
将上下文设置为适当的环境
grafanactl config use-context YOUR_CONTEXT # for example "prod"
查找使用特定数据源的仪表盘
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。然后您可以识别正在使用无效或意外数据源的仪表盘。
直接删除已识别的仪表盘
grafanactl resources delete dashboards/test-dashboard-from-stg,test-dashboard-from-dev ✔ 2 resources deleted, 0 errors
查找并弃用使用旧 API 版本的仪表盘
使用此工作流程找到使用已弃用 API 版本的仪表盘并进行相应标记。
将上下文设置为适当的环境
grafanactl config use-context YOUR_CONTEXT # for example "prod"
列出所有可用的资源类型和版本
grafanactl resources list
此命令返回资源列表,包括它们的版本、类型和数量
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
查找仍在运行旧 API 版本的仪表盘
grafanactl resources get dashboards.v1.dashboard.grafana.app
此命令返回一个表格,显示资源类型、资源名称和关联的命名空间
KIND NAME NAMESPACE dashboards really-old-dashboard default
编辑每个仪表盘以添加
deprecated
标签grafanactl resources edit dashboards.v1.dashboard.grafana.app/really-old-dashboard -p '{"spec":{"tags":["deprecated"]}}'
提示
您可以使用
grafanactl --help
命令获取帮助。