Можно ли определить тревогу CloudWatch для метрики по многим параметрам

Я использую python и boto для показателей cloudwatch. Я хотел бы иметь возможность определить сигнал тревоги для MetricName, который будет активен для всех других измерений.

Например, у меня есть метрика в пространстве имен sandbox с MetricName из MemoryUsage и InstanceId из i-xxx. Можно ли определить один сигнал тревоги, который будет запускаться для MemoryUsage для всех InstanceId измерений?


person jberryman    schedule 21.11.2012    source источник


Ответы (1)


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

In [1]: import boto

In [2]: cw = boto.connect_cloudwatch()

In [3]: cw.list_metrics(metric_name='CPUUtilization')
Out[3]: 
[Metric:CPUUtilization,
 Metric:CPUUtilization,
 Metric:CPUUtilization,
 Metric:CPUUtilization]

In [4]: l = _

In [5]: for m in l:
   ...:     print m.name, m.dimensions
   ...: 
CPUUtilization {u'ImageId': [u'ami-1b814f72']}
CPUUtilization {u'InstanceId': [u'i-366c4354']}
CPUUtilization {}
CPUUtilization {u'InstanceType': [u'm1.large']}

Вы можете видеть здесь четыре отдельных показателя, связанных с metric_name CPUUtilization. Первый имеет размерность всех экземпляров, которые используют этот конкретный AMI, второй имеет измерение для конкретного экземпляра, который сейчас выполняется, четвертый имеет измерение всех экземпляров определенного типа, но третий не имеет указанного измерения. Эта метрика представляет CPUUtilization во всех моих экземплярах. Так:

In [6]: m = l[2]

In [7]: m.create_alarm(name='cpu_all_instances', comparison='>', threshold=80.0, period=60, evaluation_periods=2, statistic='Average')
Out[7]: MetricAlarm:cpu_all_instances[CPUUtilization(Average) GreaterThanThreshold 80.0]

Этот сигнал тревоги должен сработать, если средняя загрузка ЦП во всех моих экземплярах превышает 80% в течение двух периодов оценки. Вы также можете выбрать другую статистику, например «Максимум», которая будет срабатывать, если максимальное значение загрузки ЦП во всех экземплярах превышает 80% в течение более чем двух периодов оценки.

Я не знаю, ищете ли вы конкретно MemoryUsage или это был просто пример, но я не думаю, что MemoryUsage - одна из доступных метрик CloudWatch.

person garnaat    schedule 22.11.2012
comment
Отлично, спасибо! А еще я научился классному трюку с iPython. И да, метрика использования памяти - это созданная мной специальная метрика. - person jberryman; 22.11.2012
comment
На самом деле у меня есть дополнительный вопрос, если вы не возражаете. w / r / t CPUUtilization без измерения InstanceId: если бы я создавал эту метрику, мне пришлось бы сначала выполнить put_metric_data данных ЦП с метрикой с помощью InstanceId, а затем поместить те же данные в без этого измерения? Или есть лучший способ сделать это? - person jberryman; 26.11.2012
comment
Это неверный ответ! Третья метрика представляет CPUUtilization во всех базах данных RDS. Он НЕ представляет данные EC2. Перейдите на панель облачных часов и введите CPUUtilization, вы увидите разбивку по каждому сегменту. - person rh0dium; 21.03.2014
comment
Не обязательно верно, зависит от ваших разрешений. Обязательно добавьте параметр namespace = 'AWS / EC2' к вызову list_metrics. - person yoshiwaan; 12.02.2015