AWS Cloudwatch Heartbeat Alarm

У меня есть приложение, которое каждую минуту помещает метку Cloudwatch в AWS. Это должно действовать как сердцебиение, поэтому я знаю, что приложение живое.

Теперь я хочу поставить будильник на этот показатель, чтобы уведомить меня, если сердцебиение остановится. Я попытался выполнить это, используя различные статистические данные о тревоге в секундах, включая "средний" и "выборки данных" и установил порог срабатывания тревоги менее 1 за определенный период. Однако во всех случаях, если мое приложение умирает и перестает сообщать о сердцебиении, сигнал тревоги переходит только в состояние "Недостаточно данных" и никогда не переходит в состояние "Тревога".

Я понимаю, что могу отправить уведомление в состояние "Недостаточно данных", но я хочу, чтобы это отображалось как сигнал тревоги. Возможно ли это в Cloudwatch?

Спасибо,

Matt

Ответ 1

Вместо того, чтобы вставлять пользовательскую метрику в Cloudwatch, рассмотрите:

Нажимайте сообщение на тему SNS на той же периодической основе, что и вы, и настройте монитор CloudWatch для темы SNS NumberOfMessagesPublished metric. Если количество сердечных сокращений падает ниже ожидаемого значения для указанного вами периода времени, независимо от того, из-за того, что приложение потерпело крах или произошло сбой сервера, метрика перейдет в состояние "Тревога".

Ответ 2

Я думаю, что тревога, поступающая в состояние "Недостаточно данных", связана с тем, как обрабатываются отсутствующие данные. Поскольку doc утверждает:

Подобно тому, как каждый аварийный сигнал всегда находится в одном из трех состояний, каждая конкретная точка данных, сообщаемая CloudWatch, относится к одной из трех категорий:

  • Не нарушать (в пределах порога)
  • Нарушение (нарушение порога)
  • Отсутствует

Вы можете указать, как аварийные сигналы обрабатывают отсутствующие точки данных. Выберите, следует ли обрабатывать отсутствующие точки данных как:

  • отсутствует (тревога оглядывается назад вовремя, чтобы найти дополнительные точки данных)
  • notBreaching (обрабатывается как точка данных, находящаяся в пределах порога)
  • нарушение (рассматривается как точка данных, которая нарушает порог)
  • ignore (Текущее состояние тревоги сохраняется)

Поведение по умолчанию отсутствует.

Итак, я предполагаю, что указание отсутствующих точек данных как нарушение сделало бы трюк:)

Ответ 3

Для одного приложения вам необходимо установить аварийный сигнал "Недостаточно данных". Я играю с решением @BestPractices (fooobar.com/questions/828690/...), и все еще приходится сталкиваться с проблемой наличия "Недостаточно данных" вместо "Тревога", насколько я знать. Я не уверен, что что-то пропущу, но я понимаю, что он попадает в недостаточные данные, потому что нечего подсчитывать/анализировать. Если у вас есть "галочка" каждые 1 минута и создайте будильник "ниже 1 тика", то, если приложение не отправит ни одного тика, у будильника будет недостаточно данных. Если бы было "половина галочки" (что, конечно же, невозможно), тогда он перейдет в тревогу, потому что у него будут какие-либо данные для анализа (поэтому у него не будет "недостаточных данных" ) и в то же время это будет ниже порога.

Если у вас есть, например, n apps (n > 1), которые отправляют сообщение SNS, чтобы показать, что они живы, и вы установите будильник для состояния "ниже n", тогда он перейдет в состояние "Тревога", если одно из приложений умрет (но снова Недостаточно данных, если все умрут).