Гид по технологиям

Как создать оповещение CloudWatch для SNS по метрике NumberOfNotificationsDelivered

6 min read AWS Обновлено 22 Nov 2025
Оповещение CloudWatch для SNS по NumberOfNotificationsDelivered
Оповещение CloudWatch для SNS по NumberOfNotificationsDelivered

Введение

CloudWatch собирает метрики для SNS Topics и помогает следить за доставкой сообщений. Метрика NumberOfNotificationsDelivered показывает количество уведомлений, успешно доставленных подписчикам темы. Оповещение (alarm) по этой метрике уведомит вас, когда условие доставки будет выполнено.

Краткие определения:

  • CloudWatch — сервис мониторинга AWS для метрик и логов.
  • SNS (Simple Notification Service) — сервис отправки уведомлений подписчикам.
  • Метрика — числовой показатель (например, NumberOfNotificationsDelivered).
  • Оповещение (alarm) — правило в CloudWatch, которое меняет состояние и может отправлять уведомления.

Important: перед началом убедитесь, что у вас есть SNS Topic в учётной записи и, если вы хотите получать уведомления, подписка на тему подтверждена.

Что нужно иметь готовым

  1. AWS аккаунт (создайте, если ещё нет).
  2. SNS Topic в том же регионе, где будете создавать оповещение.
  3. Подтверждённая подписка на тему, если хотите получать email/SMS/HTTP уведомления.

Что мы сделаем

  1. Зайдём в AWS Console и откроем CloudWatch.
  2. Выберем метрику NumberOfNotificationsDelivered для конкретной темы.
  3. Создадим оповещение с порогом и подключим SNS для уведомлений.
  4. Покажем, как редактировать и удалять оповещение.

Шаги в консоли AWS

  1. Перейдите на страницу входа в AWS и войдите под своей учётной записью.

Иллюстрация входа в AWS

  1. На главной странице консоли найдите CloudWatch через глобальную строку поиска.

Страница входа в систему

  1. Откроется панель управления CloudWatch. В левой навигации выберите «Alarms».

AWS Management Console

  1. Если оповещений ещё нет, нажмите «Create alarm».

Cloudwatch dashboard

  1. Нажмите «Select metric» для выбора метрики.

Alarms page

  1. Найдите метрики по SNS: в поле поиска введите “SNS” и выберите «Topic metrics».

Specify metric and condition

Search SNS Metric

  1. Выберите метрику NumberOfNotificationsDelivered для нужной темы (в примере — тема “test”) и нажмите «Select metric».

Select metric

  1. Укажите условие и порог. В примере выбран тип порога «Static», значение — 1, условие — Greater/Equal. Это значит: если доставлено ≥ 1 сообщений за выбранный интервал, оповещение сработает.

Specify condition

Note: подбирайте период агрегации и статистику (Sum/Maximum/Minimum/Average) в зависимости от цели. Например, для подсчёта всех доставок за период используйте Sum.

  1. На шаге Actions выберите SNS Topic, на который пойдут уведомления, когда оповещение переходит в состояние ALARM.

Select SNS for notification

  1. Дайте оповещению имя и при желании описание, нажмите «Next».

Add alarm name and description

  1. Проверьте конфигурацию и нажмите «Create alarm».

Review alarm configuration

  1. После создания оповещение появится в списке. Первые минуты состояние может быть “Insufficient data”.

Alarm- In Insufficient data state

  1. Когда условие выполнится, оповещение перейдёт в состояние “In alarm” и отправит сообщение на указанный SNS.

Alarm- In Alarm state

  1. Подтверждённая подписка получит уведомление (в примере — email).

Email notification

  1. Для изменения порога выберите оповещение и нажмите Actions -> Edit. В примере порог изменён с 1 на 10.

Edit Alarm

Update Alarm condition

  1. При несоответствии условия оповещение перейдёт в состояние OK.

Alarm- In Ok state

Как удалить оповещение

  1. Выберите оповещение в списке.
  2. Actions -> Delete.

Delete the Alarm

Подтвердите удаление в поп-апе — операция необратима.

Confirm deletion

Important: удаление оповещения нельзя отменить. Убедитесь, что оповещение не используется в автоматизации.

Альтернативные подходы

Ниже приведены распространённые альтернативы созданию оповещений через консоль.

  1. AWS CLI
  • Создать оповещение (пример с минимальными параметрами):
aws cloudwatch put-metric-alarm \
  --alarm-name "sns-delivered-alarm" \
  --metric-name NumberOfNotificationsDelivered \
  --namespace AWS/SNS \
  --statistic Sum \
  --period 300 \
  --evaluation-periods 1 \
  --threshold 1 \
  --comparison-operator GreaterThanOrEqualToThreshold \
  --alarm-actions arn:aws:sns:REGION:ACCOUNT_ID:YourTopic
  • Удалить оповещение:
