Grafana v12で発表されたGit Syncを使ってみた

Grafana v12で発表されたGit Syncを使ってみた

2025.08.10

はじめに

今年の5月にGrafanaのv12が発表されました。
https://grafana.com/docs/grafana/latest/whatsnew/whats-new-in-v12-0/

その中にGrafanaインスタンスをGitHubリポジトリに接続し、Grafana UIから直接ダッシュボードをコードとして管理できるGit Syncという機能がプレビューリリースされました。
https://grafana.com/docs/grafana/latest/observability-as-code/provision-resources/intro-git-sync/

まだプレビュー版ではありますが、ダッシュボードをGitHubで管理できるのはアツいですね!
公式ドキュメントにも書かれていますが、これは実験的な機能なので、実稼働環境での使用はお勧めされていませんのでご注意を。

何がいいのか?

やはりGitHubで管理できるため、バージョン管理しつつ複数人で共同のダッシュボードを管理できるというのが最大のメリットだと思います。

以前、ダッシュボードのjsonファイルをAPI経由で操作するという記事を書きました。
https://dev.classmethod.jp/articles/grafana-cloud-json-cli/

これをわざわざAPIを経由する必要がなくなります。
個人レベルでダッシュボードを管理するレベルならAPI経由でもそこまで大きな支障はありませんが、やはり複数人で管理するとなると色々と支障が出てきます。
Git Sync機能であれば複数人での開発体験もよくなりそうなので期待が持てます。

セットアップ

セットアップ方法はセットアップガイドを見ながら進めます。
全体の流れとしては以下の流れで進みます。

  1. Grafana で機能トグルを有効にする
  2. GitHubのパーソナルアクセストークンを発行
  3. GitHubとの接続設定

環境

Grafana
前提としてGit Syncは現在OSS版またはEnterprise版のみサポートされています。
Grafana Cloudでは一般公開されていません。

今回は自身のMacにEnterprise版のGrafanaをインストールしています。
バージョンは12.1.0-preです。

$ grafana -v
grafana version 12.1.0-pre

Git Syncが実装された12.0.xでも試しましたが、私の環境で試した限りではバグがあり使えませんでした。

GitHub
GitHub側にはGrafanaのダッシュボードを同期するために適当なリポジトリを作成しておきます。既存のリポジトリでもokです。

機能トグルを有効にする

Git Syncを有効にするには、provisioningkubernetesDashboardsの機能トグルを有効にする必要があります。
機能トグルを有効にするには、grafana.inicustom.iniの設定ファイルに以下の設定を追記します。

[feature_toggles]
provisioning = true
kubernetesDashboards = true ; use k8s from browser

Grafanaを起動している場合は上記の変更後にGrafanaを再起動します。

GitHubのパーソナルアクセストークンを発行

GitHubにログインして
右上の自分のアイコン > Settings > Developer Settings
を選択します。
CleanShot 2025-08-09 at 23.40.53@2x
次にFien-grained tokensを開きます。
CleanShot 2025-08-09 at 23.41.40@2x
Generate new tokenをクリックして新しいトークンを作成します。
CleanShot 2025-08-09 at 23.42.50@2x
トークン名や有効期限、対象のリポジトリを適宜選択します。
PermissionsはGit Syncに必要な以下の権限を設定します。
Pasted image 20250809235347
Generate tokenをクリックして発行されたトークンをコピーしておきます。

GitHubとの接続設定

Grafanaにログインして、左メニューよりAdministration > Provisioning > Configure Git Syncの順にクリックします。
Pasted image 20250810100421
先ほど取得したGitHubのアクセストークンとリポジトリのURLを入力します。
次にデフォルトのブランチとリポジトリのパスを入力します。
リポジトリのパスは下の図のようにgrafana/を指定した場合、ダッシュボードのjsonを保存する際にgrafanaというディレクトリが自動的に作成されます。
CleanShot 2025-08-10 at 11.58.34@2x
次に同期する対象を聞かれるので、今回は「Sync all resources with external storage」を選択して全てのダッシュボードが同期されるように設定します。
Pasted image 20250810100803
「Sync external storage to a new Grafana folder」を選択すると、新しいダッシュボードのフォルダが作成され、そのフォルダ配下のダッシュボードがGitHubと同期されるようです。

次にGrafanaとGitHubを同期します。
注意点に書かれていますが、「Begin synchronization」をクリックして同期を開始すると、一時的にダッシュボードが利用できなくなるので複数人で利用している場合は注意しましょう。
Pasted image 20250810101339
問題なく接続できればJob completed successfullyと表示されます。
Pasted image 20250810101703
最後にオプションの設定です。
今回は何も設定せず完了します。
Pasted image 20250810101758
Grafana↔︎GitHubの同期間隔や、Grafana側をRead onlyにしてコード上での管理のみとすることもできます。
「Enhance your GitHub experience」はプルリクエストの際にダッシュボードのどこが変更されるのかを画像プレビューで見ることができるようです。
これはアツいですね!
Grafana Image Rendererというプラグインが必要なので、今回は設定しませんがまた近いうちに試してみたいと思います。

接続が完了すると、Provisioningの画面に同期設定が追加され、リポジトリ名の右にUp-to-dateと表示されていれば設定完了です。
Pasted image 20250810102729

ダッシュボード作成

それではダッシュボードを1つ作ってみて、GitHubと連携されているか試してみましょう。
Pasted image 20250810110540

Demo Dashboardという名前でダッシュボードを作成します。
データソースは時系列のテストデータをTime series(折れ線)で表示しています。
Commentの部分がCommitメッセージにあたるので、First Commitと入力しておきます。
今回はmainブランチにPushしたいのでWorkflowの項目はPush to mainを選択して保存します。
CleanShot 2025-08-10 at 10.41.00@2x
GitHub側で同期されているか確認します。
新しいjsonファイルが作成されていますね!!
CleanShot 2025-08-10 at 10.41.37@2x

GitHub側でコードの変更

それではリポジトリに保存されたjsonファイルが変更された場合にGrafanaのダッシュボードにも自動的に反映されることを確認します。
より普段の開発環境に近い形でローカル環境からjsonの中身を変更しています。
Pasted image 20250810105947
変更点はテストデータをTime series(折れ線)で表示していたところをBar chart(棒グラフ)に変更しています。

-        "type": "timeseries"
+        "type": "barchart"

それではダッシュボードを確認します。
CleanShot 2025-08-10 at 11.07.05@2x
Time seriesからBar chartに変更されていることが確認できました。
ここまででGit Syncの最も基本となる機能を試すことができました。

まとめ

Grafana v12で発表されたGit Sync機能を試してみました。
ダッシュボードのjsonをコードとしてGitHubで管理できるようになったので、以前書いたClaude Codeを使ったダッシュボード開発とも相性が良さそうです。
https://dev.classmethod.jp/articles/claude-code-grafana-mcp-sample-dashboard/
まだプレビュー版の機能ということで、うまくいかないなという機能がいくつかありました。
よりよい機能として正式リリースされることを願って、欲しい機能をIssueに上げていきたいと思います。

この記事をシェアする

facebookのロゴhatenaのロゴtwitterのロゴ

© Classmethod, Inc. All rights reserved.