Назад | Перейти на главную страницу

Тревога AWS Cloudwatch срабатывает преждевременно

Я создал сигнал тревоги, чтобы остановить экземпляр, и отправил мне электронное письмо, если он бездействовал слишком долго (средняя загрузка ЦП <2% в течение 3 часов). Однако в ходе тестирования я заметил, что экземпляр был остановлен через 1 час. Прилагаю отчет из электронного письма:

Alarm Details:

Name: Stop

Description: Created from EC2 Console

State Change: INSUFFICIENT_DATA -> ALARM

Reason for State Change: Threshold Crossed: 2 datapoints were less than the threshold (2.0). 

The most recent datapoints: http:// 0.0425, 0.038363636363636364.

Timestamp: Thursday 14 March, 2013 22:20:11 UTC

AWS Account: xxxxxxxxxxxx

Threshold:
The alarm is in the ALARM state when the metric is LessThanThreshold 2.0 for 3600 seconds.

Monitored Metric:
MetricNamespace: AWS/EC2
MetricName: CPUUtilization
Dimensions: InstanceId = i-xxxxxxx
Period: 3600 seconds
Statistic: Average
Unit: not specified

State Change Actions:
OK:
ALARM: arn:aws:sns:us-east-1:xxxxxxxxxxxx:NotifyMe
INSUFFICIENT_DATA:

Я не понимаю, почему он переходит в состояние ALARM всего через 1 час (3600 с), когда я устанавливаю его на 3 часа (10800 с). Для моего теста экземпляр был остановлен на весь день. Как только я создал будильник, я запустил его и ничего не сделал с экземпляром. Учитывает ли он все эти часы простоя при вычислении средней загрузки ЦП за 3 часа?

Я хотел бы, чтобы сигнал тревоги позволял экземпляру оставаться в живых в течение 3 часов, прежде чем он остановит экземпляр. Есть лучший способ сделать это?

В вашем электронном письме четко указано, что ваш будильник срабатывает через 3600 секунд.

Порог: сигнал тревоги находится в состоянии СИГНАЛИЗАЦИЯ, когда метрика меньше порога 2,0 в течение 3600 секунд.

Должна быть возможность установить "EvaluationPeriods". При этом сигнализатор сообщает, сколько раз нужно оценить конкретную метрику, которую вы хотите проверить. Поэтому в вашем случае вы должны установить это значение на 3, и будильник будет проверять каждый час, чтобы узнать, является ли метрика LessThanThreshold 2.0. Тревога сработает, если в течение 3 часов подряд среднее значение из 3 взятых баллов будет меньше 2.0.

Также следует отметить, что состояние вашего сигнала тревоги изменилось с INSUFFICIENT_DATA -> ALARM. Я заметил эту активность с некоторыми сигналами тревоги, над которыми я работаю.

В моем случае:

  • У меня есть сигнал тревоги, который останавливает экземпляр, когда LessThanThreshold 5.0 для CPUUtilization в течение 1 часа с 6 периодами оценки, по одному каждые 10 минут.
  • Когда сигнал тревоги получает новые данные после INSUFFICIENT_DATA, кажется, что мой сигнал тревоги переходит в состояние ALARM, поскольку я думаю, что он обрабатывает INSUFFICIENT_DATA как 0,0 (не цитируйте меня по этому поводу, это именно то, что я предполагаю на основе некоторых тестов, которые я Бег).
  • Несмотря на то, что первая взятая точка может составлять 25,6%, последние 5 точек были INSUFFICIENT_DATA (возможно 0,0?), Поэтому среднее значение составляет около 4,2, что меньше порогового значения 5,0.
  • Затем срабатывает мой будильник, хотя технически прошло всего 10 минут с «реальными» данными.

Чтобы смягчить это, я настроил сценарий так, чтобы всякий раз, когда экземпляр запускался, тревога создавалась с ним, и когда когда-либо срабатывала тревога, она удалялась после остановки экземпляра, которому он назначен.

Похоже, вы неправильно настроили сигнализацию, как указано в письме выше, вы настроили его для срабатывания, если LessThanThreshold 2.0 в течение 3600 секунд.

  • Чтобы решить эту проблему, сделайте следующее: -

  • В консоли CloudWatch Management просто выберите сигнал тревоги, вы найдете ниже пороговое значение, объяснение которого показано на изображении ниже порогового значения: CPUUtilization> = 70 в течение 5 минут.

  • Щелкните правой кнопкой мыши по сигналу тревоги и измените его в соответствии с вашими потребностями.

  • Вы можете использовать as-description-alarm api, чтобы убедиться в информации о ваших сигналах тревоги, также как ссылка ниже Описание API