cloud-integrations
grafana/skills
AWS, Azure 및 기타 클라우드 제공업체를 위한 Grafana Cloud 연동 기능을 설정하고, 구성하며, 문제를 해결합니다. 사용자가 AWS CloudWatch 연동, Azure Monitor 설정, Confluent Cloud 가시성 기능 구성, Grafana 연동 모듈 설치, 호스티드 익스포터 설정, CloudWatch 로그를 위한 AWS Firehose 활용, 또는 클라우드 연동 관련 문제 해결을 요청할 때 이 기능을 사용합니다. “AWS CloudWatch”, “Azure Monitor”, “Confluent integration”, “cloud integration”, “hosted exporter”, “AWS Firehose”, “install”와 같은 표현이 포함될 때 작동합니다.
...모든 것을 확장하십시오cloud-integrations에 대하여
cloud-integrations는 자체 에кспор터를 운영하지 않고도 클라우드 제공업체의 모니터링 API를 Grafana 스택에 연결하여, 해당 클라우드 제공업체용 Grafana Cloud 인테그레이션을 설정하고 구성하며 문제를 해결하는 데 도움을 줍니다. 이 도구는 제공업체 측 API를 대신 스크랩하여 데이터를 Grafana 스택으로 전송하는 호스팅형 에кспор터나, 더 낮은 지연 시간을 위한 스트리밍 경로를 통해 클라우드 메트릭과 로그를 Grafana Cloud에 수집하는 문제를 해결해 줍니다.
이 문서에서는 호스팅형 에кспор터인 AWS CloudWatch(YACE를 통한 모든 네임스페이스), Azure Monitor(Azure Monitor API를 통한 연동), Confluent Cloud(Confluent Metrics API를 통한 Kafka 메트릭), 그리고 일반적인 Prometheus 형식의 HTTP 엔드포인트를 비롯해, Kinesis Firehose를 통해 거의 실시간으로 CloudWatch 메트릭과 로그를 전송하는 AWS Firehose 리시버에 대한 내용을 다룹니다. 또한 Grafana Cloud의 Connections 메뉴를 통한 설정 방법, 최소 필요한 AWS IAM 정책(GetMetricData, GetMetricStatistics, ListMetrics, tag:GetResources, EC2 describe 권한), Terraform을 활용한 폴링 방식과 Firehose 스트리밍 방식의 비교, Monitoring Reader 역할이 할당된 Azure 서비스 프린시펄 생성 방법, MetricsViewer 역할이 할당된 Confluent Metrics API 키 생성 방법 등 단계별 설명도 제공합니다. 이어서 확인 방법도 안내하는데, Explore 메뉴에서 인테그레이션의 작업 라벨을 조회하거나 Prometheus 엔드포인트를 통해 라벨 도착 여부를 확인하고, Connections > [Integration] > Status 메뉴에서 마지막 성공적인 스크랩 시간, 데이터 시리즈 수, 오류율과 같은 인테그레이션 상태 지표를 확인할 수 있습니다. 또한 사전에 구축된 대시보드와 알림 기능도 소개합니다. 모든 자격 증명(AWS 액세스 키, Azure 클라이언트 시크릿, Confluent 키, API 토큰)은 최소 권한 원칙에 따라 표준 설정 가이드 형태로, 장소 표시자가 포함된 상태로 제공됩니다.
이 자료는 Grafana Cloud에 클라우드 텔레메트리를 도입하려는 플랫폼 엔지니어, SRE, 옵저버빌리티 팀을 대상으로 합니다. 주요 활용 사례로는 AWS CloudWatch 연동, Azure Monitor 설정, Confluent Cloud 옵저버빌리티 구성, 폴링 방식과 Firehose 스트리밍 방식 중 적절한 방법 선택, 문제가 발생한 인테그레이션의 문제 해결 등이 있습니다.
FAQ
어떤 클라우드 제공업체와 데이터 소스가 지원되나요?
AWS CloudWatch(YACE를 통한 연동), Azure Monitor, Confluent Cloud, 그리고 일반적인 Prometheus 형식의 HTTP 엔드포인트를 위한 호스팅형 에кспор터와, Kinesis Firehose를 통해 거의 실시간으로 CloudWatch 메트릭과 로그를 전송하는 AWS Firehose 리시버가 지원됩니다.
어떤 AWS 권한이 필요한가요?
cloudwatch:GetMetricData, GetMetricStatistics, ListMetrics, tag:GetResources, ec2:DescribeInstances 및 DescribeRegions 권한이 포함된 최소 IAM 정책을 IAM 사용자나 크로스 계정 롤에 할당해야 합니다.
호스팅형 에кспор터와 Firehose 리시버의 차이점은 무엇인가요?
호스팅형 에кспор터는 약 60초 간격으로 CloudWatch API를 폴링하므로 약 1~5분의 지연 시간이 발생합니다. 반면 Firehose 리시버는 Kinesis Firehose를 통해 CloudWatch Metric Streams와 Logs 구독 데이터를 스트리밍하므로 거의 실시간으로 더 낮은 지연 시간에 데이터를 전송할 수 있습니다.
인테그레이션이 제대로 작동하는지 어떻게 확인하나요?
Grafana Explore에서 인테그레이션의 작업 라벨을 조회하고, 스택의 Prometheus 라벨 엔드포인트를 통해 라벨 도착 여부를 확인한 다음, Connections > [Integration] > Status 메뉴에서 마지막 성공적인 스크랩 시간이 약 2분 이내인지, 안정적인 데이터 시리즈 수가 0이 아닌지, 오류율이 0%인지와 같은 상태 지표를 확인하면 됩니다.
Azure와 Confluent에 필요한 자격 증명은 무엇인가요?
Azure의 경우, 대상 구독에 Monitoring Reader 역할이 할당된 서비스 프린시펄(테넌트, 클라이언트 ID, 클라이언트 시크릿)이 필요합니다. Confluent의 경우, MetricsViewer 역할이 할당된 Metrics API 키(Кafka 키가 아님)가 필요합니다.
Grafana Cloud Integrations connect cloud provider monitoring APIs to your Grafana stack withoutrunning your own exporters. Hosted exporters scrape cloud APIs on your behalf and push metricsto 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
/metricsendpoint behind auth
AWS Firehose receiver - ingests CloudWatch Logs and Metrics Streams pushed via KinesisFirehose (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:
- Create an IAM user or role with the policy above
- Generate an access key pair (for IAM user) or configure cross-account role assumption
- In Grafana Cloud: Connections > AWS > Configure hosted exporter
- Enter: AWS Access Key ID, Secret Access Key, region(s), CloudWatch namespaces to scrape
- 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 ReceiverCloudWatch Logs (subscription filter) → Kinesis Firehose → Grafana Cloud Firehose ReceiverSetup:
- In Grafana Cloud: Connections > AWS > Firehose receiver
- Grafana provides an HTTPS endpoint URL and access token
- In AWS, create a Kinesis Firehose delivery stream:
- Destination: HTTP endpoint
- Endpoint URL: (from step 2)
- Access key: (from step 2)
- Content encoding: GZIP
- Create a CloudWatch Metric Stream pointing at the Firehose stream:
- Output format:
OpenTelemetry 1.0 - Namespaces: select or include all
- Output format:
- 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 principalaz 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:
- Connections > Azure > Configure hosted exporter
- Enter: Tenant ID, Client ID, Client Secret, Subscription IDs
- Select resource types to monitor (VMs, App Services, AKS, SQL, etc.)
- 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:
- In Confluent Cloud: Environment > API Keys (or Cloud API Keys for organization-level)
- Create a Metrics API key (not a Kafka API key) with
MetricsViewerrole - Note the API Key and Secret
Setup in Grafana Cloud:
- Connections > Confluent > Configure hosted exporter
- Enter: Confluent API Key, API Secret, Environment ID(s), Cluster ID(s)
- 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 minutesSeries count- should be non-zero and stableError 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:
- Do not edit the provisioned dashboards directly (they may be overwritten on updates)
- Duplicate the dashboard (Dashboard settings > Save as copy)
- Edit the copy
Step 7: Troubleshoot integration failures
Hosted exporter not receiving data:
# Check the integration status via Grafana Cloud APIcurl -s -H "Authorization: Bearer <STACK_ID>:<API_TOKEN>" \ "https://integrations-api.grafana.net/api/v1/integrations" | \ jq '.integrations[] | {name, status, lastScrapeTime, errorMessage}'
Common errors:
| Error | Cause | Fix |
|---|---|---|
AccessDenied (AWS) | IAM policy missing permissions | Add required actions to the IAM policy |
AuthorizationFailed (Azure) | Service principal missing role | Grant Monitoring Reader on the subscription |
401 Unauthorized (Confluent) | Wrong API credentials | Re-enter credentials; confirm Metrics API key (not Kafka key) |
No metrics found | Wrong namespace/resource type selected | Add the namespace in integration settings |
Scrape timeout | Network restriction | Ensure 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 filtersdiscovery: - 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
- Grafana Cloud Connections documentation
- AWS CloudWatch integration
- Azure Monitor integration
- YACE (Yet Another CloudWatch Exporter)
- CloudWatch Metric Streams
모든 파일
0개 파일cloud-integrations 설치
해당 스킬 파일들을 다운로드하여 .claude/skills/ 디렉터리에 압축을 풀어 저장해 주세요.
ZIP 다운로드저장소를 클론하고 스킬 파일을 프로젝트에 복사하세요.
git clone https://github.com/grafana/skills/blob/main/skills/grafana-cloud/cloud-integrations/SKILL.md # Copy SKILL.md to your .claude/skills/ directory
복사





집
