cloud-integrations について
ホステッドエクスポーターまたはAWS Firehoseを使って、Grafana Cloud Integrationsでクラウド指標を収集する方法を案内します。AWS、Azure、Confluent Cloud、認証付きPrometheus形式エンドポイントの接続から、データ確認や調整までを扱います。
主な機能
- 01AWS、Azure、Confluent向けホステッドエクスポーター
- 02AWS Firehoseによる指標とログの取り込み
- 03認証付きPrometheusエンドポイントの接続
- 04連携状態とデータの確認
- 05事前設定済みダッシュボードとアラートルール
- 06指標フィルタリングのガイダンス
活用シーン
- 01Grafana CloudでAWS CloudWatch指標を収集
- 02FirehoseでCloudWatch指標とログをストリーミング
- 03AzureまたはConfluent Cloudのリソースを監視
- 04連携の健全性確認と指標量の削減
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ grafana/ skills --skill cloud-integrationsインストール後、Claude Code で/cloud-integrationsを入力して読み込まれたか確認します。
詳細
Grafana Cloud 統合
Grafana Cloud 統合を利用すると、自前のエクスポーターを実行せずに、クラウドプロバイダーの監視 API を Grafana スタックに接続できます。ホスト型エクスポーターがユーザーに代わってクラウド API をスクレイプし、Grafana Cloud スタックにメトリクスを送信します。
サポート対象のホスト型エクスポーター:
- AWS CloudWatch - YACE(Yet Another CloudWatch Exporter)を介して、すべての CloudWatch 名前空間に対応
- Azure Monitor - Azure Monitor API を介した Azure リソースのメトリクス
- Confluent Cloud - Confluent Metrics API を介した Kafka クラスターのメトリクス
- 汎用 HTTP エンドポイント - 認証で保護された、Prometheus 形式の任意の
/metricsエンドポイント
AWS Firehose レシーバー - Kinesis Firehose 経由で送信される CloudWatch Logs と Metrics Streams を取り込みます(ほぼリアルタイムで、API スクレイピングより低レイテンシです)。
手順 1:Connections に移動する
Grafana Cloud で、Connections > Add new connection(または Connections > Cloud Provider)を選択します。
利用可能な項目:
- AWS CloudWatch - ホスト型エクスポーター + オプションの Firehose レシーバー
- Azure Monitor - ホスト型エクスポーター
- Confluent Cloud - ホスト型エクスポーター
- すべての統合 - Linux、MySQL、Kubernetes などを含む全カタログ
手順 2:AWS CloudWatch 統合
オプション A:ホスト型エクスポーター(ポーリング)
ホスト型エクスポーターは、60 秒ごとに CloudWatch API をスクレイプします。レイテンシは約 1~5 分です。
必要な IAM 権限(最小限):
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"cloudwatch:GetMetricData",
"cloudwatch:GetMetricStatistics",
"cloudwatch:ListMetrics",
"tag:GetResources",
"ec2:DescribeInstances",
"ec2:DescribeRegions"
],
"Resource": "*"
}
]
}
設定手順:
- 上記のポリシーを適用した IAM ユーザーまたはロールを作成します
- アクセスキーのペアを生成します(IAM ユーザーの場合)。またはクロスアカウントロールの引き受けを設定します
- Grafana Cloud で、Connections > AWS > Configure hosted exporter に移動します
- AWS Access Key ID、Secret Access Key、リージョン、スクレイプする CloudWatch 名前空間を入力します
- Grafana がエクスポーターをプロビジョニングし、2~3 分以内にスクレイピングを開始します
サポート対象の名前空間: EC2、RDS、ELB/ALB、S3、Lambda、ECS、SQS、SNS、ElastiCache、 Kinesis、DynamoDB、その他 50 以上。
オプション B:AWS Firehose レシーバー(ストリーミング)
CloudWatch Metric Streams と CloudWatch Logs サブスクリプションを介して、ほぼリアルタイムのメトリクスとログを取得します。
アーキテクチャ:
CloudWatch Metric Streams → Kinesis Firehose → Grafana Cloud Firehose Receiver
CloudWatch Logs (subscription filter) → Kinesis Firehose → Grafana Cloud Firehose Receiver
設定:
- Grafana Cloud で、Connections > AWS > Firehose receiver に移動します
- Grafana から HTTPS エンドポイント URL とアクセストークンが提供されます
- AWS で Kinesis Firehose 配信ストリームを作成します:
- 宛先:HTTP エンドポイント
- エンドポイント URL:(手順 2 で取得)
- アクセスキー:(手順 2 で取得)
- コンテンツエンコーディング:GZIP
- Firehose ストリームを参照する CloudWatch Metric Stream を作成します:
- 出力形式:
OpenTelemetry 1.0 - 名前空間:選択するか、すべてを含めます
- 出力形式:
- ログの場合は、Firehose ストリームを参照する CloudWatch Logs サブスクリプションフィルターを追加します
Firehose 設定用 Terraform:
resource "aws_cloudwatch_metric_stream" "grafana_cloud" {
name = "grafana-cloud-metrics"
role_arn = aws_iam_role.firehose_role.arn
firehose_arn = aws_kinesis_firehose_delivery_stream.grafana.arn
output_format = "opentelemetry1.0"
# Optionally scope to specific namespaces
# include_filter { namespace = "AWS/EC2" }
# include_filter { namespace = "AWS/RDS" }
}
resource "aws_kinesis_firehose_delivery_stream" "grafana" {
name = "grafana-cloud-stream"
destination = "http_endpoint"
http_endpoint_configuration {
url = var.grafana_firehose_endpoint
access_key = var.grafana_firehose_access_key
name = "Grafana Cloud"
content_encoding = "GZIP"
s3_configuration {
role_arn = aws_iam_role.firehose_role.arn
bucket_arn = aws_s3_bucket.firehose_backup.arn
}
}
}
手順 3:Azure Monitor 統合
必要な Azure 権限:
監視対象のサブスクリプションに対して、Monitoring Reader ロールを持つサービスプリンシパルを作成します。
# Create service principal
az ad sp create-for-rbac --name grafana-cloud-monitoring \
--role "Monitoring Reader" \
--scopes /subscriptions/<SUBSCRIPTION_ID>
# Output: appId (client ID), password (client secret), tenant
Grafana Cloud での設定:
- Connections > Azure > Configure hosted exporter に移動します
- Tenant ID、Client ID、Client Secret、Subscription IDs を入力します
- 監視するリソースタイプ(VM、App Services、AKS、SQL など)を選択します
- エクスポーターは 2~3 分以内にスクレイピングを開始します
サポート対象のリソースタイプ: Virtual Machines、App Service Plans、AKS、Azure SQL、CosmosDB、 Storage Accounts、Event Hubs、Service Bus、Application Gateway など。
手順 4:Confluent Cloud 統合
必要な Confluent API 認証情報:
- Confluent Cloud で、Environment > API Keys(または組織レベルの場合は Cloud API Keys)に移動します
MetricsViewerロールを持つ Metrics API key(Kafka API key ではありません)を作成します- API Key と Secret を控えます
Grafana Cloud での設定:
- Connections > Confluent > Configure hosted exporter に移動します
- Confluent API Key、API Secret、Environment ID(s)、Cluster ID(s) を入力します
- エクスポーターは 60 秒ごとに Confluent Metrics API をスクレイプします
利用可能なメトリクス: コンシューマーラグ、ブローカーのリクエストレート、パーティション数、レプリケーションラグ、アクティブコントローラー数、クラスター単位のヘルスメトリクス。
ステップ 5:連携が機能していることを確認する
# Check in Grafana Explore — query for the integration's job label
# For AWS:
{job="integrations/cloudwatch"}
# For Azure:
{job="integrations/azure-monitor"}
# Check metric arrival (replace with your stack's Prometheus endpoint)
curl -s -H "Authorization: Bearer <USER>:<API_KEY>" \
"https://prometheus-prod-XX-XX-X.grafana.net/api/prom/api/v1/labels" | \
jq '.data | map(select(startswith("aws_") or startswith("azure_")))'
連携のステータスは、Connections > [Integration name] > Status でも確認できます。
連携の健全性を示す指標:
Last successful scrape- 直近 2 分以内である必要がありますSeries count- 0 より大きく、安定している必要がありますError rate- 0%である必要があります
ステップ 6:構築済みのダッシュボードとアラート
各連携をインストールすると、事前設定済みのダッシュボードとアラートルールが自動的にインストールされます。
インストール済みのダッシュボードを見つける:
- Dashboards > Browse > 連携名が付いたフォルダー(例:「AWS CloudWatch」)
インストール済みのアラートルールを見つける:
- Alerting > Alert rules > データソースまたはフォルダーで絞り込む
更新を失わずに変更する:
- プロビジョニングされたダッシュボードを直接編集しないでください(更新時に上書きされる場合があります)
- ダッシュボードを複製します(Dashboard settings > Save as copy)
- コピーを編集します
ステップ 7:連携の失敗をトラブルシューティングする
ホスト型エクスポーターがデータを受信しない場合:
# Check the integration status via Grafana Cloud API
curl -s -H "Authorization: Bearer <STACK_ID>:<API_TOKEN>" \
"https://integrations-api.grafana.net/api/v1/integrations" | \
jq '.integrations[] | {name, status, lastScrapeTime, errorMessage}'
よくあるエラー:
| エラー | 原因 | 解決方法 |
|---|---|---|
AccessDenied(AWS) | IAM ポリシーに必要な権限がない | 必要なアクションを IAM ポリシーに追加する |
AuthorizationFailed(Azure) | サービスプリンシパルにロールがない | サブスクリプションで Monitoring Reader を付与する |
401 Unauthorized(Confluent) | API 認証情報が間違っている | 認証情報を再入力し、Kafka キーではなく Metrics API キーであることを確認する |
No metrics found | 名前空間またはリソースタイプの選択が間違っている | 連携設定で名前空間を追加する |
Scrape timeout | ネットワーク制限 | Grafana Cloud の IP からクラウドプロバイダーの API にアクセスできることを確認する |
AWS 固有:CloudWatch API のレート制限
CloudWatch GetMetricData にはレート制限があります。リソースが多数ある場合は、スロットリングを避けるため、API ポーリングの代わりに Metric Streams(オプション B)を有効にしてください。
ステップ 8:メトリクスのフィルタリングでコストを削減する
ホスト型エクスポーターは、デフォルトですべてのメトリクスをスクレイプします。シリーズ数とコストを削減するには、フィルタリングしてください。
AWS - 特定の名前空間を選択する: 連携設定で、「All namespaces」から特定の名前空間(例:EC2 と RDS のみ)に切り替えます。
AWS - リソースタグでフィルタリングする:
# In exporter configuration, add tag filters
discovery:
- type: AWS/EC2
filters:
- key: Environment
values: ["production"]
Azure - 特定のリソースタイプを選択する: 実際にダッシュボードを使用するリソースタイプのみを有効にしてください。
Adaptive Metrics を使用して、使われていないラベルのディメンションを集約する:
grafana-cloud/adaptive-metrics スキルを参照してください。