Интеграции

Sentry, Rollbar, Bugsnag и Application Insights в одном потоке ошибок

Четыре трекера ошибок и две системы CI, одна группировка и одно правило важности.

SLAtech Vantage читает ошибки из Sentry, Rollbar, Bugsnag и Application Insights, а также упавшие запуски GitHub Actions и конвейеры GitLab CI, и складывает все это в единый поток ошибок проекта. Там они группируются по одной сигнатуре, классифицируются и ранжируются по важности, и из них можно открыть задачу. Все эти интеграции работают только на чтение.

Какие системы поддерживаются и что запрашивает каждая

  • Sentry: адрес сервера (sentry.io или собственный), организация, проект и токен доступа.
  • Rollbar: название проекта и токен доступа к проекту с правом чтения, а не тот токен, которым приложение отправляет ошибки.
  • Bugsnag: идентификатор проекта в том виде, в котором он указан в адресе, и персональный токен.
  • Application Insights: идентификатор приложения и API-ключ. По умолчанию данные там хранятся 90 дней, и более старые данные забрать нельзя.
  • GitHub Actions и GitLab CI: репозиторий или проект и токен с правом чтения.

Все токены хранятся в зашифрованном виде и больше не показываются. Ошибки забираются раз в час. Экран источников проекта сейчас доступен только оператору системы, поэтому подключение делается через нас.

Одна группировка для всех источников

У каждого трекера ошибок своё понятие "группы ошибок", и эти понятия не совпадают. SLAtech Vantage не использует ни одно из них. Каждое событие получает сигнатуру из трёх частей: модуль, функция и нормализованное сообщение, из которого убраны числа, пути, идентификаторы и даты. События с одинаковой сигнатурой попадают в одну группу со счётчиком.

Так "сколько раз это случилось" считается одинаково в любом проекте и для любого источника. Для запуска CI модулем служит репозиторий, функцией -- имя сценария, а в сообщение входят итог и ветка.

Классификация и важность

Каждая группа по явным правилам относится к настоящей ошибке, внешнему сервису или шуму. По умолчанию группа считается настоящей ошибкой, чтобы нераспознанное не скрывалось. Запуск CI, отменённый вручную, записывается как шум.

Важность (низкая, средняя, высокая, критическая) рассчитывается по числу появлений за последние семь дней:

  • шум всегда остаётся низким;
  • внешний сервис не поднимается выше средней;
  • группа, отмеченная как решенная и вернувшаяся снова, поднимается на уровень;
  • затихшая группа сама опускается, когда её появления выходят из окна.

Важность, заданная вручную, важнее расчёта.

Что происходит с группой дальше

  • Письмо о новой группе: одно на группу, а не на каждое появление, и отдельное письмо, когда закрытая группа возвращается. Только для настоящих ошибок и только если у проекта задан адрес для оповещений. Если адреса нет, не уходит ничего.
  • Задача из ошибки создается одним нажатием. Задача помнит, из какой группы она появилась.
  • Решение: у группы можно записать, как её решили, а экран ошибки показывает похожие группы, которые уже решены.
  • Коммиты: когда по стеку определяется класс, в котором произошла ошибка, показываются последние коммиты, затронувшие его файл.

Текст ошибки в письме и на экране организации-исполнителя проходит маскирование идентификаторов: в сообщении об ошибке иногда бывает то, что ввёл пользователь, а отправленное письмо уже не вернуть.

Что видит клиент и что не забирается

В портале клиент видит одну плитку: сколько групп настоящих ошибок активно сейчас, или что всё в порядке. Сам список ошибок он не видит. Организация-исполнитель видит группы с замаскированным текстом.

  • Собственные группы, заметки и статусы трекера ошибок не забираются, и в него ничего не записывается.
  • Успешный запуск CI не сохраняется.
  • Отдельное событие хранится 30 дней. Группа и её счётчик остаются и после этого.

Частые вопросы

Какие трекеры ошибок поддерживает SLAtech Vantage?
Sentry, в том числе на собственном сервере, Rollbar, Bugsnag и Application Insights. Кроме того, в тот же поток ошибок попадают упавшие запуски GitHub Actions и конвейеры GitLab CI. Все эти интеграции работают только на чтение: SLAtech Vantage забирает события раз в час и не меняет статус, ничего не закрывает и не комментирует в самом трекере. Токены хранятся в зашифрованном виде.
Почему группы не совпадают с группами в Sentry?
Потому что SLAtech Vantage сам группирует ошибки по одному правилу для всех источников: сигнатура состоит из модуля, функции и нормализованного сообщения, из которого убраны числа, пути, идентификаторы и даты. Если брать группы каждой системы, ошибка в Sentry и ошибка в Rollbar считались бы по разным правилам, и "сколько раз это случилось" перестало бы быть числом, которое можно сравнивать.
Кто получает оповещение о новой ошибке?
Адрес, заданный в проекте для оповещений об ошибках, и только он. На новую группу уходит одно письмо, а не отдельное письмо на каждое появление, и еще одно письмо уходит, когда группа, отмеченная как решенная, возвращается. Оповещения уходят только о настоящих ошибках, не о шуме и не о внешних сервисах. Если адрес не задан, не уходит ничего. Текст ошибки в письме замаскирован.
Видит ли клиент ошибки?
Не список. В портале клиент видит одну плитку с числом реальных групп ошибок, которые активны сейчас, или отметку, что всё в порядке. Организация исполнителя видит сами группы с текстом, в котором личные идентификаторы заменены. Ошибка, по которой открыли задачу, доходит до клиента как любая другая задача, а не как строка ошибки.

Хотите видеть ошибки из нескольких систем в одном списке? Можно начать с пробного периода.

Начать бесплатно