文档在这里...
这是我们的电话
response = cloudwatch.get_metric_statistics(
Namespace='AWS/EC2',
MetricName='CPUUtilization', #reported every 5 minutes
Dimensions=[
{
'Name': 'AutoScalingGroupName',
'Value': 'Celery-AutoScalingGroup'
},
],
StartTime=now - datetime.timedelta(minutes=12),
EndTime=now,
Period=60, #I can't figure out what exactly changing this is doing
Statistics=['Average','SampleCount','Sum','Minimum','Maximum'],
)
这是我们的回应
>>> response['Datapoints']
[ {u'SampleCount': 5.0, u'Timestamp': datetime.datetime(2017, 8, 25, 12, 46, tzinfo=tzutc()), u'Average': 0.05, u'Maximum': 0.17, u'Minimum': 0.0, u'Sum': 0.25, u'Unit': 'Percent'},
{u'SampleCount': 5.0, u'Timestamp': datetime.datetime(2017, 8, 25, 12, 51, tzinfo=tzutc()), u'Average': 0.034, u'Maximum': 0.08, u'Minimum': 0.0, u'Sum': 0.17, u'Unit': 'Percent'}
]
这是我的问题
查看返回列表中的第一个字典。我猜,SampleCount 为 5 是有道理的,因为我们的 Period 是 60(秒),而 CloudWatch 每 5 分钟提供一次“CPUUtilization”指标。
但是,如果我将 Period 更改为 3 分钟(180),我仍然会得到 5 的 SampleCount(我希望为 1 或 2)。
这是一个问题,因为我想要平均值,但我认为它平均 5 个数据点,其中只有 2 个是有效的(开始和结束,对应于最小值和最大值,即某个时间 t 的 CloudWatch 指标和在时间 t+5 分钟下一次报告该指标)。
它使用 3 个中间 0 值数据点对此进行平均,因此平均值为 (Minimum+Maximum+0+0+0)/5
我可以得到最小值,最大值将它们相加并除以 2 以获得更好的读数 - 但我希望有人可以准确地解释“期间”参数的作用。就像我说的,将其更改为 360 并不会更改 SampleCount,但是当我将其更改为 600 时,突然我的 SampleCount 对于一个数据点为 10.0(这确实有意义)。