Документация

Каналы уведомлений

Версия v2.3.1 · Обновлено

Каналы уведомлений#

Канал — это цель для исходящих уведомлений. Каналы не получают алерты напрямую и не имеют токенов приёма.

Incoming alert -> Route -> Notification channels

Маршрут может иметь один или несколько каналов. При создании или обновлении алерта IncidentRelay проверяет каждый канал, привязанный к сопоставленному маршруту.

Браузерные push-уведомления на уровне профиля

Браузерные push-уведомления не являются типом канала. Пользователи включают браузерные/PWA push-уведомления в разделе Profile, и алерты отправляются на активные устройства с браузерными push-уведомлениями назначенного пользователя.

Браузерные push-уведомления не требуют привязки канала к маршруту. Подробнее: Браузерные push-уведомления.

Проверки доставки#

Для каждого канала IncidentRelay проверяет:

1. Is the channel enabled?
2. Is the channel attached to the matched route?
3. Does notify_on_severities allow this alert severity?
4. Does the notifier have all required channel or global settings?
5. Does the assigned user have the required contact field, if the channel needs one?

Поддерживаемые типы каналов#

ТипОбязательная конфигурация каналаТребование к профилю пользователяТребование к глобальной конфигурации
mattermostWebhook URL или настройки Bot APIОпциональный Mattermost user ID для атрибуции пользователяpublic_base_url для кнопок
telegrambot_token, chat_idTelegram user ID для действийОпциональный прокси Telegram
emailОпциональный html_templateУ назначенного пользователя должен быть emailНастройки SMTP
slackРежим webhook: webhook_url; Bot API: bot_token, channel_id и либо signing_secret, либо app_tokenНеобязательный Slack user ID для атрибуции действийПубличный HTTPS-эндпоинт для HTTP-действий или воркер Slack для Socket Mode
discordwebhook_urlНетНет
teamswebhook_urlНетНет
webhookwebhook_urlНетНет
voice_callОпциональная политика уведомленийУ назначенного пользователя должен быть phoneНастройки голосового провайдера

Фильтр по важности#

Каждый канал может ограничивать, какие уровни важности он получает, с помощью канонического ключа notify_on_severities в конфигурации канала.

Пример:

{
  "notify_on_severities": ["critical", "high"]
}

Если notify_on_severities отсутствует или пуст, канал получает все уровни важности алертов, привязанных к его маршруту.

Используйте канонические имена уровней важности:

critical
high
medium
warning
low
info

IncidentRelay нормализует распространённые псевдонимы входящих уровней важности перед сравнением их с фильтром.

Входящее значениеНормализованное значение
crit, error, fatal, disastercritical
avg, averagemedium
warnwarning
information, informational, not_classified, not classifiedinfo

Не используйте старые или специфичные для канала поля важности, такие как severities или call_on_severities. Используйте notify_on_severities для каждого типа канала.

Обновления уведомлений#

Некоторые каналы могут обновлять существующее уведомление после ACK, Resolve, Shelve или Unshelve.

КаналПоддерживает обновленияПримечания
Mattermost Bot APIДаТребуется режим Bot API
Slack Bot APIДаТребуются сохранённые метаданные канала и сообщения Slack
TelegramДаТребуются сохранённые метаданные сообщения Telegram и опрос для действий
EmailНетДля событий уведомлений может быть отправлено новое письмо
Голосовой вызовНетВызовы являются односторонними уведомлениями
Входящий webhook Slack, Discord, Teams, универсальный webhookНетДоставка через webhook создаёт новые сообщения и не может обновить исходное уведомление

Страницы отдельных каналов#

Устранение неполадок#

Канал не вызывается для реального алерта#

Проверьте:

  • У алерта есть route_id.
  • Канал привязан к этому маршруту.
  • Канал включён.
  • Алерт не заглушён.
  • Фильтр важности канала разрешает уровень важности алерта.
  • У назначенного пользователя есть необходимые контактные данные, такие как email или телефон.

Тест работает, но реальный алерт нет#

Тест канала обходит часть реального пути маршрутизации алерта.

Реальные алерты всё равно требуют:

route match -> route channel binding -> allowed severity -> assignee contact data

Для браузерных push-уведомлений проверка отличается:

alert assignee -> assignee has active browser push subscription

Тест браузерных push-уведомлений отправляется текущему пользователю профиля. Реальный push по алерту отправляется назначенному пользователю.

Логи показывают notification sent, но пользователь его не получил#

notification sent означает, что IncidentRelay передал сообщение внешнему провайдеру или SMTP-релею без исключения. Это не гарантирует финальную доставку в почтовый ящик, чат или на телефон. Проверьте также логи нижестоящего провайдера.