mcpField
C
cloud-integrations

cloud-integrations

github.com/grafana云与 DevOps2954.2k 次安装1 天前更新
代码仓库

关于 cloud-integrations

介绍如何配置 Grafana Cloud Integrations,通过托管导出器或 AWS Firehose 收集云服务指标。帮助运维人员接入 AWS、Azure、Confluent Cloud 和经过认证的 Prometheus 格式端点,并验证及调整采集数据。

主要功能

  1. 01支持 AWS、Azure 和 Confluent 托管导出器
  2. 02通过 AWS Firehose 摄取指标与日志
  3. 03接入通用认证 Prometheus 端点
  4. 04检查集成状态与数据
  5. 05预配置仪表板和告警规则
  6. 06指标筛选指南

适用场景

  1. 01在 Grafana Cloud 收集 AWS CloudWatch 指标
  2. 02通过 Firehose 流式传输 CloudWatch 指标和日志
  3. 03监控 Azure 或 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 - 托管导出器
  • All integrations - 完整目录,包括 Linux、MySQL、Kubernetes 等

第 2 步:AWS CloudWatch 集成

选项 A:托管导出器(轮询)

托管导出器每 60s 抓取一次 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、Cluster ID
  3. 导出器每 60s 抓取一次 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 - 应非零且保持稳定
  • 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 凭据错误重新输入凭据;确认使用的是 Metrics API 密钥(而非 Kafka 密钥)
No metrics found选择的命名空间/资源类型错误在集成设置中添加该命名空间
Scrape timeout网络限制确保 Grafana Cloud 的 IP 地址可以访问云提供商 API

AWS 专属:CloudWatch API 速率限制

CloudWatch GetMetricData 有速率限制。如果资源数量很多,请启用 Metric Streams (选项 B),而不要通过 API 轮询,以避免触发限流。


步骤 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 技能。


参考资料

评论

支持 Markdown