在PowerShell上使用AWS cli时,数据点为空

时间:2017-06-07 04:21:03

标签: powershell amazon-web-services amazon-ec2 amazon-cloudwatch aws-powershell

我正在尝试使用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

1 个答案:

答案 0 :(得分:0)

回答这个问题:

空数据点输出可以返回许多原因,但通常意味着CloudWatch中没有针对您给定输入的数据。确保输入正确并且在给定时间段内有数据。

我能够在以下场景中重现空数据点,让您了解它如何产生空结果:

  • 在我的InstanceId上更改了一封信,以便它与我的任何实例都不匹配;这不会产生错误,只会生成空数据集。
  • 将时间范围更改为实例处于运行状态之前。
  • 在PowerShell中使用了不正确的权限,因此我使用的配置文件没有权限查看我要求的实例。

对于它的价值,您的语法是有效的。我针对我自己的一个实例测试了你的确切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"})

进一步阅读:

AWS PowerShell Documentation - Get-CWMetricStatistics