CNK イベントのブース展示用アプリ。
自然言語でプロンプトを入力すると、AWS Bedrock (Claude) が Grafana ダッシュボードを自動生成する。
flowchart LR
Browser(["ブラウザ"])
subgraph local["ローカル / Docker"]
Next["Next.js\n:3000"]
Agent["Agent\n:8001\nStrands SDK"]
MCP["mcp-grafana\n:8000"]
Grafana["Grafana\n:3001"]
Prometheus["Prometheus\n:9090"]
NodeExp["Node Exporter\n:9100"]
end
Bedrock(["AWS Bedrock\n(Claude)"])
Browser -->|HTTP| Next
Next -->|HTTP| Agent
Agent -->|API| Bedrock
Agent -->|SSE| MCP
MCP -->|HTTP API| Grafana
Grafana -->|scrape| Prometheus
Prometheus -->|scrape| NodeExp
| サービス | ポート | 説明 |
|---|---|---|
| Next.js | 3000 | フロントエンド |
| Agent | 8001 | Strands Agent (Bedrock + MCP) |
| mcp-grafana | 8000 | Grafana MCP サーバー |
| Grafana | 3001 | ダッシュボード |
| Prometheus | 9090 | メトリクス収集 |
| Node Exporter | 9100 | ホストメトリクス |
cp .env.local.example .env.local.env.local に設定が必要な変数:
| 変数名 | 説明 |
|---|---|
AWS_REGION |
Bedrock のリージョン(例: us-east-1) |
BEDROCK_MODEL_ID |
使用するモデル ID(クロスリージョン推論プロファイル) |
GRAFANA_SERVICE_ACCOUNT_TOKEN |
Grafana サービスアカウントトークン(手順は下記) |
AWS 認証について: agent コンテナは
~/.awsをマウントしているため、AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEYの直接指定は不要。
aws configureまたはaws sso loginでローカルのプロファイルを設定しておくこと。
モデル ID の例:
# 速い・安い(ブース向き推奨)
us.anthropic.claude-3-haiku-20240307-v1:0
# 能力重視
us.anthropic.claude-3-5-sonnet-20241022-v2:0
anthropic.claude-xxx形式はオンデマンドでは使えない。クロスリージョン推論プロファイル(us.プレフィックス)を使うこと。
docker compose up -d grafana prometheus node-exporterGrafana でサービスアカウントトークンを発行(初回のみ):
- http://localhost:3001 を開く(admin / admin)
- Administration → Service accounts → Add service account
- Role: Editor → Create
- Add service account token → Generate → コピー
.env.localのGRAFANA_SERVICE_ACCOUNT_TOKENに貼り付け
docker compose --env-file .env.local up -d mcp-grafana agentbun install
bun devブラウザで http://localhost:3000 を開く。
# 全サービス起動
docker compose --env-file .env.local up -d
# ログ確認
docker compose logs -f agent
# 停止
docker compose down
# フロントエンド
bun dev # 開発サーバー
bun build # ビルド
bun start # 本番起動bun build
bun start環境変数は EC2/ECS のタスク定義などに設定する(.env.local は不要)。