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", тогда он перейдет в состояние "Тревога", если одно из приложений умрет (но снова Недостаточно данных, если все умрут).
Ответ 4
Обработайте пропущенные данные как порог нарушения (шаг 4)
Проверьте это: https://cloudonaut.io/dead-mans-switch-with-cloudwatch/
![enter image description here]()