Фильтр метрик Amazon cloudwatch по имени экземпляра

Я пытаюсь сделать сигнал об использовании процессора для экземпляров, некоторые экземпляры являются обычными ec2, а некоторые сделаны в автомасштабировании. Я ищу какую-то метрику/параметр, который может фильтровать экземпляры по тегу: Имя. Возможно ли, если да, то как? если нет, как я могу сделать это по-другому? Спасибо,


person orgar    schedule 08.11.2015    source источник
comment
пожалуйста, добавьте тег ec2, чтобы его было легче искать.   -  person phoenix    schedule 08.11.2015


Ответы (2)


Насколько я знаю, тег не является частью размеров EC2. Параметры для EC2:
Параметры и показатели AWS EC2 < /а>

Я могу придумать одно решение:
1) получить релевантные экземпляры с помощью фильтра тегов с помощью команды awscli:
Describe-Instances. Вы также можете отфильтровать выходные данные, если, например, не хотите видеть все поля. Но, по крайней мере, сохраните основную информацию, такую ​​как идентификатор экземпляра, тег, тип экземпляра и т. д. Вы также можете использовать любой язык AWS SDK API для достижения того же.
2) Затем получите метрики экземпляра, используя list-metrics. Это вернет все экземпляры.
3) Теперь используйте только метрики инстансов, которые вы получили в 1). Вы можете сравнить, используя instance-id. Это цикл в списке, полученный 1) и сравнение элемента с элементами в 2) с использованием идентификатора экземпляра. Отобразите информацию, если они совпадают. Вы можете поместить результаты 2) в dict, чтобы ускорить процесс, т. Е. O (n) вместо O (n ^ 2).

Если кто-то может дать еще лучшее решение, то это хорошо.

person phoenix    schedule 08.11.2015
comment
Спасибо за ответ, тут проблема с автомасштабированием, экземпляры могут динамически меняться. - person orgar; 08.11.2015
comment
Из того, что я знаю, вы можете перечислить метрики автомасштабирования отдельно, используя пространство имен: AWS/AutoScaling. Вы также можете перечислить метрики EC2, используя пространство имен AWS/EC2. Таким образом, вы можете получить метрики в этих двух группах отдельно и отфильтровать, чтобы получить только экземпляры в EC2, а не в автомасштабировании. Итак, у вас будет 2 списка метрик. Один для автоматического масштабирования и один для неавтоматического масштабирования. Затем вы делаете то же самое, что указано в ответе. Отфильтруйте только релевантные экземпляры. - person phoenix; 08.11.2015
comment
Если ваш вопрос состоит в том, чтобы динамически отображать это, напишите скрипт, который будет делать это каждую минуту или с любой желаемой степенью детализации и отображать результаты. - person phoenix; 08.11.2015

Вы можете фильтровать по имени, даже если идентификаторы экземпляров изменятся из-за автомасштабирования, они все равно будут доступны для использования. Я не вижу, какой язык вы используете, однако в Java это будет что-то вроде.

// Create custom filter e.g name

Filter filterByName = new Filter();
filterByName.withName("tag:Name").withValues("Instance_1");

// Create Describe Instances Request
DescribeInstancesRequest instanceRequest = new DescribeInstancesRequest()
        .withFilters(
          filterByName);

Обратите внимание, что когда вы используете пользовательский фильтр, например, имя, вы должны использовать ключевое слово тега, показанное выше. В AWS есть встроенные фильтры, которые называются атрибутами ресурсов, и их можно увидеть на странице эта ссылка. Однако, если экземпляры изменяются динамически из-за автоматического масштабирования, я бы рекомендовал делать это по имени. Этот сообщение в блоге может быть полезно для вас.

person i'i'i'i'i'i'i'i'i'i    schedule 19.08.2018