Generated banner for Cloud Integrations
Generated logo for Cloud Integrations

Cloud Integrations

Grafana LabsOfficialPublished by Grafana Labs

  • Skill
  • Tool integration
  • Cloud and DevOps
  • Apache-2.0
  • No issues found

From the author

Set up, configure, and troubleshoot Grafana Cloud integrations for AWS, Azure, and other cloud providers. Use when the user asks to connect AWS CloudWatch, set up Azure Monitor, configure Confluent Cloud observability, install a Grafana integration, set up hosted exporters, use AWS Firehose for CloudWatch logs, or troubleshoot a cloud integration. Triggers on phrases like "AWS CloudWatch", "Azure Monitor", "Confluent integration", "cloud integration", "hosted exporter", "AWS Firehose", "install integration", "cloud metrics", or "cloud logs".
— the description by Grafana Labs

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill provides instructions for setting up and troubleshooting Grafana Cloud integrations. It covers hosted exporters for AWS CloudWatch, Azure Monitor, and Confluent Cloud, as well as the AWS Firehose receiver for streaming metrics and logs. The guide includes necessary IAM and service principal permissions, configuration steps within the Grafana Cloud interface, verification methods, and strategies for managing costs through metric filtering.

What it does

  • Connects cloud provider monitoring APIs to Grafana Cloud using hosted exporters.
  • Configures AWS CloudWatch integrations via API polling or Kinesis Firehose streaming.
  • Sets up Azure Monitor integration using service principals with Monitoring Reader roles.
  • Integrates Confluent Cloud metrics using API keys with the MetricsViewer role.
  • Provides methods to verify integration health and data arrival in Grafana.
  • Offers guidance on troubleshooting common authorization and configuration errors.

When to use it

  • When you need to ingest metrics from AWS, Azure, or Confluent Cloud into Grafana.
  • When you need to troubleshoot existing cloud integration connectivity or data gaps.
  • When you need to set up AWS Firehose for streaming CloudWatch logs and metrics.
  • When you need to filter metrics to manage data volume and costs.

Advantages

  • Eliminates the need to run and maintain your own infrastructure exporters.
  • Includes pre-built dashboards and alert rules for supported services.
  • Provides clear paths for both polling-based and streaming-based data ingestion.
  • Offers structured troubleshooting steps for common API and permission issues.

Usage examples

“How do I set up the AWS CloudWatch integration in Grafana Cloud?”
The agent provides the required IAM policy, steps to generate access keys, and instructions to configure the hosted exporter within the Grafana Cloud Connections menu.
“My Azure Monitor integration is not showing data.”
The agent guides you through verifying the service principal permissions, checking the integration status in the Connections menu, and reviewing common error causes.
“How can I reduce costs for my AWS CloudWatch integration?”
The agent explains how to filter by specific namespaces or resource tags and suggests using Adaptive Metrics to aggregate unused label dimensions.
“How do I set up AWS Firehose for CloudWatch logs?”
The agent provides the architecture overview, the required Kinesis Firehose delivery stream configuration, and the steps to link it to the Grafana Cloud Firehose receiver.

Install

  1. Download the skill as a ZIP:

    https://mp-staging.autogineer.com/agent-skills/grafana/cloud-integrations/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip cloud-integrations.zip -d .agents/skills

Documentation by Grafana Labs

Grafana Cloud Integrations

Grafana Cloud Integrations connect cloud provider monitoring APIs to your Grafana stack without running your own exporters. Hosted exporters scrape cloud APIs on your behalf and push metrics to your Grafana Cloud stack.

Supported hosted exporters:

  • AWS CloudWatch - all CloudWatch namespaces via YACE (Yet Another CloudWatch Exporter)

  • Azure Monitor - Azure resource metrics via the Azure Monitor API

  • Confluent Cloud - Kafka cluster metrics via the Confluent Metrics API

  • Generic HTTP endpoint - any Prometheus-format /metrics endpoint behind auth

AWS Firehose receiver - ingests CloudWatch Logs and Metrics Streams pushed via Kinesis Firehose (near real-time, lower latency than API scraping).


Step 1: Navigate to Connections

In Grafana Cloud: Connections > Add new connection (or Connections > Cloud Provider).

Available paths:

  • AWS CloudWatch - hosted exporter + optional Firehose receiver

  • Azure Monitor - hosted exporter

  • Confluent Cloud - hosted exporter

  • All integrations - full catalog including Linux, MySQL, Kubernetes, etc.


Step 2: AWS CloudWatch integration

Option A: Hosted exporter (polling)

The hosted exporter scrapes CloudWatch API every 60s. Latency: ~1-5 minutes.

Required IAM permissions (minimum):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "cloudwatch:GetMetricData",
        "cloudwatch:GetMetricStatistics",
        "cloudwatch:ListMetrics",
        "tag:GetResources",
        "ec2:DescribeInstances",
        "ec2:DescribeRegions"
      ],
      "Resource": "*"
    }
  ]
}

Setup steps:

  1. Create an IAM user or role with the policy above

  2. Generate an access key pair (for IAM user) or configure cross-account role assumption

  3. In Grafana Cloud: Connections > AWS > Configure hosted exporter

  4. Enter: AWS Access Key ID, Secret Access Key, region(s), CloudWatch namespaces to scrape

  5. Grafana provisions the exporter and begins scraping within 2-3 minutes

