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

如何缩短Cloudwatch周期以快速触发AutoScale?CPU指标周期受限问题

如何缩短CloudWatch指标周期以快速触发Auto Scaling扩容

EC2原生的CPUUtilization指标最小采集周期是1分钟,无法直接调整到更短。要实现亚分钟级的扩容触发,必须通过自定义CloudWatch指标配合Auto Scaling策略来实现,具体步骤如下:

1. 部署自定义指标采集脚本

在需要触发扩容的EC2实例上,运行一个定时采集脚本,按你需要的亚分钟间隔(比如10秒)向CloudWatch发送固定值为1的自定义指标。脚本需具备CloudWatch写入权限,实例角色要包含cloudwatch:PutMetricData权限。

示例Shell脚本(后台运行,每10秒发送一次值为1的指标):

#!/bin/bash
# 后台运行脚本:nohup ./scale-trigger.sh &
INSTANCE_ID=$(curl -s http://169.254.169.254/latest/meta-data/instance-id)
while true; do
    aws cloudwatch put-metric-data \
        --namespace "CustomAutoScaleTriggers" \
        --metric-name "ImmediateScaleSignal" \
        --dimensions InstanceId=$INSTANCE_ID \
        --value 1 \
        --unit Count \
        --storage-resolution 1
    sleep 10
done

--storage-resolution 1参数指定指标存储精度为1秒,支持亚分钟级的告警周期设置。

2. 创建亚分钟级CloudWatch告警

进入CloudWatch控制台,创建基于上述自定义指标的告警:

  • 选择指标命名空间CustomAutoScaleTriggers下的ImmediateScaleSignal
  • 设置告警周期为10秒(或你需要的亚分钟值)
  • 阈值设为1,触发条件选择「连续1个数据点满足阈值」
  • 配置告警状态为「In Alarm」时触发后续动作

3. 关联Auto Scaling扩容策略

将上述CloudWatch告警关联到你的Auto Scaling组的扩容策略:

  • 在Auto Scaling组的「告警」选项中,添加该CloudWatch告警
  • 设置扩容规则(比如每次扩容1台实例,冷却时间设为0或极短时间)

注意事项

  • 自定义亚分钟指标会产生额外的CloudWatch存储费用,需根据使用量评估成本
  • 脚本需设置为实例启动时自动运行(比如通过systemd配置守护进程),避免实例重启后脚本停止
  • 权限需最小化:不要给实例CloudWatchFullAccess,而是创建仅允许PutMetricData到指定命名空间的IAM策略

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 20:35:24