ElcamyTECH
Articles
Antigravity

Claude CodeでGrafanaダッシュボードを自動構築してみた|REST APIだけでセンサー監視画面を一発生成

TechAntigravityClaude CodeGrafanaGrafana2026/03/09

はじめに

「Grafanaでダッシュボードを作りたいけど、パネルの追加・データソース設定・閾値設定…GUIでポチポチやるのが地味に面倒」と感じたことはありませんか? IoTや製造業の現場では、設備や環境のセンサーデータを可視化したいニーズが増えています。しかし、計測項目が多くなるほどダッシュボードの構築は手間がかかり、顧客ごとのカスタマイズ対応も含めると工数が膨らみがちです。 本記事では、AnthropicのClaude Codeを使って、GrafanaのREST APIを叩き、ターミナルからダッシュボードを一発生成した過程をお伝えします。GUIを一切触らずに、データソースの追加からセンサー監視ダッシュボードの構築まで完了しました。

メモ

そもそもClaude Codeとは? Claude Codeは、Anthropicが提供するターミナルベースのAIコーディングエージェントです。チャットで指示を出すと、ファイルの読み書き、コマンド実行まで自律的にこなしてくれます。 今回のポイントは、Claude Codeがcurlコマンドを自ら組み立ててGrafana APIを叩けること。「こういうダッシュボードを作って」と自然言語で伝えるだけで、APIリクエストのJSON構築から実行まで一気通貫で行えます。

この記事でわかること

  • Claude CodeからGrafana REST APIを使ってダッシュボードを自動生成する手順
  • Service Account Token の発行とAPIアクセスの設定方法
  • IoTセンサーデータを想定したダッシュボード設計の実例
  • MCP(mcp-grafana)の現状と、REST API直接方式を選んだ理由

前提条件

  • Grafana(本記事ではv12.4.0 / Homebrew版)
  • Claude Code(Anthropic APIキーが必要)
  • macOS

今回作ったもの

IoT機器のセンサーデータ監視を想定したGrafanaダッシュボードです。

image

パネルタイプ内容
Engine Temperature時系列グラフエンジン温度(閾値: 黄60°C / 赤80°C)
Fuel Pressure時系列グラフ燃料圧力(メイン/サブライン)
Current StatusゲージRPM(閾値付きゲージ)
Atmospheric Pressure数値表示気圧(hPa)
Sensor Alert Historyテーブルアラート履歴

5秒ごとに自動リフレッシュされ、リアルタイム監視のイメージを掴めるデモになっています。

Step 1:Grafanaのインストールと起動

M1 MacBook Pro(メモリ8GB)でもGrafanaは軽快に動作します。Homebrew経由なら2コマンドで完了です。

brew install grafana
brew services start grafana

これだけで http://localhost:3000 にアクセスできます。初期ログインは admin / admin です。 Grafana自体のメモリ使用量は約256MB程度。Docker不要で、M1 Macでも全く問題ありません。

Step 2:Service Account Tokenの発行

Claude CodeからGrafana APIを操作するには、認証トークンが必要です。GrafanaのService Account機能を使います。

メモ

なぜService Accountか? Grafana v12では、従来のAPI Keys(/api/auth/keys)は非推奨となり、Service Account Token が推奨されています。Service Accountはユーザーとは独立した「サービス用アカウント」で、ロールベースの権限管理が可能です。

Claude Codeに発行を依頼

実はこのステップもClaude Codeに任せられます。「GrafanaのService Account Tokenを発行して」と伝えたところ、以下の2つのAPIを自動で実行してくれました。

# 1. Service Accountの作成
curl -s -X POST http://localhost:3000/api/serviceaccounts \
  -H "Content-Type: application/json" \
  -u "admin:<password>" \
  -d '{"name":"claude-code","role":"Admin"}'
 
# 2. トークンの発行
curl -s -X POST http://localhost:3000/api/serviceaccounts/<id>/tokens \
  -H "Content-Type: application/json" \
  -u "admin:<password>" \
  -d '{"name":"claude-code-token"}'

返却された glsa_ で始まるトークンを使って、以降のAPI操作を行います。

Step 3:データソースの追加

ダッシュボードにはデータソースが必要です。今回はデモ目的なので、Grafana組み込みのTestDataデータソースを使いました。外部DBのセットアップは不要です。

curl -s -X POST http://localhost:3000/api/datasources \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "TestData",
    "type": "grafana-testdata-datasource",
    "access": "proxy",
    "isDefault": true
  }'

TestDataはランダムウォーク(時系列のランダムデータ)を生成できるため、センサーデータのシミュレーションに使えます。 本番環境では、ここをPostgreSQL、InfluxDB、Prometheusなどに差し替えます。

Step 4:ダッシュボードの一発生成

ここが本記事のメインです。 Claude Codeに「IoTセンサーデータの監視ダッシュボードを作って。温度、圧力、回転数ゲージ、気圧、アラート履歴のパネルを含めて」と伝えたところ、Grafana Dashboard APIに対するJSON一式を自動生成し、curlで実行してくれました。

APIリクエストの構造

Grafanaの POST /api/dashboards/db エンドポイントに、ダッシュボード定義のJSONを送信します。

curl -s -X POST http://localhost:3000/api/dashboards/db \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "dashboard": {
      "title": "Ship Sensor Dashboard - Demo",
      "panels": [ ... ],
      "time": {"from": "now-6h", "to": "now"},
      "refresh": "5s"
    }
  }'