Supported namespaces: EC2, RDS, ELB/ALB, S3, Lambda, ECS, SQS, SNS, ElastiCache, Kinesis, DynamoDB, and 50+ others.

Option B: AWS Firehose receiver (streaming)

Near-real-time metrics and logs via CloudWatch Metric Streams and CloudWatch Logs subscriptions.

Architecture:

CloudWatch Metric Streams → Kinesis Firehose → Grafana Cloud Firehose Receiver
CloudWatch Logs (subscription filter) → Kinesis Firehose → Grafana Cloud Firehose Receiver

Setup:

  1. In Grafana Cloud: Connections > AWS > Firehose receiver

  2. Grafana provides an HTTPS endpoint URL and access token

  3. In AWS, create a Kinesis Firehose delivery stream:

    • Destination: HTTP endpoint

    • Endpoint URL: (from step 2)

    • Access key: (from step 2)

    • Content encoding: GZIP

  4. Create a CloudWatch Metric Stream pointing at the Firehose stream:

    • Output format: OpenTelemetry 1.0

    • Namespaces: select or include all

  5. For logs: add a CloudWatch Logs subscription filter pointing at the Firehose stream

Terraform for Firehose setup:

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
    }
  }
}

Step 3: Azure Monitor integration

Required Azure permissions:

Create a service principal with the Monitoring Reader role on the subscription(s) to monitor.

# 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

Setup in Grafana Cloud:

  1. Connections > Azure > Configure hosted exporter

  2. Enter: Tenant ID, Client ID, Client Secret, Subscription IDs

  3. Select resource types to monitor (VMs, App Services, AKS, SQL, etc.)

  4. The exporter begins scraping within 2-3 minutes

Supported resource types: Virtual Machines, App Service Plans, AKS, Azure SQL, CosmosDB, Storage Accounts, Event Hubs, Service Bus, Application Gateway, and others.


Step 4: Confluent Cloud integration

Required Confluent API credentials:

  1. In Confluent Cloud: Environment > API Keys (or Cloud API Keys for organization-level)

  2. Create a Metrics API key (not a Kafka API key) with MetricsViewer role

  3. Note the API Key and Secret

Setup in Grafana Cloud:

  1. Connections > Confluent > Configure hosted exporter

  2. Enter: Confluent API Key, API Secret, Environment ID(s), Cluster ID(s)

  3. The exporter scrapes the Confluent Metrics API every 60s

Available metrics: Consumer lag, broker request rates, partition counts, replication lag, active controller count, and cluster-level health metrics.


Step 5: Verify the integration is working

# 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_")))'

The integration status is also visible in: Connections > [Integration name] > Status

Integration health indicators:

  • Last successful scrape - should be within the last 2 minutes

  • Series count - should be non-zero and stable

  • Error rate - should be 0%


Step 6: Pre-built dashboards and alerts

Every integration installs a set of pre-configured dashboards and alert rules automatically.

Find installed dashboards:

  • Dashboards > Browse > folder named after the integration (e.g. "AWS CloudWatch")

Find installed alert rules:

  • Alerting > Alert rules > filter by datasource or folder

Modify without losing updates:

  1. Do not edit the provisioned dashboards directly (they may be overwritten on updates)

  2. Duplicate the dashboard (Dashboard settings > Save as copy)

  3. Edit the copy


Step 7: Troubleshoot integration failures

Hosted exporter not receiving data:

# 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}'

Common errors:

ErrorCauseFix
AccessDenied (AWS)IAM policy missing permissionsAdd required actions to the IAM policy
AuthorizationFailed (Azure)Service principal missing roleGrant Monitoring Reader on the subscription
401 Unauthorized (Confluent)Wrong API credentialsRe-enter credentials; confirm Metrics API key (not Kafka key)
No metrics foundWrong namespace/resource type selectedAdd the namespace in integration settings
Scrape timeoutNetwork restrictionEnsure Grafana Cloud's IPs can reach the cloud provider API

AWS-specific: CloudWatch API rate limiting

CloudWatch GetMetricData has a rate limit. If you have many resources, enable Metric Streams (Option B) instead of API polling to avoid throttling.


Step 8: Reduce costs with metric filtering

Hosted exporters scrape all metrics by default. Filter to reduce series count and cost.

AWS - select specific namespaces: In integration settings, switch from "All namespaces" to specific ones (e.g. EC2, RDS only).

AWS - filter by resource tags:

# In exporter configuration, add tag filters
discovery:
  - type: AWS/EC2
    filters:
      - key: Environment
        values: ["production"]

Azure - select specific resource types: Only enable the resource types you actually have dashboards for.

Use Adaptive Metrics to aggregate away unused label dimensions: See the grafana-cloud/adaptive-metrics skill.


References

Files

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Needs an API key, Needs a command-line tool

Security

No issues found by our static scan· No issues found

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Published by
Grafana Labs
Publisher
Grafana Labs (Official)
Source
grafana/skills · skills/grafana-cloud/cloud-integrations · commit 8fb72a5
Licence
Apache License 2.0 (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced

AutoGineer is not affiliated with or endorsed by Grafana Labs.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download cloud-integrations.zip