Проблемы
Проблема (issue) — это не единичная ошибка, а группа одинаковых ошибок, сведённых по фингерпринту. Вместо тысячи строк одного и того же исключения в разделе «Проблемы» вы видите одну карточку со счётчиком «сколько раз это случилось» и графиком, когда именно.
Как ошибки попадают в Gotcha
Проблемы создаются автоматически из событий, которые присылает SDK вашего приложения — Gotcha принимает их по протоколу приёма Sentry (envelope/store), так что подходит обычный официальный Sentry SDK для вашего языка. Установка SDK, DSN проекта и минимальная инициализация для Go/PHP/JavaScript/Python описаны на странице SDK и интеграции. Ручных действий в UI для «создания» проблемы нет: как только SDK отправил необработанное исключение (или вы явно вызвали captureException), в течение нескольких секунд появляется первая проблема.
Список проблем и фильтры
Раздел открывается по ссылке «Проблемы» в левом рельсе (иконка бага) — URL вида /projects/<id>/issues. Сверху — панель фильтров (обычная форма, работает без JS):
| Фильтр | Значения |
|---|---|
| Статус | все / не решено / решено / игнорируется |
| Уровень | все / отладка / инфо / предупреждение / ошибка / критическая |
| Поиск | по заголовку или culprit (месту в коде) |
| Сортировка | по последнему событию / по первому событию / по частоте |
| Окружение | список окружений, реально встречавшихся в проекте |
| Период | все время / 24 часа / 7 дней / 30 дней |
Таблица показывает по каждой проблеме: уровень (бейдж), заголовок и culprit, спарклайн тренда за 24 часа, число событий («Количество»), когда видели в последний раз, статус и ответственного. Список постранично (по 25 проблем на страницу), внизу — навигация «Назад / N из M / Далее».
Отметив проблемы чекбоксами слева, можно применить массовое действие — «Разрешить», «Игнорировать» или «Вернуть в работу» — сразу к нескольким строкам.
Как работает группировка (фингерпринт)
Каждое входящее событие получает фингерпринт — ключ, по которому оно попадает в существующую проблему или создаёт новую. Приоритет вычисления (по убыванию):
- Кастомный fingerprint из SDK — если приложение явно задало
fingerprintв событии (включая специальное значение{{ default }}, которое подставляет автоматически вычисленную часть). - Нормализованный стектрейс — если есть исключение со стектрейсом, ключ строится по модулям/функциям кадров.
- Тип исключения + нормализованное сообщение — если стектрейса нет, но исключение есть (тип + сообщение, из которого убраны переменные части вроде чисел и идентификаторов).
- Нормализованное сообщение — простое сообщение без исключения (например,
captureMessage).
Событие с уже встречавшимся фингерпринтом присоединяется к существующей проблеме: растёт счётчик «Количество», обновляется «Последний раз». Фингерпринт, которого раньше не было, создаёт новую проблему с этим событием как первым.
Из-за нормализации сообщений и стектрейсов одинаковые по сути ошибки с разными числами/id в тексте (user 42 not found, user 43 not found) обычно группируются в одну проблему, а разные по типу или месту в коде исключения — в разные.
Деталь проблемы
Клик по заголовку строки открывает /issues/<id>:
- Заголовок, culprit, бейдж уровня и бейдж статуса.
- Метаданные: Впервые / Последний раз / Количество.
- Кнопки действий (см. ниже) и форма назначения ответственного.
- График частоты — столбчатая диаграмма событий за последние 7 дней с шагом 3 часа (56 столбцов).
- Последние события — таблица из 20 самых свежих событий этой проблемы: когда, сообщение, окружение, релиз. Клик по времени открывает деталь конкретного события (
?event=<id>в URL, строка подсвечивается).
Как читать график частоты
Каждый столбец — число событий за 3-часовое окно. Ровный невысокий фон с редкими одиночными столбцами обычно значит, что ошибка разовая или очень редкая. Резкий одиночный всплеск говорит о кратковременном инциденте (например, сбой у внешнего сервиса или один плохой деплой, который откатили). Устойчиво растущая «лестница» из столбцов — признак деградации, которая не проходит сама и стоит внимания прямо сейчас, а не только уведомления по алерту.
Деталь события
При выбранном событии на странице появляется блок с:
- Стектрейс — кадры вашего приложения (in-app) показаны сразу целиком: путь к файлу со строкой, функция, модуль. Кадры фреймворка/рантайма/зависимостей (не in-app) свёрнуты в
<details>— по умолчанию видна только строкафункция (файл:строка), полный кадр раскрывается кликом. Это отделяет ваш код от шума библиотек прямо в стектрейсе. - Ссылка на трейс — если у события есть связанный
trace_id(запрос был частью трассируемой транзакции), показывается ссылка «Смотреть трейс» на waterfall в разделе Производительность. - Теги — произвольные пары ключ-значение, которые SDK прикрепил к событию.
- Пользователь и SDK — id/email/IP пользователя (если SDK их передал) и информация об SDK.
- Контексты — сырые структурированные данные события (окружение выполнения, устройство и т. п. — что прислал SDK).
Действия
Проблему можно разрешить (пометить исправленной), отправить в игнор (скрыть без пометки «исправлено» — полезно для известного шума) или вернуть в работу. Отдельной формой проблема назначается любому участнику проекта — назначение не меняет статус, это просто «кто занимается».
Оповещения о новых проблемах
Чтобы не проверять список вручную, настройте правило оповещения «новая проблема» в разделе Оповещения — команда получит уведомление в выбранный канал (email/webhook/Telegram) сразу, как только появится проблема, которой раньше не было.