Claude Codeが自動設計したパネル構成

注目すべきは、Claude Codeがセンサー監視に適したパネルタイプを自動選択した点です。

データ特性選択されたパネルタイプ理由
時系列データ(温度・圧力)timeseriesトレンドの推移が視覚的にわかる
瞬時値(RPM)gauge現在値と危険域が一目でわかる
環境値(気圧)stat大きな数字で現在値を強調
ログ(アラート)table履歴を時系列で一覧表示

さらに、温度パネルには閾値(60°Cで黄色、80°Cで赤) が自動設定され、RPMゲージにも正常域・注意域・危険域の色分けが入っていました。「センサー監視」と伝えただけで、実運用で必要な閾値設定まで考慮してくれるのは、Claude Codeの文脈理解力の強さです。

レイアウト

パネルの配置(gridPos)もClaude Codeが自動で計算しています。

┌──────────────────────┬──────────────────────┐
│  Engine Temperature  │   Fuel Pressure      │  ← 時系列(上段)
│  (timeseries)        │   (timeseries)       │
├────────┬─────────────┼──────────────────────┤
│ RPM    │ Atmospheric │ Alert History        │  ← 現在値+履歴(下段)
│(gauge) │  (stat)     │   (table)            │
└────────┴─────────────┴──────────────────────┘

GUIで同じ作業をやると、パネル追加→データソース選択→クエリ設定→閾値設定→レイアウト調整…で30分〜1時間はかかります。Claude Codeなら数分です。

MCP(mcp-grafana)は使えなかったのか?

Grafana公式が提供するmcp-grafana(MCP: Model Context Protocol サーバー)を使えば、Claude CodeからGrafanaをネイティブに操作できるはずでした。今回も最初はMCP経由を試みました。

試したこと

  1. go install github.com/grafana/mcp-grafana/cmd/mcp-grafana@latest でバイナリをインストール
  2. Claude Codeの settings.json にMCPサーバーとして登録
  3. 環境変数 GRAFANA_URLGRAFANA_SERVICE_ACCOUNT_TOKEN を設定

結果

mcp-grafanaバイナリ自体は正常に起動するものの、Claude CodeのDeferred Toolsとして認識されませんでした。MCP接続の初期化タイミングの問題か、バージョン互換の問題か、解決できず(mcp-grafana v0.11.2 / Claude Code 2026年3月時点)。。。

REST API直接方式で十分だった

ただ結果的には、Grafana REST APIをcurlで直接叩く方式で全く問題ありませんでした。むしろこの方式には以下のメリットがあるように感じます。

観点MCP方式REST API直接方式
セットアップGo/npxインストール+設定不要(curlのみ)
デバッグMCPサーバーのログ確認が必要curlのレスポンスで即判断
再現性バージョン依存?curlコマンドをそのまま再利用可
学習コストMCPの理解REST APIのドキュメントだけでOK

MCPは今後の課題としつつ、現時点ではREST API直接方式が実用的でした。

実務への応用:本番環境ではどう使う?

今回はTestDataでデモしましたが、実務で使う場合のステップも整理しておきます。

データソースの差し替え

# PostgreSQLの例
curl -s -X POST http://localhost:3000/api/datasources \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Sensor DB",
    "type": "postgres",
    "url": "your-db-host:5432",
    "database": "sensor_data",
    "user": "grafana_reader",
    "secureJsonData": {"password": "xxx"},
    "jsonData": {"sslmode": "require"}
  }'

InfluxDB、Prometheus、Amazon Redshiftなど、Grafanaが対応するデータソースであれば同じ要領で差し替え可能です。

アラート設定の追加

Grafana v12のUnified Alertingを使えば、閾値超過時にSlack/メール/PagerDutyへ通知を飛ばせます。これもREST APIで設定可能です。センサーデータの異常検知をリアルタイムで通知したい場合に有用です。

顧客・用途ごとのダッシュボードを量産

Claude Codeが生成したダッシュボードJSONをGitリポジトリで管理すれば、ダッシュボードのバージョン管理が実現します。テンプレートをベースに、表示項目やフィルタ条件を変えた顧客別ダッシュボードを量産するのも容易です。環境の再構築やステージング→本番の昇格も、curl 1発で完了します。

まとめ

Claude Code × Grafana REST APIの組み合わせで、ダッシュボード構築の全工程をターミナルから自動化できました。

工程手動(GUI)Claude Code
Service Account作成UI操作curl自動実行
データソース追加UI操作curl自動実行
ダッシュボード構築30分〜1時間数分
閾値・レイアウト設定パネルごとに手動JSON一括設定

特に印象的だったのは、「センサー監視ダッシュボード」と伝えただけで、パネルタイプの選択・閾値の設定・レイアウトの計算まで適切に行われた点です。Grafanaの機能を熟知したエンジニアが設計したかのような、実用的なダッシュボードが自然言語の指示から生成されました。 計測項目が多い現場や、顧客ごとにカスタマイズが必要なプロダクトでは、ダッシュボード構築の工数削減に大きく貢献できるアプローチです。 GUIでの手作業に時間を取られている方は、ぜひClaude Code × REST APIの組み合わせを試してみてください。一度体験すると、もうGUIには戻れなくなるかもしれません。

参考URL

Elcamyについて

AI・データエンジニアリング・クラウドを中心に、技術で事業課題を解決しています。 お気軽にご相談ください。