AWS EC2实例平均CPUUtilization CloudWatch不显示其余功能正常问题
问题修复方案
核心错误原因
- 指标维度配置错误:AWS EC2的
CPUUtilization监控指标默认绑定的维度是InstanceId(实例ID),代码中错误使用AMIID作为查询维度,CloudWatch无法匹配到对应实例的监控数据。 - 查询时间范围硬编码失效:代码中将起止时间固定写为2021年7月17日,但运行日志显示接口实际调用时间为2021年7月18日00:26:57,查询的时间范围内无对应监控数据,因此返回空的Datapoints字段。
- 可选优化:固定sleep无法适配实例启动耗时波动的场景,建议先判断实例进入running状态后再等待监控数据上报。
修正后的核心代码片段
# 获取创建完成的实例ID instance_id = instance[0].id # 等待实例进入运行状态(替代部分固定等待时间) instance[0].wait_until_running() # 等待基础监控5分钟粒度的数据上报(t2实例默认开启基础监控,粒度为5分钟) time.sleep(300) client = boto3.client('cloudwatch') # 动态生成UTC时间的查询范围,避免硬编码时间失效 end_time = datetime.utcnow() start_time = end_time - timedelta(minutes=10) response = client.get_metric_statistics( Namespace='AWS/EC2', MetricName='CPUUtilization', Dimensions=[ { 'Name': 'InstanceId', 'Value': instance_id }, ], StartTime=start_time, EndTime=end_time, Period=300, Statistics=[ 'Average', ], Unit='Percent' )
内容的提问来源于stack exchange,提问作者Decjk
相关产品推荐
相关产品推荐