aws cloudwatch delete-alarms --alarm-names "sns-delivered-alarm"
  1. CloudFormation
  • Используйте ресурс AWS::CloudWatch::Alarm и укажите метрику AWS/SNS, MetricName, Namespace и AlarmActions. CloudFormation даёт управление инфраструктурой как код.
  1. Terraform
  • Ресурс aws_cloudwatch_metric_alarm позволяет управлять alarm через Terraform. Подходит для GitOps и повторяемой инфраструктуры.

Выбор зависит от процесса в команде: консоль для быстрых проверок, CLI/CF/Terraform для автоматизации и CI/CD.

Методология и контроль качества (микро-метод)

  1. Определите цель оповещения: что вы хотите увидеть — факт доставки, отказов или рост задержки.
  2. Выберите правильную статистику (Sum для суммарных доставок, Maximum для пиков).
  3. Подберите период агрегации (1 минута, 5 минут и т.д.).
  4. Настройте уведомления так, чтобы они попадали к ответственному лицу/каналу.
  5. Тестируйте: публикуйте тестовые сообщения и проверяйте переходы состояний (Insufficient data → OK/ALARM).

Чек-листы по ролям

Оператор/DevOps:

  • Есть подтверждённая подписка на SNS.
  • Порог и период проверены на тестовых данных.
  • Названия alarm читаемы и содержат регион/окружение.

Разработчик:

  • Локальный тест публикации сообщений пройден.
  • Логи доставки (если есть) сопоставлены с метрикой.

SRE/On-call:

  • Уведомления приходят в канал, где дежурный их увидит.
  • На каждое оповещение есть runbook с шагами диагностики.

Критерии приёмки

  • Оповещение создано и видно в CloudWatch.
  • При публикации тестового сообщения метрика NumberOfNotificationsDelivered увеличивается и оповещение переходит в ALARM (при подходящем пороге).
  • Уведомление доставляется на указанный SNS Topic и подтверждённую подписку.
  • Конфигурация задокументирована в репозитории инфраструктуры (если применимо).

Отладка и частые проблемы

  1. Состояние “Insufficient data”:
    • Причина: недостаточно данных для вычисления статистики. Убедитесь, что интервал и период заданы правильно.
  2. Нет уведомлений на email:
    • Проверьте, подтверждена ли подписка на SNS.
    • Проверьте, что alarm-actions указывают на правильный ARN темы.
  3. Метрика не растёт:
    • Убедитесь, что сообщения действительно публикуются в тему.
    • Проверьте логи отправителей и подписчиков.
  4. Частые ложные срабатывания:
    • Увеличьте порог или используйте большее число evaluation-periods.

Counterexample — когда оповещение не даёт полезной информации:

  • Если цель — контролировать именно ошибки доставки, лучше мониторить NumberOfNotificationsFailed, а не NumberOfNotificationsDelivered.

Edge cases:

  • Если у темы несколько подписчиков с разными типами (HTTP, Lambda, email), метрика суммирует успешные доставки ко всем подписчикам.

Безопасность и приватность

  • Убедитесь, что ARNs и SNS Topics в уведомлениях не раскрывают чувствительные данные.
  • Если уведомления содержат данные сообщений, проверьте соответствие политике конфиденциальности и требованиям GDPR в вашем регионе.

Лучшие практики

  • Дайте alarm осмысленное имя: -sns--.
  • Используйте аннотацию владельца и контактную информацию в описании alarm.
  • Автоматизируйте создание через инфраструктуру как код.
  • Тестируйте оповещения в тестовом окружении до продакшена.

Тестовые случаи и приёмка

  1. Создать оповещение с порогом 1, отправить одно тестовое сообщение — ожидание: состояние ALARM и получение уведомления.
  2. Увеличить порог до 10 — ожидание: состояние OK при менее 10 доставленных уведомлений.
  3. Удалить оповещение — ожидание: запись исчезает из списка и больше не отправляет уведомления.

Заключение

Мы показали пошагово, как создать оповещение CloudWatch для метрики NumberOfNotificationsDelivered у существующей SNS Topic через консоль. Также рассмотрены альтернативные варианты через CLI, CloudFormation и Terraform, добавлены чек-листы для ролей, методология тестирования, отладочные советы и критерии приёмки. Следуйте лучшим практикам и автоматизируйте конфигурации, чтобы оповещения были надёжными и управляемыми.

Summary: создавайте осмысленные имена, правильно подбирайте статистику и период агрегации, тестируйте оповещения и документируйте их в репозиториях инфраструктуры.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство