Точки данных пусты при использовании AWS cli на powershell

Я пытаюсь получить статистику для моего экземпляра ec2, используя Powershell. При запуске я просто получаю пустые точки данных. Какие-либо решения?

Код приведен ниже:

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 ответ

Чтобы ответить на вопрос:

Вывод пустых точек данных может возвращаться по многим причинам, но обычно это означает, что в CloudWatch нет данных для ваших заданных входных данных. Убедитесь, что ваши данные верны и что есть данные за данный период времени.

Мне удалось воспроизвести пустые точки данных в следующих сценариях, чтобы дать вам представление о том, как это может привести к пустым результатам:

  • Изменил письмо в моем InstanceId, чтобы оно не совпадало ни с одним из моих экземпляров; это не ошибка, просто создает пустой набор данных.
  • Изменен диапазон времени до того, как Экземпляр был в рабочем состоянии.
  • Использовали неверные разрешения в powershell, чтобы у профиля, который я использовал, не было разрешения на просмотр экземпляра, который я запрашивал.

Для чего это стоит, ваш синтаксис действителен. Я проверил ваш точный командлет на одном из моих собственных экземпляров, и он работал нормально. Как только ваш пример заработает, вы можете получить необработанные точки данных, отправив полученную коллекцию в конвейер и проанализировав их. Например, предполагая, что вывод вашего командлета находится в $datapoints:

$datapoints | % { $_.Datapoints.Average }

Чтобы ответить на комментарий:

Синтаксис -Dimension @{Name = "InstanceId"; Value = "08b290d4ab98f79c3"} действительно для этого командлета. Это выглядит так странно, потому что командлет Get-CWMetricStatistics ожидает, что вы передадите коллекцию объектов AWS.CloudWatch.Model.Dimension.

В этом примере достаточно хеш-таблицы с совпадающими именами свойств (Name и Value), но данный пример @{'InstanceId'='08b290d4ab98f79c3'} не потому, что в AWS.CloudWatch.Model.Dimension отсутствует параметр "InstanceId".

Фактически, запуск, который возвращает эту ошибку:

Get-CWMetricStatistics: Невозможно связать параметр 'Измерение'. Невозможно создать объект типа "Amazon.CloudWatch.Model.Dimension". Свойство InstanceId не найдено для объекта Amazon.CloudWatch.Model.Dimension. Доступное свойство: [Имя], [Значение]

Также учтите, что передача коллекции хеш-таблиц является допустимым вводом для этого командлета:

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

Дальнейшее чтение:

Документация по AWS PowerShell - Get-CWMetricStatistics

Другие вопросы по тегам