CPUUtilization告警持续处于INSUFFICIENT_DATA状态,如何基于目标组CPU利用率实现自动扩缩容?
嘿,我来帮你搞定这个问题!你遇到的CloudWatch告警一直显示INSUFFICIENT_DATA,大概率是告警的指标维度或者配置没选对——毕竟Auto Scaling Group(ASG)默认监控的是实例级CPU,但你要的是目标组的CPU使用率,得调整配置才行。下面一步步给你拆解解决方法:
先搞懂告警没数据的核心原因
你得先排查这几个关键点:
- 指标选错了:CloudWatch里的
CPUUtilization是EC2实例的专属指标,和目标组无关;你要找的是Application Load Balancer Target Groups分类下的TargetGroupCPUUtilization指标 - 目标组无健康实例:如果目标组里的实例没注册成功、状态不健康,或者压根没有实例,CloudWatch自然收不到有效数据
- 统计周期不匹配:目标组的CPU指标默认是5分钟聚合一次,如果你的告警选了1分钟周期,就会出现数据不足的情况
正确配置基于目标组CPU的自动扩缩容步骤
1. 创建针对目标组CPU的CloudWatch告警
打开CloudWatch控制台,按以下步骤操作:
- 进入「告警」→「创建告警」
- 在「选择指标」页面,找到「Application Load Balancer」→「Target Groups」,选中你的目标组后,找到
TargetGroupCPUUtilization指标(别选成EC2的CPUUtilization!) - 配置阈值:比如扩容告警设为「CPU使用率>70%,持续5分钟」,缩容告警设为「CPU使用率<30%,持续5分钟」
- 配置告警动作:扩容告警关联ASG的「添加实例」策略,缩容告警关联「移除实例」策略
2. 验证ASG与扩缩容策略的关联
- 进入EC2控制台的「Auto Scaling Groups」页面,找到你的ASG,切换到「扩缩容策略」标签
- 确认你创建的两个目标组CPU告警已经正确绑定到对应的扩缩容策略上(比如扩容告警绑定“增加X个实例”的策略,缩容绑定“减少X个实例”的策略)
3. 确认目标组与实例的状态
- 进入「目标组」页面,检查目标组内的实例状态都是「健康」,且有实际流量在运行(没有流量的话,CPU使用率可能一直为0,但至少会有数据点)
- 可以手动在实例上模拟负载,比如执行
stress --cpu 1命令让CPU跑满,过几分钟去CloudWatch的「指标」页面搜索目标组的TargetGroupCPUUtilization,看看有没有数据生成
额外注意事项
- 目标组的
TargetGroupCPUUtilization是所有健康实例的平均CPU使用率,如果只有1台实例,那就是单实例的CPU;多实例的话取平均值 - 别把EC2实例的CPU指标和目标组的搞混,这是两个完全独立的指标集
- 如果还是没数据,检查EC2实例的CloudWatch Agent是否正常运行(默认EC2会自动上报基础指标,除非你手动禁用了)
内容的提问来源于stack exchange,提问作者user9522155
相关产品推荐
相关产品推荐

