Оповещения

Раздел «Оповещения» связывает правила с каналами доставки, чтобы команда узнавала о новых проблемах, регрессиях и всплесках без постоянного мониторинга дашбордов. Открывается по значку колокольчика в левой рельсе или напрямую по /projects/{id}/alerts.

Это страница про алерты по проблемам (issues). Пороговые алерты по числовым метрикам настраиваются отдельно — см. Оповещения по метрикам; уведомления по ним уходят в те же каналы, что описаны здесь.

Каналы доставки

Канал — это конкретный адрес/получатель, куда шлётся уведомление. Один канал переиспользуется во всех правилах проекта (и в правилах по метрикам).

ТипПолучатель (поле «Получатель»)Секрет (поле «Секрет»)
EmailEmail-адресНе нужен
WebhookURL (http:// или https://)Необязательный — если задан, тело запроса подписывается HMAC-SHA256 в заголовке X-Gotcha-Signature: sha256=<hex>
Telegramchat_id получателя/группыОбязателен — токен бота (123456789:AA...)

Как добавить канал

  1. На странице «Оповещения» нажмите «+» («Добавить канал») — откроется модальное окно.
  2. Выберите Тип: Email, Webhook или Telegram.
    • Email недоступен для выбора (пункт задизаблен, подпись «Email (SMTP не настроен)»), пока оператор инстанса не настроит SMTP — см. Конфигурацию. Это общий для всей организации переключатель, не проектная настройка.
  3. Заполните Получатель:
    • Email — просто адрес, например team@example.com;
    • Webhook — полный URL эндпойнта, который примет POST с JSON-телом, например https://example.com/hooks/gotcha;
    • Telegram — chat_id (число, для групп обычно отрицательное) — узнать его можно, например, у @userinfobot, добавив вашего бота в нужный чат.
  4. Заполните Секрет, если применимо:
    • Webhook — произвольная строка, которой вы будете проверять подпись X-Gotcha-Signature на своей стороне;
    • Telegram — токен бота, выданный @BotFather (123456789:AA...).
  5. Отметьте «Включён» (по умолчанию включено) и нажмите «Добавить канал».

Проверка на стороне сервера: email должен быть синтаксически валидным адресом, webhook — валидным http/https URL с хостом, Telegram — непустые получатель и секрет. Неверные данные — ответ 422 с сообщением об ошибке, канал не создаётся.

Для вебхука на приватный/локальный адрес (например, http://localhost:...) по умолчанию действует SSRF-защита — такие адреса отклоняются на отправке, если оператор явно не разрешил приватные адреса на уровне инстанса (single-tenant-инсталляции).

Удаление канала — кнопка «Удалить» в строке таблицы каналов; действует сразу.

Правила по проблемам

Три вида правил, они всегда присутствуют на форме (просто «выключены», если не настраивались):

ПравилоКогда срабатываетДоп. поля
Новый issueПоявилась новая проблема (новый фингерпринт)
РегрессияРешённая проблема снова открылась (то же самое событие произошло снова)
Всплеск (spike)Число событий одной проблемы за окно достигло порогаПорог событий, окно (минут)

Для каждого правила: чекбокс «Включено», «Throttle (минут)» — минимальный интервал между повторными уведомлениями по одной и той же проблеме и правилу (защита от заваливания дублями; 0 — без троттлинга). У «Всплеска» дополнительно — «Порог событий» (например, 10) и «Окно (минут)» (например, 5): правило срабатывает, если проблема набрала N событий за последние M минут.

Все три правила сохраняются одной формой — кнопка «Сохранить правила» внизу секции «Правила» отправляет состояние всех трёх карточек разом.

Уведомление ставится в очередь на каждый включённый канал проекта при срабатывании правила соответствующего вида; повторные срабатывания по той же проблеме и правилу троттлятся согласно заданному интервалу.

Как каналы привязываются к правилам

В Gotcha нет отдельного шага «привязать канал к правилу»: включённое правило автоматически уведомляет все включённые каналы проекта. Если нужно, чтобы разные правила уходили в разные каналы, единственный способ на сегодня — включать/выключать нужные каналы. То же самое верно и для алертов по метрикам (Оповещения по метрикам) — они используют тот же список каналов проекта.

Если включённый канал — email, а SMTP на инстансе не настроен, доставка по этому каналу пропускается (с предупреждением в логе сервера), остальные каналы это не блокирует.

Лог доставок

Отдельная страница /projects/{id}/alerts/deliveries (в под-меню раздела — «Лог доставок») показывает уведомления, которые не удалось доставить: тип канала, получатель, число попыток и текст последней ошибки (например, SMTP-отказ или неуспешный HTTP-статус от вебхука), время. Полезно, когда webhook отвечает не 2xx, у Telegram-бота истёк токен или у почтового сервера временные проблемы — здесь видно причину без похода в серверные логи.

Пока неудачных доставок нет, страница показывает пустое состояние «Неудачных доставок нет».

Приватность: что видят внешние каналы

Webhook и Telegram — внешние сервисы за пределами вашей инфраструктуры; email считается внутренним (доставляется через ваш собственный SMTP). Переменная окружения инстанса

GOTCHA_EXTERNAL_CHANNEL_DETAILS=true|false

управляет тем, что уходит в webhook/Telegram при срабатывании алерта (и по проблемам, и по метрикам):

  • true (по умолчанию) — полный текст: заголовок проблемы, culprit, уровень, тело уведомления, значения метрики и т. п.;
  • false — обезличенный payload: только маршрутные поля (id проекта/проблемы/правила, счётчики, вид алерта) и ссылка на карточку в Gotcha — без текста ошибки, имён транзакций/функций и значений, которые потенциально могут быть персональными данными.

Email этим переключателем не затрагивается — SMTP считается доверенным каналом внутри организации. Настраивается на уровне инстанса оператором, см. Конфигурацию.

Смотрите также