Точки данных пусты при использовании 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"})