Skip to main content

Группы ошибок

Каждая ошибка в Makbool попадает в группу — не создаётся отдельная запись на каждый случай. Это ключевое отличие от простого логирования. Когда та же ошибка происходит снова, счётчик группы увеличивается и обновляется last_seen. Вы сразу видите: «эта ошибка случилась 847 раз за последний час».

Fingerprinting

Группировка основана на fingerprint — SHA256-хеше нормализованного сообщения и стектрейса. Перед хешированием Makbool убирает из стектрейса:
  • UUID и хеши (например, Vite-хеши вида Button.abc123.js)
  • Номера строк и столбцов
  • Переменные части путей к файлам
Это означает, что ошибка Cannot read property 'x' of undefined в Button.js будет в одной группе независимо от версии бандла.

Статусы ошибок

СтатусЗначение
activeОшибка происходит прямо сейчас
resolvedВы пометили ошибку как исправленную
Если resolved-ошибка появится снова, она автоматически вернётся в active. Breadcrumbs — это история событий, которые произошли перед ошибкой. SDK автоматически собирает:
  • HTTP-запросы (fetch и XHR) — URL, метод, статус, время
  • Навигацию — переходы между страницами
  • Консольные логи
SDK хранит последние 50 breadcrumbs (кольцевой буфер). Все они отправляются вместе с ошибкой.

AI-объяснения

На странице ошибки есть кнопка «Объяснить». Makbool анализирует сообщение и стектрейс с помощью AI и возвращает:
  • Что произошло и почему
  • Наиболее вероятную причину
  • Как исправить
Объяснение генерируется один раз и кэшируется. Повторные нажатия вернут сохранённый результат.
AI-объяснения входят в лимит вашего плана. На Free плане — 10 объяснений в месяц.

Retention (хранение данных)

Ошибки хранятся в течение периода, определённого вашим планом. По истечении этого срока они удаляются автоматически:
ПланХранение
Free7 дней
Pro30 дней
Team90 дней

Rate limiting

SDK имеет встроенный rate limit: если ваш план исчерпан, сервер отвечает 429 и SDK перестаёт отправлять ошибки до конца месяца. Это защищает от случайного переполнения лимита в цикле.

SSE (Server-Sent Events)

Дашборд получает новые ошибки в реальном времени через SSE без перезагрузки страницы. Соединение устанавливается автоматически при открытии дашборда и переподключается при разрыве.