0Pricing
React Academy · Урок

Трассировки OpenTelemetry из браузера

Настройте JavaScript SDK OpenTelemetry в React, создайте интервалы для взаимодействий пользователя и экспортируйте их в сборщик на серверной стороне

«Трассировки OpenTelemetry из браузера» — бесплатный урок React Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения React Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс React Academy содержит 4 уроков всего.

JavaScript SDK OpenTelemetry

JavaScript SDK OpenTelemetry для браузеров состоит из нескольких пакетов: @opentelemetry/sdk-trace-web предоставляет основную реализацию трассировки, @opentelemetry/instrumentation-fetch автоматически создаёт отрезки для всех вызовов fetch API, а @opentelemetry/exporter-trace-otlp-http отправляет отрезки сборщику.

TracerProvider: основа трассировки OTel

TracerProvider — центральный объект конфигурации в OpenTelemetry. Он содержит список SpanProcessors, определяющих, что происходит с завершёнными отрезками, ресурс с описанием приложения (именем и версией сервиса), а также настройки выборки.

BatchSpanProcessor: эффективный экспорт

BatchSpanProcessor собирает завершённые отрезки в памяти и экспортирует их пакетами, а не отправляет каждый отрезок отдельно. Это значительно сокращает количество HTTP-запросов к сборщику, повышает производительность браузера и уменьшает нагрузку на конечную точку сборщика OTel.

OTLPTraceExporter: отправка сборщику

OTLPTraceExporter отправляет пакетные отрезки совместимому с OpenTelemetry сборщику по HTTP в формате JSON или protobuf. Вы задаёте адрес сборщика (например, конечную точку прокси OTel Collector), а экспортёр автоматически выполняет сериализацию и повторные попытки.

Что такое отрезок трассировки

Отрезок представляет собой отдельную единицу работы внутри трассировки: монтирование компонента, вызов сервера или действие пользователя. У отрезков есть имя, время начала, время окончания, состояние (OK или ERROR) и набор атрибутов «ключ — значение». Связанные отрезки объединяются общим ID трассировки и отношениями «родитель — потомок».

Запуск и завершение отрезков вручную

Создайте трассировщик с помощью provider.getTracer('react-app') и запускайте отрезки с помощью tracer.startSpan('component-mount'). После завершения работы вызовите span.end(), чтобы записать время окончания. Всегда завершайте отрезки: оставленные без завершения отрезки расходуют память и создают неполные данные в вашей системе наблюдаемости.

Добавление атрибутов к отрезкам

Атрибуты обогащают отрезки контекстными данными: span.setAttribute('user.id', userId) или span.setAttribute('route', location.pathname). По атрибутам можно выполнять поиск в вашей системе наблюдаемости, что позволяет формировать запросы вроде «показать все медленные отрезки для пользователя 42» или «показать все ошибки на маршруте /checkout».

Автоматическая инструментация запросов fetch

@opentelemetry/instrumentation-fetch изменяет глобальную функцию fetch, чтобы автоматически создавать отрезки для каждого исходящего HTTP-запроса. Отрезок фиксирует адрес, метод, код состояния HTTP и длительность без каких-либо изменений в существующих вызовах fetch.

Распространение контекста через W3C TraceContext

Когда инструментирование fetch создаёт интервал для исходящего запроса, оно внедряет заголовок traceparent W3C TraceContext в запрос. Получающий сервер читает этот заголовок и продолжает ту же трассировку, создавая связанную трассировку, охватывающую браузер и сервер.

Инициализация OpenTelemetry в приложении React

Инициализация OpenTelemetry должна выполняться до монтирования любых компонентов — обычно во входном файле приложения (main.tsx), до вызова ReactDOM.createRoot. Создайте провайдер, зарегистрируйте процессоры и экспортёры и вызовите provider.register(), чтобы сделать его глобальным TracerProvider.

Выборка: управление объёмом трассировок

Запись каждого взаимодействия пользователя в приложениях с высокой нагрузкой создаёт огромный объём данных трассировки. Настройте механизм выборки TraceIdRatioBased в TracerProvider, например отбирайте 10% трассировок, чтобы уменьшить объём данных. Всегда отбирайте 100% трассировок с ошибками с помощью механизма выборки ParentBased, чтобы ни одна ошибка не осталась незамеченной.

Назначение BatchSpanProcessor OpenTelemetry

Почему в браузерных приложениях используется BatchSpanProcessor, а не SimpleSpanProcessor?

Повторение урока

JavaScript SDK OpenTelemetry инструментирует браузеры с помощью TracerProvider, BatchSpanProcessor и OTLPTraceExporter. Интервалы представляют единицы работы, дополненные атрибутами. Инструментирование fetch автоматически создаёт интервалы для вызовов программного интерфейса и внедряет заголовки W3C TraceContext для сквозной распределённой трассировки. Инициализируйте систему заранее, правильно настраивайте выборку и всегда завершайте интервалы, чтобы сохранять чистые данные трассировки.

Часто задаваемые вопросы

Урок «Трассировки OpenTelemetry из браузера» бесплатный?

Да — полный текст урока «Трассировки OpenTelemetry из браузера» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс React Academy, подпишись на CoddyKit PRO. Курс React Academy содержит 4 уроков всего.

Чему я научусь в уроке «Трассировки OpenTelemetry из браузера»?

Настройте JavaScript SDK OpenTelemetry в React, создайте интервалы для взаимодействий пользователя и экспортируйте их в сборщик на серверной стороне Ты практикуешь React Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать React Academy?

Предыдущий опыт не требуется. React Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Трассировки OpenTelemetry из браузера»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке React Academy?

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

Все уроки этого курса

  1. Наблюдаемость фронтенда: что это и зачем она нужна
  2. Трассировки OpenTelemetry из браузера
  3. Мониторинг реальных пользователей и Web Vitals
  4. Связывание трассировок фронтенда и бэкенда
← Назад к React Academy