mcpField
C
cloud-integrations

cloud-integrations

github.com/grafanaクラウド・DevOps2954.2k 回インストール1 日前に更新
リポジトリ

cloud-integrations について

ホステッドエクスポーターまたはAWS Firehoseを使って、Grafana Cloud Integrationsでクラウド指標を収集する方法を案内します。AWS、Azure、Confluent Cloud、認証付きPrometheus形式エンドポイントの接続から、データ確認や調整までを扱います。

主な機能

  1. 01AWS、Azure、Confluent向けホステッドエクスポーター
  2. 02AWS Firehoseによる指標とログの取り込み
  3. 03認証付きPrometheusエンドポイントの接続
  4. 04連携状態とデータの確認
  5. 05事前設定済みダッシュボードとアラートルール
  6. 06指標フィルタリングのガイダンス

活用シーン

  1. 01Grafana CloudでAWS CloudWatch指標を収集
  2. 02FirehoseでCloudWatch指標とログをストリーミング
  3. 03AzureまたはConfluent Cloudのリソースを監視
  4. 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": "*"
    }
  ]
}

設定手順:

  1. 上記のポリシーを適用した IAM ユーザーまたはロールを作成します
  2. アクセスキーのペアを生成します(IAM ユーザーの場合)。またはクロスアカウントロールの引き受けを設定します
  3. Grafana Cloud で、Connections > AWS > Configure hosted exporter に移動します
  4. AWS Access Key ID、Secret Access Key、リージョン、スクレイプする CloudWatch 名前空間を入力します
  5. 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

設定:

  1. Grafana Cloud で、Connections > AWS > Firehose receiver に移動します
  2. Grafana から HTTPS エンドポイント URL とアクセストークンが提供されます
  3. AWS で Kinesis Firehose 配信ストリームを作成します:
    • 宛先:HTTP エンドポイント
    • エンドポイント URL:(手順 2 で取得)
    • アクセスキー:(手順 2 で取得)
    • コンテンツエンコーディング:GZIP
  4. Firehose ストリームを参照する CloudWatch Metric Stream を作成します:
    • 出力形式:OpenTelemetry 1.0
    • 名前空間:選択するか、すべてを含めます
  5. ログの場合は、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 での設定:

  1. Connections > Azure > Configure hosted exporter に移動します
  2. Tenant ID、Client ID、Client Secret、Subscription IDs を入力します
  3. 監視するリソースタイプ(VM、App Services、AKS、SQL など)を選択します
  4. エクスポーターは 2~3 分以内にスクレイピングを開始します

サポート対象のリソースタイプ: Virtual Machines、App Service Plans、AKS、Azure SQL、CosmosDB、 Storage Accounts、Event Hubs、Service Bus、Application Gateway など。


手順 4:Confluent Cloud 統合

必要な Confluent API 認証情報:

  1. Confluent Cloud で、Environment > API Keys(または組織レベルの場合は Cloud API Keys)に移動します
  2. MetricsViewer ロールを持つ Metrics API key(Kafka API key ではありません)を作成します
  3. API Key と Secret を控えます

Grafana Cloud での設定:

  1. Connections > Confluent > Configure hosted exporter に移動します
  2. Confluent API Key、API Secret、Environment ID(s)、Cluster ID(s) を入力します
  3. エクスポーターは 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 > データソースまたはフォルダーで絞り込む

更新を失わずに変更する:

  1. プロビジョニングされたダッシュボードを直接編集しないでください(更新時に上書きされる場合があります)
  2. ダッシュボードを複製します(Dashboard settings > Save as copy)
  3. コピーを編集します

ステップ 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 スキルを参照してください。


参考資料

コメント