AWS CloudWatchMetricStatistic для списка объектов - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть список instanceIds, которые я хочу использовать в качестве входных данных в get-cwmetricstatistic для вывода списка сводных метрик cloudwatch.У меня есть код для получения списка instanceIds, и у меня есть код для получения сводной статистики для одного instanceId.Я изо всех сил пытаюсь построить измерение в foreach-объекте, чтобы экземпляры 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 
}
}

1 Ответ

0 голосов
/ 27 сентября 2019

Решение:

$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
}
} 
...