我正在尝试使用Powershell获取ec2实例的统计信息。在运行时,我只是获得空数据点。任何解决方案?
代码如下:
Get-CWMetricStatistics -MetricName CPUUtilization
-Dimension @{Name = "InstanceId"; Value = "08b290d4ab98f79c3"}
-StartTime (Get-Date).AddDays(-1)
-EndTime (Get-Date)
-Namespace "AWS/EC2"
-Period 60
-Statistic Average
输出:
Datapoints Label
---------- -----
{} CPUUtilization
答案 0 :(得分:0)
空数据点输出可以返回许多原因,但通常意味着CloudWatch中没有针对您给定输入的数据。确保输入正确并且在给定时间段内有数据。
我能够在以下场景中重现空数据点,让您了解它如何产生空结果:
对于它的价值,您的语法是有效的。我针对我自己的一个实例测试了你的确切cmdlet,它运行正常。一旦您的示例正常工作,您可以通过管道生成的集合并解析它们来获取原始数据点。例如,假设cmdlet的输出位于$datapoints
:
$datapoints | % { $_.Datapoints.Average }
语法-Dimension @{Name = "InstanceId"; Value = "08b290d4ab98f79c3"}
对此cmdlet有效。它看起来很奇怪,因为Get-CWMetricStatistics cmdlet要求您传入AWS.CloudWatch.Model.Dimension个对象的集合。
在此示例中,具有匹配的属性名称(名称和值)的哈希表就足够了,但给定的示例@{'InstanceId'='08b290d4ab98f79c3'}
不会,因为没有' InstanceId' AWS.CloudWatch.Model.Dimension上的参数。
实际上,运行会返回此错误:
Get-CWMetricStatistics:无法绑定参数'维度'。不能 创建类型的对象 " Amazon.CloudWatch.Model.Dimension&#34 ;.未找到Amazon.CloudWatch.Model.Dimension的InstanceId属性 宾语。可用属性为:[名称],[值]
然后还要考虑传递哈希表集合是此cmdlet的有效输入:
-Dimension @(@{Name = "InstanceId"; Value = "i-abcd1234"},@{Name = "InstanceId"; Value = "i-efgh5678"})