Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Grafana as Code - Terraformによるダッシュボードとアラートの構成管理...
Search
kazue
November 13, 2025
Technology
28
0
Share
Grafana as Code - Terraformによるダッシュボードとアラートの構成管理 @ HashiTalks:Japan 2025
kazue
November 13, 2025
More Decks by kazue
See All by kazue
AI駆動開発に向けた新しいエンジニアマインドセット
kazue
0
940
わかる!Hashicorp Waypoint | HashiTalks: Japan2023
kazue
0
1k
シングルテナント構成のSaaSのIaCにTerraform Workspacesを導入してみた
kazue
1
2.3k
RDS Proxy, Amazon Kendra, Amazon CodeGuruの紹介 #cmregrowth #reinvent
kazue
0
1.9k
AuroraかRDSどちらを選ぶべきか | Developers.IO 2019 in OSAKA
kazue
0
190k
Codeシリーズで始めるはじめてのCI/CD
kazue
1
550
AKIBA.AWS#14 Terraform v0.12
kazue
0
1.9k
Other Decks in Technology
See All in Technology
インターネットのガバナンスと応用 / Internet Governance and Applications
ks91
PRO
0
110
自動テストだけで リリース判断できるチームへ - 鍵はテストの量ではなくリリース判断基準の再設計にあった / Redesigning Release Criteria for Lightweight Releases
ewa
7
3.4k
巨大プラットフォームを進化させる「第3のROI」
recruitengineers
PRO
2
2.4k
【技術書典20】OpenFOAM(自宅で深める流体解析)流れと熱移動(2)
kamakiri1225
0
370
雑談は、センサーだった
bitkey
PRO
2
200
AgentCore Managed Harness を使ってみよう
yakumo
2
320
音声言語モデル手法に関する発表の紹介
kzinmr
0
160
古今東西SRE
okaru
1
130
サービスの信頼性を高めるため、形骸化した「プロダクションミーティング」を立て直すまでの取り組み
stefafafan
1
230
[Oracle TechNight#99] 生成AI時代のAI/ML入門 ~ AIとオラクルデータベースの関係 (前半)
oracle4engineer
PRO
2
230
小さいVue.jsを30分で作る
hal_spidernight
0
140
Forget technical debt
ufried
0
170
Featured
See All Featured
Google's AI Overviews - The New Search
badams
0
1k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
190
The Pragmatic Product Professional
lauravandoore
37
7.2k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
680
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
450
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
230
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
350
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
65
54k
Mind Mapping
helmedeiros
PRO
1
180
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3k
The SEO identity crisis: Don't let AI make you average
varn
0
460
Optimising Largest Contentful Paint
csswizardry
37
3.7k
Transcript
None
クラスメソッド株式会社 産業支援グループ 製造ビジネステクノロジー部 エンジニア(バックエンド・インフラ) Terraform > EKS(k8s) > 生成AI(Bedrock), サーバーレス(AWS)
Hashicorp Ambassador 2023〜2025 ブログ: https://dev.classmethod.jp/author/kazue-masaki/ 自己紹介: Masaki Kazue (かずえ)
Grafanaリソース(ダッシュボード、アラート)をTerraformを用いて構成管理する際 の、具体的なTips 注意事項 2024年1月〜4月頃に実施したので、情報が古い部分があるかもしれません 本セッションで話すこと 3
1. Grafanaとは 2. プロジェクト背景 3. Terraformを選んだ理由 4. ダッシュボード編 5. アラート編
6. まとめ 目次 4
None
メトリクス、ログ、トレースなどのデータを可視化するためのオープンソースの監視・ 分析プラットフォームです。 主な特徴 多様なデータソースに対応: Prometheus、Elasticsearch、CloudWatch、MySQL など 柔軟なダッシュボード: グラフ、テーブル、ヒートマップなど、様々な形式でデータ を可視化 アラート機能:
Slack、PagerDuty、メールなど様々なチャネルに通知 クエリエディタ: データソースごとに最適化されたクエリエディタを提供 Grafanaとは 6
参考: https://grafana.com/ja/grafana/
None
k8s(EKS)上でアプリケーションを稼働 k8sスタックにおける監視・可視化のデファクトスタンダードである Prometheus + Grafana を採用 AWSのマネージドサービス、Amazon Managed Service for
Prometheus(AMP), Amazon Managed Grafana (AMG) を採用 Grafanaのversionは9.4 EKS AMP AMG メトリクス送信 クエリ アプリケーション 基盤 メトリクス保存 可視化 プロジェクト背景 9
当初: 構成管理ツールを使わず、UIから各種Grafanaダッシュボードを作成していた アラート追加時に以下を実現したいと考え、構成管理ツール導入を検討 変更履歴を残したい 別環境への横展開(Dev→Stg→Prod)を容易にしたい 構成管理ツール導入の背景 10
None
Terraformの経験はすでに十分あった GrafanaやPrometheus(PromQL)には初挑戦 → 構成管理ツールまで未経験のものを採用するのは辛い Grafanaリソースの構成管理ツールとして、他により強い候補が見当たらなかった Grizzly: アラート系リソースが(おそらく)未対応だった(現在は対応済) Grafonnet: experimentalだった(2025/11現在でも依然experimental) Terraformを選んだ理由
12
None
前述の通り、すでにダッシュボードはあった grafanaのダッシュボードはJSONで構造化されており、UIでそのJSONを確認でき る このJSONを使ってterraformリソースとしてはダッシュボード ( grafana_dashboard )のみを定義する Tips1: UIで作り込んで、Terraformに取り込む 14
クエリのテスト PromQLの動作確認が即座にできる 視覚的フィードバック グラフの見た目をリアルタイムで確認できる UIの方が効率的な理由 15
1. GrafanaのUIでダッシュボードを作成 2. 動作を確認 3. UIでJSONモデルを表示、コピー 4. JSONファイルとして保存 5. grafana_dashboard
の config_json にJSONファイルを指定 resource "grafana_dashboard" "main" { folder = var.folder_uid config_json = file("${path.module}/json/main-dashboard.json") overwrite = true } フロー 16
(UIではなく、 )Terraformで作り込むのはつらい 17
Grafanaのダッシュボード定義JSONには、環境固有のIDが含まれることがあり、こ れが複数環境での管理を困難にします。 問題となる要素 datasource UID(unique ID): "datasource": {"uid": "abc123xyz"} Tips2:
JSON内に固有ID値が入らないようにする 18
# 環境固有のUIDを直接参照 "datasource": { "type": "prometheus", "uid": "abc123xyz" } #
環境間で共通のname を指定 "datasource": "AMP" 対策: データソース参照を名前ベースにする 19
GrafanaUIからコピーしたJSONをTerraformに組み込む前に、以下の正規表現変換を 実施 "datasource": \{\n( +)"type": "prometheus",\n( +)"uid": "[a-zA-Z]+"\n( +)\}, ↓
"datasource": "AMP", 正規表現での変換 20
None
Terraformで作成したアラート関連のリソースは、GrafanaのUI上で編集できなくな る (※ ダッシュボード系のリソースは可能) Tips3: Terraformで作ったリソースはUIで変更できない 22
provisioned ラベルが付いているリソースはUIから編集不可 編集ボタンも非表示 UIでの表示 23
手動変更による設定ドリフトを防ぐための仕様 各アラート系Grafanaリソースは、UI以外から作成した場合その作成方法 (Terraform,APIなど)の情報(provenance)を持っている 同じprovenanceからでないと編集できない なぜ編集できないのか 24
provenance? 参考: https://www.google.com/search?q=provenance+%E6%84%8F%E5%91%B3 25
disable_provenance = true を追加すれば可能、とドキュメントには書かれている 実は Terraform→UIはいけるらしいけど? 参考: https://grafana.com/docs/grafana/latest/alerting/set-up/provision-alerting-resources/terraform-provisioning/#enable-editing-resources-in- the-grafana-ui 26
もしかして: AMG(Amazon Managed Grafana)ではできない? ドキュメントには disable_provenance についての言及は無く、 「UI編集不可」としか 書かれていなかった 実際に試したところできなかった
参考: https://docs.aws.amazon.com/ja_jp/grafana/latest/userguide/v9-alerting-setup-provision.html 27
terraform import コマンドや import ブロックが使用可能 ただしコード⇔実際のリソース間に差分があるとreplaceされる → 以降はUIで変更 不可 前述の
disable_provenance の値を true / false 変更しても挙動変わらず UI→Terraformはいけた 28
None
1. UIで作成→インポート の流れで効率化 2. 固有ID値を排除 して環境間の移植性を確保 3. Terraformで作ったアラートリソースはUIで変更不可 という制約を理解する まとめ
今回紹介したTips 30