amazon-web-services - 对象列表的 AWS CloudWatchMetricStatistic
问题描述
我有一个 instanceId 列表,我想将其用作 get-cwmetricstatistic 的输入,以便输出汇总的 cloudwatch 指标列表。我有获取instanceIds 列表的代码,并且我有用于拉回单个instanceId 的摘要统计信息的代码。我正在努力在 foreach-object 中构建维度,以便正确传递 instanceID。请参阅下面的示例代码...
我知道这可以获取 InstanceIds:
$instances = Get-EC2Instance -AccessKey $AccessKey -Region us-east-1 -SecretKey $SecretKey -SessionToken $SessionToken |
Select-Object -ExpandProperty Instances |
Select-Object InstanceId
而且我知道这可以获取单个 instanceID 的摘要统计信息:
$dimension = New-Object Amazon.CloudWatch.Model.Dimension
$dimension.set_Name("InstanceId")
$dimension.set_Value("i-xxxxxxxxxxxxxx")
$data = Get-CWMetricStatistic -AccessKey $AccessKey -Dimension $dimension -MetricName CPUUtilization -Namespace AWS/EC2 -Period 86400 -Region us-east-1 -SecretKey $SecretKey -SessionToken $SessionToken -Statistic Average -UtcEndTime 2019-09-28T04:00:00Z -UtcStartTime 2019-09-22T04:00:00Z
foreach($datapoint in $data.Datapoints){
Write-Host $dimension.Value $datapoint.Timestamp " " $datapoint.Average
}
以下是尝试遍历不起作用的 instanceIds 列表的代码:
$instances = Get-EC2Instance -AccessKey $AccessKey -Region us-east-1 -SecretKey $SecretKey -SessionToken $SessionToken |
Select-Object -ExpandProperty Instances |
Select-Object InstanceId |
ForEach-Object {
$dimension = New-Object Amazon.CloudWatch.Model.Dimension
$dimension.set_Name("InstanceId")
$dimension.set_Value($instanceId)
$data = Get-CWMetricStatistic -AccessKey $AccessKey -Dimension $dimension -MetricName CPUUtilization -Namespace AWS/EC2 -Period 86400 -Region us-east-1 -SecretKey $SecretKey -SessionToken $SessionToken -Statistic Average -UtcEndTime 2019-09-28T04:00:00Z -UtcStartTime 2019-09-22T04:00:00Z
foreach($datapoint in $data.Datapoints){
Write-Host $dimension.Value $datapoint.Timestamp " " $datapoint.Average
}
}
解决方案
解决方案:
$instances = Get-EC2Instance -AccessKey $AccessKey -Region us-east-1 -SecretKey $SecretKey -SessionToken $SessionToken |
Select-Object -ExpandProperty Instances |
ForEach-Object {
$dimension = New-Object Amazon.CloudWatch.Model.Dimension
$dimension.Set_Name("InstanceId")
$dimension.Set_Value($_.InstanceId)
$data = Get-CWMetricStatistic -AccessKey $AccessKey -Dimension $dimension -MetricName CPUUtilization -Namespace AWS/EC2 -Period 86400 -Region us-east-1 -SecretKey $SecretKey -SessionToken $SessionToken -Statistic Average -UtcEndTime 2019-09-28T04:00:00Z -UtcStartTime 2019-09-20T04:00:00Z
foreach($datapoint in $data.Datapoints){
Write-Host $dimension.Value $datapoint.Timestamp "CPUUtilization-Average" $datapoint.Average
}
}
推荐阅读
- javascript - 从对象函数访问对象属性
- c# - '4' 和 '4' 在主键中冲突,但在文件系统中没有冲突
- postsharp - 不同系统上的异常消息不同
- testing - Allures 测试显示历史趋势并发送邮件
- scenekit - Metal 2:MetalKit (MTKView) 和 SceneKit 互操作性
- flutter - 颤振:第 33 行:sed:找不到命令
- javascript - 通过类名更改按钮背景
- web - S3 和 Route 53 上静态网站的子文件夹
- javascript - 从 php 文件请求日期/时间时没有输出
- swift - Swift 嵌套可选值类型(结构)和属性修改