3

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

1 回答 1

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'}不会,因为 AWS.CloudWatch.Model.Dimension 上没有“InstanceId”参数。

实际上,运行返回此错误:

Get-CWMetricStatistics:无法绑定参数“维度”。无法创建“Amazon.CloudWatch.Model.Dimension”类型的对象。找不到 Amazon.CloudWatch.Model.Dimension 对象的 InstanceId 属性。可用的属性是: [Name ] , [Value ]

还要考虑传递哈希表的集合是此 cmdlet 的有效输入:

-Dimension @(@{Name = "InstanceId"; Value = "i-abcd1234"},@{Name = "InstanceId"; Value = "i-efgh5678"})

延伸阅读:

AWS PowerShell 文档 - Get-CWMetricStatistics

于 2017-06-27T21:40:54.170 回答