Перейти к содержимому

Возможности

Трейсинг, который показывает, куда уходит время

Трейс — это одна операция от начала до конца, спан — один замеренный шаг внутри неё. Buglapse строит трейсы автоматически для загрузок страниц, переходов и HTTP-запросов и позволяет замерить свой код одним вызовом.

Все возможности Buglapse

Трейсинг

От медленного запроса к медленному шагу

  • Waterfall-представление

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

  • Автоматические спаны

    В браузере спан открывается для первой загрузки страницы и для каждой смены маршрута, fetch-запросы ложатся под него. В Node.js каждый входящий запрос — корневой спан, исходящие HTTP-вызовы записываются.

  • Браузер и сервер вместе

    Запрос, который начинается в браузере и продолжается на вашем Node.js-сервере, показывается одним трейсом — фронтенд и бэкенд медленной страницы стоят рядом.

  • Метрики спанов

    Прикрепляйте к спану именованные числа — импортированные строки, размер ответа, сумму заказа — и смотрите их на графиках страницы трейса. Сверх самого спана они ничего не стоят.

Как это работает

Замерьте свой код

  1. 1

    Включите интеграции трейсинга

    Browser tracing и HTTP-интеграции Node.js создают спаны для загрузок страниц, переходов и запросов без правок в вашем коде.

  2. 2

    Оберните важное

    Поместите шаг в span или asyncSpan. Он замеряется и отправляется, когда колбэк вернул значение, промис выполнился или было брошено исключение; такой спан помечается как неуспешный.

  3. 3

    Откройте трейс

    Найдите трейс по имени, длительности или статусу и прочитайте waterfall. Ошибки и логи, пойманные во время операции, связаны с ним.

checkout.ts
import { asyncSpan } from '@buglapse/node'

await asyncSpan('checkout', async () => {
  await asyncSpan('reserve-stock', () => reserve(cart))
  await asyncSpan('charge-card', () => charge(cart))
})

Подробнее

Как строятся трейсы

Вложенность без передачи идентификаторов

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

Задачи, скрипты и фоновая работа

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

На каждом тарифе

Сравнить все тарифы
На каждом тарифе
Free Pro Team
Спаны в месяц100 0001 000 00010 000 000
Трейсы7 дней14 дней30 дней

Вопросы

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

Остались вопросы?

Напишите нам — поможем с подключением, тарифом или self-hosted.

Написать нам

или на почту hello@buglapse.com

Нужно ли инструментировать всё вручную?
Нет. Загрузки страниц, смены маршрута, fetch-запросы, входящие серверные запросы и исходящие HTTP-вызовы трассируют интеграции. Ручные спаны нужны для шагов, специфичных для вашего приложения.
Можно ли трассировать задачи из очереди и cron?
Да. Оберните задачу в спан — он станет корнем собственного трейса, к которому прикрепятся все вложенные спаны, логи и ошибки.
Как считается трейсинг?
В спанах: каждый сохранённый спан идёт в месячную квоту спанов организации. Метрики спанов бесплатны и на счёт не влияют.

Смотрите также

Логи

Структурированные логи рядом с ошибками и трейсами, с поиском по сообщению, уровню и атрибутам.

Подробнее: Логи

Мониторинг ошибок

Каждая ошибка — один инцидент с читаемым стек-трейсом, хлебными крошками, шагами до ошибки и затронутыми пользователями.

Подробнее: Мониторинг ошибок

Node.js

Ошибки, трейсы запросов, логи и блокировки event loop с вашего Node.js-сервера.

Подробнее: Node.js

Готовы увидеть, что на самом деле происходит в вашем приложении?

Создайте проект на бесплатном тарифе и отправьте первое событие за пару минут.

Остались вопросы? Напишите на hello@buglapse.com