Інтеграція з AWS CloudWatch

Перетворіть тривоги CloudWatch на дзвінки, Telegram та ескалацію

Підпишіть тему SNS на WardenPoint через HTTPS. Тривоги CloudWatch надходять як сповіщення SNS, стан тривоги мапиться на пріоритет, стан OK надсилає повідомлення про розв’язання і скасовує ланцюг ескалації, а непідтверджені тривоги ескалюють через голос, Telegram, SMS та e-mail.

Налаштування
SNS HTTPS
Стан
ALARM / OK
Відновлення
Сигнал розв’язання

Будова тривоги CloudWatch

LIVE
CloudWatch → SNS
CPUUtilization > 90% на web-01
WardenPoint
мапь стан · ескалюй · повідомлення про розв’язання
Telegram
Voice call
Email

Налаштування

Три кроки в AWS

SNS не надсилає власних заголовків, тому секрет інтеграції ви вписуєте в адресу підписки — вставляєте один раз, і готово.

  1. 1Крок 1

    Створіть або виберіть тему SNS

    В Amazon SNS створіть тему типу Standard (або скористайтеся тією, що вже обслуговує ваші тривоги). Саме в неї тривоги CloudWatch публікуватимуть події.

    $ SNS › Теми › Створити тему › Standard
  2. 2Крок 2

    Підпишіть WardenPoint через HTTPS

    Додайте підписку з протоколом HTTPS і кінцевою точкою, що дорівнює вашій адресі WardenPoint із дописаним ?secret=<ваш секрет>. WardenPoint підтверджує підписку щойно AWS надсилає рукостискання.

    $ Кінцева точка › https://wardenpoint.com/api/v1/integrations/alerts/…?secret=…
  3. 3Крок 3

    Спрямуйте тривоги на тему

    У кожній тривозі CloudWatch встановіть дію тривоги (і за бажанням дію OK) на публікацію в цю тему SNS. WardenPoint автоматично отримає тривогу при зміні стану.

    $ Тривога › Дії › Надіслати в тему SNS

Формат даних

Конверт сповіщення SNS

SNS загортає тривогу CloudWatch як рядок JSON у полі Message. WardenPoint розгортає його, мапить NewStateValue на активний або розв’язаний стан і дедуплікує за AlarmArn.

SNS → WardenPoint
sns-notification.jsonJSON
// SNS delivers the alarm as a JSON string inside "Message"
{
"Type": "Notification",
"Message": "{\"AlarmName\":\"High CPU on web-01\",\"NewStateValue\":\"ALARM\",\"NewStateReason\":\"Threshold Crossed\",\"Region\":\"us-east-1\",\"AlarmArn\":\"arn:aws:cloudwatch:us-east-1:000000000000:alarm:High CPU on web-01\",\"Trigger\":{\"Namespace\":\"AWS/EC2\",\"MetricName\":\"CPUUtilization\"}}"
}
Розсилка WardenPoint
WardenPoint response202
{
"status": "queued",
"notification_uuid": "notif_8h2k7yQrxJp",
"channels_planned": [
"telegram_voice",
"voice_call",
"email"
],
"escalation_chain_id": "esc_4j2k9bMcvL"
}

Рецепти маршрутизації

Три сценарії для CloudWatch → WardenPoint

Проводьте різні групи тривог або акаунти AWS через окремі інтеграції WardenPoint, кожну підключену до власного ланцюга ескалації.

Пріоритет

ALARM → спершу телефон

Стан ALARM мапиться на 'high' у WardenPoint — спершу телефонний дзвінок, далі голос у Telegram, а на третій хвилині e-mail. INSUFFICIENT_DATA іде на спокійніший канал.

match
NewStateValue = ALARM
→ route
пріоритет: high
Акаунт

Одна тема на акаунт AWS

Створіть окрему інтеграцію WardenPoint для кожного акаунта чи середовища, кожну підписану на тему SNS свого акаунта, щоб продакшн- і тестові тривоги йшли різними ланцюгами.

match
AWSAccountId = prod
→ route
→ ланцюг prod
Відновлення

OK надсилає повідомлення про розв’язання

Коли тривога повертається до OK, SNS публікує знову в ту саму тему. WardenPoint дедуплікує за AlarmArn, позначає сповіщення як розв’язане, надсилає в ланцюг повідомлення про розв’язання і скасовує активну ескалацію.

match
NewStateValue = OK
→ route
→ повідомлення про розв’язання

FAQ CloudWatch

Поширені питання про інтеграцію з CloudWatch

Підписки HTTPS в AWS SNS не вміють додавати заголовок Authorization, тому секрет інтеграції ви вписуєте в адресу кінцевої точки як ?secret=<ваш секрет>. Адреса зберігається лише в конфігурації вашої підписки SNS і передається через TLS. Запит із хибним або відсутнім секретом відхиляється з кодом 401.
Безкоштовний план

Підключіть одну тривогу CloudWatch, перш ніж покладатися на неї

Підпишіть тему SNS, викличте тестову тривогу й прочитайте рядок у журналі аудиту. Без картки. Без ризику для продакшну.

  • Стан мапиться на пріоритет
  • Стан OK скасовує ескалацію
  • Маршрутизація для кожного акаунта