要获取AWS/ECS的平均CPU利用率和最大CPU利用率,可以使用AWS SDK来调用CloudWatch API获取相关指标的统计数据。以下是一个使用AWS SDK for Python (Boto3)来实现的示例代码:
import boto3
from datetime import datetime, timedelta
# 初始化AWS SDK的CloudWatch客户端
cw_client = boto3.client('cloudwatch')
# 定义查询的时间范围,这里查询最近60分钟的数据
end_time = datetime.utcnow()
start_time = end_time - timedelta(minutes=60)
# 定义查询的统计周期和指标名称
period = 60 # 每分钟一个数据点
metric_name = 'CPUUtilization'
# 定义查询的维度,这里使用ECS服务和集群的维度
dimensions = [
{
'Name': 'ServiceName',
'Value': 'your-ecs-service-name'
},
{
'Name': 'ClusterName',
'Value': 'your-ecs-cluster-name'
}
]
# 查询平均CPU利用率
response_avg = cw_client.get_metric_statistics(
Namespace='AWS/ECS',
MetricName=metric_name,
Dimensions=dimensions,
StartTime=start_time,
EndTime=end_time,
Period=period,
Statistics=['Average']
)
# 查询最大CPU利用率
response_max = cw_client.get_metric_statistics(
Namespace='AWS/ECS',
MetricName=metric_name,
Dimensions=dimensions,
StartTime=start_time,
EndTime=end_time,
Period=period,
Statistics=['Maximum']
)
# 提取平均CPU利用率和最大CPU利用率的值
average_cpu_utilization = response_avg['Datapoints'][0]['Average']
max_cpu_utilization = response_max['Datapoints'][0]['Maximum']
# 打印结果
print(f"平均CPU利用率: {average_cpu_utilization}%")
print(f"最大CPU利用率: {max_cpu_utilization}%")
请注意,在代码中需要替换以下参数:
your-ecs-service-name
:替换为你的ECS服务的名称。your-ecs-cluster-name
:替换为你的ECS集群的名称。此示例代码仅查询了最近60分钟的数据,你可以根据需要调整start_time
和end_time
来查询不同的时间范围。