Отслеживание ошибок
Собирайте исключения, которые выбрасывает ваше приложение, сгруппированные в issues, — на любом тарифе, включая бесплатный. Сервис говорит на протоколе Sentry, поэтому вы оставляете уже используемый SDK и меняете одну строку конфигурации.
Настройка
Создайте проект в панели и скопируйте его DSN. Затем направьте на него имеющийся SDK:
Sentry.init({
dsn: "https://<key>@vitrinaengine.com/ingest/<project>",
});Это вся интеграция. Подходит любой SDK Sentry — JavaScript, Python, Ruby, Go, PHP, .NET — потому что это именно их сетевой протокол, а не что-то похожее.
Ключ в DSN — не секрет. Браузерный SDK отдаёт его в бандле страницы, то есть он обозначает проект и больше ничего не разрешает. Не стройте ничего в расчёте на его приватность.
Как ошибки становятся issues
События, которые представляют одну и ту же проблему, объединяются в одну issue. Группировка использует тип исключения, сообщение и форму стека — но никогда номера строк, потому что добавленный в начало файла импорт иначе разделил бы одну issue на две и представил давнюю ошибку новой.
Issue, которую вы закрыли и которая случилась снова, открывается заново как регрессия и оповещает вас, вместо того чтобы молча прибавить ещё одно появление к закрытой.
Source maps
Загрузите source maps для релиза — и минифицированный браузерный стек станет читаемым. Загружайте их из сборки через API — см. справочник API.
Соответствие ищется сначала по debug_id, затем по релизу и имени файла. Применяются они при чтении issue, а не при поступлении события, и это даёт полезное следствие: карта, загруженная после ошибок, всё равно к ним применится. Обычно всё происходит именно в таком порядке.
Ошибки, приложенные к инциденту
Когда мониторинг открывает инцидент, он собирает ошибки, которые ваше приложение выбросило, пока этот сбой подтверждался, и прикладывает сводку к самому инциденту.
Стоит понимать, почему это полезнее поиска задним числом: окно перестаёт существовать в тот момент, когда появляется инцидент, а события живут по сроку хранения, который истекает намного раньше инцидента. Поэтому сводка снимается тогда, когда это ещё возможно, и хранится вместе с инцидентом.
В агентском аккаунте сводка ограничена рабочим пространством, чтобы инцидент одного клиента не унёс в письмо стек-трейсы другого.
Логи ваших серверов и сетевого оборудования
На плане Business и выше проект принимает и те логи, которые ваши машины пишут и так: syslog с Linux и с оборудования Cisco и Juniper, журнал событий Windows и единый журнал macOS. Направьте уже используемый отправитель логов на эндпоинт логов вашего проекта — он указан на странице проекта рядом с DSN. На самих машинах устанавливать нечего.
Сохраняются только ошибки. Уровни syslog ниже err, уровни Windows ниже Error и всё, что журнал macOS называет Default или тише, отбрасывается до того, как попадёт в счёт, — исправный хост не стоит вам ничего, а предупреждения, из-за которых никого не подняли бы по тревоге, не забивают список проблем.
Записи логов группируются так же, как исключения: по программе, которая их выдала, и по сообщению, а не по хосту. Одна неудачная выкладка на двадцати веб-серверах — это одна проблема, замеченная двадцать раз, а не двадцать проблем. Там, где оборудование само называет свои сообщения, мы группируем по этому имени: упавший интерфейс — одна проблема, каким бы ни был порт.
Поскольку строка лога повторяется гораздо чаще исключения, мы храним один пример каждой проблемы в час, а остальные считаем. Число повторений и график точны; чего вы не получите — это отдельной копии сотой одинаковой строки.
Квоты
У каждого тарифа есть месячная квота событий — 5 000 на Free, 50 000 на Starter, 250 000 на Pro, 1 000 000 на Business. Приём дополнительно ограничен по частоте для каждого проекта, и это как раз тот случай, который действительно происходит: исключение внутри цикла повторов иначе сожжёт месячную квоту за минуты.
Отдельные события хранятся столько, сколько предусматривает хранение ошибок вашего тарифа, — семь дней на Free, тридцать на Starter, шестьдесят на Pro, девяносто на Business. Построенные из них issues переживают события: их счётчики, первое и последнее появление остаются столько же, сколько хранится история вашего тарифа.
Чего мы не делаем
Ни записи сессий, ни трассировки производительности, ни профилирования. Это отслеживание исключений, которое оказалось рядом с мониторингом доступности, чтобы «сайт работает и выдаёт пятьсот ошибок в минуту» было одним экраном, а не двумя продуктами.