Оповещения
Раздел «Оповещения» связывает правила с каналами доставки, чтобы команда узнавала о новых проблемах, регрессиях и всплесках без постоянного мониторинга дашбордов. Открывается по значку колокольчика в левой рельсе или напрямую по /projects/{id}/alerts.
Это страница про алерты по проблемам (issues). Пороговые алерты по числовым метрикам настраиваются отдельно — см. Оповещения по метрикам; уведомления по ним уходят в те же каналы, что описаны здесь.
Каналы доставки
Канал — это конкретный адрес/получатель, куда шлётся уведомление. Один канал переиспользуется во всех правилах проекта (и в правилах по метрикам).
| Тип | Получатель (поле «Получатель») | Секрет (поле «Секрет») |
|---|---|---|
| Email-адрес | Не нужен | |
| Webhook | URL (http:// или https://) | Необязательный — если задан, тело запроса подписывается HMAC-SHA256 в заголовке X-Gotcha-Signature: sha256=<hex> |
| Telegram | chat_id получателя/группы | Обязателен — токен бота (123456789:AA...) |
Как добавить канал
- На странице «Оповещения» нажмите «+» («Добавить канал») — откроется модальное окно.
- Выберите Тип: Email, Webhook или Telegram.
- Email недоступен для выбора (пункт задизаблен, подпись «Email (SMTP не настроен)»), пока оператор инстанса не настроит SMTP — см. Конфигурацию. Это общий для всей организации переключатель, не проектная настройка.
- Заполните Получатель:
- Email — просто адрес, например
team@example.com; - Webhook — полный URL эндпойнта, который примет
POSTс JSON-телом, напримерhttps://example.com/hooks/gotcha; - Telegram —
chat_id(число, для групп обычно отрицательное) — узнать его можно, например, у@userinfobot, добавив вашего бота в нужный чат.
- Email — просто адрес, например
- Заполните Секрет, если применимо:
- Webhook — произвольная строка, которой вы будете проверять подпись
X-Gotcha-Signatureна своей стороне; - Telegram — токен бота, выданный
@BotFather(123456789:AA...).
- Webhook — произвольная строка, которой вы будете проверять подпись
- Отметьте «Включён» (по умолчанию включено) и нажмите «Добавить канал».
Проверка на стороне сервера: 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 считается доверенным каналом внутри организации. Настраивается на уровне инстанса оператором, см. Конфигурацию.
Смотрите также
- Оповещения по метрикам — пороговые правила по числовым метрикам, тот же набор каналов.
- Проблемы — что такое issue, регрессия, статусы.
- Конфигурация — переменные SMTP и
GOTCHA_EXTERNAL_CHANNEL_DETAILS.