我在使用以下代码获取EBS卷的IOPs统计数据时遇到了一些问题:
Get-CWMetricList -Namespace AWS/EC2 |Select-Object * -Unique
Get-CWMetricList -Namespace AWS/EBS |Select-Object * -Unique
$StartDate = (Get-Date).AddDays(-3)
$EndDate = Get-Date
$ReadIOPS = Get-CWMetricStatistics -Namespace "AWS/EC2" -MetricName "DiskReadOps" -UtcStartTime $StartDate -UtcEndTime $EndDate -Period 300 -Statistics @("Average")
$ReadIOPS.Datapoints.Count
$ReadIOPS = Get-CWMetricStatistics -Namespace "AWS/EBS" -MetricName "VolumeReadOps" -UTCStartTime $StartDate -UTCEndTime $EndDate -Period 300 -Statistics @("Average")
$ReadIOPS.Datapoints.Count
前2行显示命名空间/度量标准名称是正确的。 Rest应显示AWS / EC2名称空间中的第一个查询获取数据,但AWS / EBS命名空间中的第二个查询不会。
最终目标是添加一个-dimension标记并获取特定容量的所有读/写iops。这就是AWS / EC2命名空间无法工作的原因,因为我需要指定卷ID而不是实例ID。
任何想法为什么我没有在后一个查询中获取任何数据点?
事实证明,EBS统计数据需要指定Vol ID,尽管这不会被调出或错误。
在故障排除时,我已经删除了尽可能宽的网络/返回基础知识。在修复问题时添加回来:
即。这很有效
$Volume = 'vol-blah'
$dimension1 = New-Object Amazon.CloudWatch.Model.Dimension
$dimension1.set_Name("VolumeId")
$dimension1.set_Value($Volume)
$ReadIOPS = Get-CWMetricStatistics -Namespace "AWS/EBS" -MetricName "VolumeReadOps" -UTCStartTime $StartDate -UTCEndTime $EndDate -Period 300 -Statistics @("Average") -Dimension $dimension1
$ReadIOPS.Datapoints.Count