【入門編】Grafana APIとTerraformを使ったダッシュボードのコード管理(GitOps)完全実践ガイド – 運用監視・オブザーバビリティ活用バイブル

オブザーバビリティの世界へようこそ。

現場で長く戦っていると必ず直面する「負の遺産」、それがDashboard Sprawl(ダッシュボードの乱立)です。GUIでポチポチと作成された美しいダッシュボードは、誰がいつ修正したのか不明になり、やがて誰も触れない「化石」へと変わります。

これを防ぐ唯一の解は、「ダッシュボードをコードとして扱うこと(Dashboard as Code)」です。今日は、TerraformとGitHub Actionsを駆使して、 GrafanaをGitOpsの管理下に置くための、現場の「最適解」を伝授しましょう。

—

1. なぜ「コード管理」なのか?

GUIでの手動作成は、最初は楽ですが、数ヶ月後には悪夢に変わります。

  • 変更履歴の欠如: 「誰がこのグラフの閾値を変えた?」が追えない。
  • 再現性の欠如: 環境の作り直しやバックアップが困難。
  • 属人化: 作成者の脳内にしか仕様がない。

これをTerraformで管理すれば、Gitのコミット履歴がそのまま「運用ログ」になり、プルリクエストを通すことで「チームによるレビュー」という強力な品質ゲートが生まれます。

—

2. 環境構築:Terraform × Grafana

まずは、TerraformからGrafanaを操作するための準備です。

事前準備

1. Grafana API Keyの発行: Grafanaの `Administration > Users and access > API keys` から、`Editor` 以上の権限を持つキーを発行してください。
2. ディレクトリ構成:

.
├── provider.tf # プロバイダー設定
├── dashboard.tf # ダッシュボード定義
└── variables.tf # 変数定義

provider.tf

terraform {
required_providers {
grafana = {
source = “grafana/grafana”
version = “>= 3.0.0”
}
}
}

provider “grafana” {
url = “https://your-grafana-instance.com”
auth = var.grafana_auth # APIキーを環境変数で渡すのが定石です
}

—

3. Hello World:ダッシュボードをコード化する

ここからが本題です。JSONを直接書くのは苦行ですが、GrafanaのGUIで作成したダッシュボードをJSONエクスポートし、それをTerraformの `grafana_dashboard` リソースに流し込むのが、最も手っ取り早く、かつミスのない手法です。

dashboard.tf

resource “grafana_dashboard” “main_metrics” {
config_json = file(“${path.module}/dashboards/main_metrics.json”)
folder = grafana_folder.operations.id # フォルダ管理もコード化!
}

resource “grafana_folder” “operations” {
title = “Operations-Dashboard”
}

ポイント: `file()` 関数を使って外部JSONを読み込むことで、Grafana上のJSONエディタとTerraformを分離できます。これでデザイナーはUIで作り、エンジニアはGitで管理するという分業が可能です。

—

4. GitHub Actionsで自動デプロイ

Terraformコマンドを手元のPCで打つのは卒業しましょう。GitHubにプッシュしたら自動で反映されるパイプラインを組みます。

.github/workflows/deploy.yml

name: Deploy Dashboards
on:
push:
branches: [main]

jobs:
terraform:
runs-on: ubuntu-latest
steps:

  • uses: actions/checkout@v3
  • name: Terraform Apply

env:
GRAFANA_AUTH: ${{ secrets.GRAFANA_API_KEY }}
run: |
terraform init
terraform apply -auto-approve

このパイプラインが完成した瞬間、あなたのチームのオブザーバビリティは「管理される対象」から「進化する資産」へと変わります。

—

5. 伝説のエンジニアからのアドバイス

初心者が陥りやすい罠を一つだけ共有します。それは「すべてをTerraform化しようとしないこと」です。

  • 推奨: 頻繁に更新されるチームのメインダッシュボードや、標準化されたアラート定義はTerraformで管理する。
  • 非推奨: 個人の調査用スクラッチパッドや、一時的な分析用ダッシュボードまでTerraform化すること。

「定常的で重要なもの」をコード化し、「一時的なもの」はGUIに任せる。 このバランス感覚こそが、現場を疲弊させない最大の秘訣です。

さあ、今日から「ポチポチ作業」を卒業し、Gitの履歴と共に成長するダッシュボード運用を始めてみてください。あなたの運用の質が、劇的に変わるはずです。

何か詰まったら、いつでも聞いてください。設計思想から実装の泥臭い部分まで、一緒に解き明かしていきましょう。

タイトルとURLをコピーしました