You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何监控ECS集群磁盘使用率?含P90指标需求及AWS方案咨询

AWS ECS实例磁盘使用率监控方案

一、AWS内置指标支持情况

  • EC2实例层面:CloudWatch默认提供DiskSpaceUtilization指标,但仅针对EBS卷,且需要确保EC2实例上的CloudWatch Agent已配置(默认未启用)。该指标可直接统计磁盘使用率,且支持在CloudWatch图表中选择P90作为统计维度,追踪极端使用情况。
  • ECS服务/任务层面:AWS无直接内置的任务级磁盘使用率指标,需结合EC2实例指标或自定义方案实现精细化监控。

二、自定义解决方案(精细化监控场景)

若需监控容器级而非整台EC2实例的磁盘使用,可采用以下方式:

  • 启用ECS容器洞察:开启后会自动收集任务级磁盘指标(如ContainerFileSystemUsage),这些指标可在CloudWatch中查看并计算P90分位数。
  • 自定义指标收集:通过ECS任务附加侧车容器,或在EC2实例上运行脚本,收集磁盘使用数据并推送到CloudWatch自定义指标。

三、Terraform配置示例

1. 配置CloudWatch Agent收集EC2磁盘指标

# 创建CloudWatch日志组存储Agent日志
resource "aws_cloudwatch_log_group" "cw_agent_logs" {
  name              = "/aws/ecs/containerinsights/${var.cluster_name}/cloudwatch-agent"
  retention_in_days = 30
}

# 存储CloudWatch Agent配置的SSM参数
resource "aws_ssm_parameter" "cw_agent_config" {
  name  = "/aws/ecs/containerinsights/${var.cluster_name}/cloudwatch-agent-config"
  type  = "String"
  value = jsonencode({
    logs = {
      logs_collected = {
        files = {
          collect_list = [
            {
              file_path        = "/var/log/cloudwatch-agent.log"
              log_group_name   = aws_cloudwatch_log_group.cw_agent_logs.name
              log_stream_name  = "{instance_id}"
            }
          ]
        }
      }
    },
    metrics = {
      metrics_collected = {
        disk = {
          measurement        = ["used_percent"]
          resources          = ["*"]
          collection_interval = 60
        }
      }
    }
  })
}

# 为ECS集群启用容器洞察
resource "aws_ecs_cluster" "cluster" {
  name = var.cluster_name
  setting {
    name  = "containerInsights"
    value = "enabled"
  }
}

2. 创建CloudWatch仪表盘展示P90磁盘使用率

resource "aws_cloudwatch_dashboard" "ecs_disk_dashboard" {
  dashboard_name = "ECS-Disk-Usage-Dashboard"
  dashboard_body = jsonencode({
    widgets = [
      {
        type   = "metric"
        x      = 0
        y      = 0
        width  = 12
        height = 6
        properties = {
          metrics = [
            ["AWS/EC2", "DiskSpaceUtilization", "InstanceId", "*"]
          ]
          stat   = "p90"
          period = 300
          title  = "EC2 Instance Disk Usage P90"
          yAxis = {
            left = {
              min   = 0
              max   = 100
              label = "Disk Usage %"
            }
          }
        }
      }
    ]
  })
}

四、关键注意事项

  • 确保EC2实例拥有CloudWatchAgentServerPolicy权限,允许推送指标到CloudWatch。
  • 容器洞察需在ECS集群创建时启用,或通过Terraform更新集群配置(如上示例)。
  • P90指标的准确性依赖足够的数据样本,建议设置60秒以内的指标收集间隔。

内容的提问来源于stack exchange,提问作者digit plumber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 18:05:11