设置 Git 同步
注意
Git Sync 是 Grafana v12 开源版和企业版中引入的实验性功能。不提供工程和按需支持。除了代码注释外,文档有限或未提供。不提供 SLA。要在 Grafana 中使用此功能,请启用
provisioning
和kubernetesDashboards
功能开关。
Git Sync 允许您通过将仪表盘 JSON 文件和文件夹存储在远程 GitHub 仓库中,将 Grafana 仪表盘作为代码进行管理。或者,您可以配置本地文件系统而不是使用 GitHub。有关信息,请参阅设置文件配置。
本页介绍如何将 Git Sync 与 GitHub 仓库一起使用。
要设置 Git Sync,您需要
- 在 Grafana 中启用功能开关(首次设置)。
- 配置到您的 GitHub 仓库的连接。
- 选择要与 Grafana 同步的内容。
- 可选:通过启用拉取请求通知和仪表盘更改图像预览来扩展 Git Sync。
能力 | 好处 | 要求 |
---|---|---|
在您的拉取请求中添加一个总结更改的表格 | 提供一种方便的方式将更改保存回 GitHub。 | 配置了 Webhook |
向 PR 添加仪表盘预览图像 | 无需打开 Grafana 即可查看拉取请求中仪表盘更改的快照。 | 配置了图像渲染器插件和 Webhook |
启用 Git Sync 的性能影响
Git Sync 是一个实验性功能,正在持续开发中。
我们建议在非生产环境中评估其性能影响(如果存在)。
启用 Git Sync 后,数据库负载可能会增加,尤其是对于包含大量文件夹和嵌套文件夹的实例。报告您遇到的任何问题可以帮助我们改进 Git Sync。
开始之前
要设置 Git Sync,您需要
- 在您的 Grafana 组织中拥有管理权限。
- 在您的 Grafana 实例中启用所需的功能开关。有关说明,请参阅启用所需的功能开关。
- 一个用于存储您的仪表盘的 GitHub 仓库。
- 如果您想使用本地文件路径,请参阅本地文件路径指南。
- 一个 GitHub 访问令牌。在设置过程中,Grafana UI 也会向您解释这一点。
- 可选:一个公共 Grafana 实例。
- 可选:Image Renderer 插件,用于在您的 PR 中保存图像预览。
启用所需的功能开关
要在 Grafana 中激活 Git Sync,您需要启用 provisioning
和 kubernetesDashboards
功能开关。有关功能开关的更多信息,请参阅配置功能开关。
要启用所需的功能开关,请将它们添加到您的 Grafana 配置文件中
打开您的 Grafana 配置文件,即
grafana.ini
或custom.ini
。有关基于操作系统的文件位置,请参阅配置文件位置。找到或添加一个
[feature_toggles]
部分。添加以下值[feature_toggles] provisioning = true kubernetesDashboards = true ; use k8s from browser # If you want easy kubectl setup development mode grafanaAPIServerEnsureKubectlAccess = true
保存对文件的更改并重启 Grafana。
创建一个 GitHub 访问令牌
每当连接到 GitHub 仓库时,您都需要创建一个具有特定仓库权限的 GitHub 访问令牌。此令牌需要添加到您的 Git Sync 配置中,以启用 Grafana 和 GitHub 仓库之间的读写权限。
使用创建新的细粒度个人访问令牌创建一个新令牌。有关说明,请参阅管理您的个人访问令牌。
在Permissions(权限)下,展开Repository permissions(仓库权限)。
为 Git Sync 设置以下权限
- Contents(内容):读写权限
- Metadata(元数据):只读权限
- Pull requests(拉取请求):读写权限
- Webhooks:读写权限
选择任何附加选项,然后按Generate token(生成令牌)。
验证选项并选择Generate token(生成令牌)。
复制访问令牌。在完成配置之前,请保持浏览器窗口打开并显示令牌。
目前不支持 GitHub Apps。
设置到 GitHub 的连接
使用Provisioning(配置)指导您完成设置 Git Sync 以使用 GitHub 仓库的过程。
- 使用具有 Grafana Admin 标志的帐户登录您的 Grafana 服务器。
- 在左侧菜单中选择Administration(管理),然后选择Provisioning(配置)。
- 选择Configure Git Sync(配置 Git Sync)。
连接到外部存储
要连接您的 GitHub 仓库,请按照以下步骤操作
- 将您的 GitHub 个人访问令牌粘贴到Enter your access token(输入您的访问令牌)中。有关说明,请参阅创建一个 GitHub 访问令牌。
- 将您的 GitHub 仓库的Repository URL(仓库 URL)粘贴到文本框中。
- 输入要使用的分支。默认值为
main
。 - 添加一个Path(路径)到存储您仪表盘的子目录。默认值为
grafana/
。如果您的仪表盘存储在仓库的根目录中,请移除目录名。 - 选择Choose what to synchronize(选择要同步的内容)以验证到您仓库的连接并继续设置。
选择要同步的内容
您可以选择为整个组织使用一个仓库,或者同步到一个新的 Grafana 文件夹(最多 10 个连接)。如果您选择将所有资源与外部存储同步,则所有仪表盘将同步到该一个仓库。您将无法设置其他仓库进行连接。
您可以选择将所有资源与 GitHub 同步,或者将资源同步到新的 Grafana 文件夹。您可以选择的选项取决于您的 GitHub 仓库的状态。例如,如果您正在与一个新或空的仓库同步,则不会有迁移仪表盘的选项。
- 选择在 Grafana 中应如何处理资源。
- 如果您想通过外部存储同步和管理整个 Grafana 实例,请选择Sync all resources with external storage(将所有资源与外部存储同步)。此选择只能有一个已配置的连接。
- 选择Sync external storage to new Grafana folder(将外部存储同步到新的 Grafana 文件夹),以将外部资源同步到新文件夹,而不影响实例的其余部分。您可以重复此过程,最多可连接 10 个。 - 输入仓库连接的Display name(显示名称)。存储在此连接中的资源将显示在 Grafana UI 中所选的显示名称下。
- 选择Synchronize(同步)以继续。
选择附加设置
最后,您可以设置检查已配置存储更新的频率。
- 对于Update instance interval (seconds)(实例更新间隔(秒)),输入您希望实例从 GitHub 拉取更新的频率。默认值为 60 秒。
- 可选:选择Read only(只读)以确保资源无法在 Grafana 中修改。
- 可选:如果您配置了 Grafana Image Renderer 插件,可以Enable dashboards previews in pull requests(在拉取请求中启用仪表盘预览)。如果图像渲染不可用,则无法选择此选项。有关更多信息,请参阅Grafana Image Renderer。
- 选择Finish(完成)以继续。
在 Grafana 中验证您的仪表盘
要验证您的仪表盘是否在您指定的位置可用,请单击Dashboards(仪表盘)。仪表盘的名称列在Name(名称)列中。
现在,您的仪表盘已从仓库同步,您可以自定义名称、更改分支并为其创建拉取请求 (PR)。有关更多信息,请参阅使用 Git Sync。
配置 Webhook 和图像渲染
您可以通过使用 Webhook 获得即时更新和拉取请求,并在拉取请求中添加仪表盘预览来扩展 Git Sync。
设置 Webhook 实现实时通知和拉取请求集成
连接到 GitHub 仓库时,Git Sync 使用 Webhook 从 GitHub 公共仓库获取实时更新或启用拉取请求集成。如果没有 Webhook,轮询间隔将在最终配置屏幕中设置(默认为 60 秒)。您的 Grafana 实例必须暴露在公共互联网上。您可以通过端口转发和 DNS、ngrok
等工具或您偏好的任何其他方法来实现。
您在 GitHub 访问令牌中设置的权限为这种通信提供了授权。
如果您使用本地存储,则 Git Sync 仅提供周期性拉取。
使用您偏好的任何服务或工具设置 Webhook。例如,您可以使用 Cloudflare Tunnels 配合 Cloudflare 管理的域、端口转发和 DNS 选项,或使用 ngrok
等工具。
获得公共 URL 后,您可以将其添加到您的 Grafana 配置文件中
[server]
root_url = https://PUBLIC_DOMAIN.HERE
您可以从Administration(管理)>Provisioning(配置)中通过您的 GitHub 仓库的View(查看)链接检查已配置的 Webhook。
必要的路径
如果您的安全设置不允许公开暴露 Grafana 实例,您可以选择允许 GitHub IP 地址列表,或仅暴露必要的路径。
需要暴露的必要路径为 (RegExp)
/apis/provisioning\.grafana\.app/v0(alpha1)?/namespaces/[^/]+/repositories/[^/]+/(webhook|render/.*)$
设置图像渲染用于仪表盘预览
通过设置图像渲染,您可以直接在拉取请求中添加仪表盘更新的可视化预览。图像渲染也需要 Webhook。
您可以通过在 Grafana 实例中安装 Grafana Image Renderer 插件来启用此功能。有关更多信息和安装说明,请参阅Grafana Image Renderer。
设置完成后修改配置
要在完成设置后更新您的仓库配置
- 使用具有 Grafana Admin 标志的帐户登录您的 Grafana 服务器。
- 在左侧菜单中选择Administration(管理),然后选择Provisioning(配置)。
- 选择您希望修改的仓库的Settings(设置)。
- 使用Configure repository(配置仓库)屏幕更新任何设置。
- 选择Save(保存)以保留更新。