Мониторинг реальных пользователей и Web Vitals
Собирайте LCP, FID, CLS и пользовательские метки производительности как метрики OpenTelemetry с помощью библиотеки web-vitals
«Мониторинг реальных пользователей и Web Vitals» — бесплатный урок React Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения React Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс React Academy содержит 4 уроков всего.
Библиотека web-vitals
Пакет web-vitals для npm от Google предоставляет простой программный интерфейс для измерения основных веб-показателей в браузерах реальных пользователей. Установите его командой npm install web-vitals и импортируйте отдельные обратные вызовы показателей: onLCP, onFID (устаревший), onCLS, onFCP, onTTFB и современный onINP для показателя взаимодействия до следующей отрисовки.
Обратные вызовы показателей и объекты показателей
Каждый обратный вызов (onLCP, onCLS, onINP и другие) получает объект показателя, содержащий: имя («LCP»), значение (миллисекунды или безразмерная оценка), оценку («хорошо», «требует улучшения», «плохо») и ID (уникальный идентификатор для устранения дубликатов). Обратный вызов срабатывает после окончательного определения значения показателя.
Отправка веб-показателей в конечную точку аналитики
Используйте программный интерфейс Navigator.sendBeacon или fetch, чтобы отправлять показатели в конечную точку аналитики. Метод sendBeacon предпочтительнее, поскольку продолжает работу даже после выгрузки страницы — это особенно важно для таких показателей, как CLS, окончательно определяемых при скрытии страницы. По возможности объединяйте все отчёты о показателях в один такой запрос.
Отправка веб-показателей как метрик OpenTelemetry
Чтобы интегрировать веб-показатели в OpenTelemetry, создайте инструменты типа Gauge для каждого показателя: const lcp = meter.createObservableGauge('web_vitals.lcp'). В каждом обратном вызове onLCP записывайте значение с релевантными атрибутами (путь страницы, тип устройства). После этого система наблюдаемости сможет создавать оповещения о регрессиях P75 LCP.
Пользовательские метки производительности React
Чтобы измерять производительность React, не охватываемую веб-показателями, используйте API пользовательских меток времени: вызывайте performance.mark('render-start') перед отрисовкой, performance.mark('render-end') после неё, а затем performance.measure('component-render', 'render-start', 'render-end'). Эти измерения отображаются на вкладке Performance в Chrome DevTools.
API профилировщика React
Компонент React Profiler оборачивает поддерево и вызывает обратный вызов onRender с данными о времени: id (идентификатор Profiler), фаза («монтирование» или «обновление»), actualDuration (время отрисовки), baseDuration (расчётное время отрисовки без мемоизации). Используйте этот механизм в разработке, чтобы находить медленные компоненты.
Отслеживание ошибок как интервалов OpenTelemetry
Необработанные ошибки и отклонения Promise можно захватывать как интервалы OpenTelemetry со статусом ошибки. Настройте глобальные слушатели: window.addEventListener('error', handler) и window.addEventListener('unhandledrejection', handler). Создайте интервал, задайте его статус с помощью span.setStatus({ code: SpanStatusCode.ERROR }), добавьте сообщение об ошибке и трассировку стека в качестве атрибутов, а затем завершите интервал.
Интеграция границ обработки ошибок React
Границы обработки ошибок React перехватывают ошибки отрисовки в дереве компонентов. В методе componentDidCatch создайте интервал OpenTelemetry, представляющий ошибку, задайте ему статус ERROR, добавьте error.message и componentStack в качестве атрибутов и вызовите span.end(). Так ошибки отрисовки React попадают в конвейер распределённой трассировки.
Карты исходного кода для восстановления трассировок стека
Минифицированный JavaScript в рабочей среде создаёт нечитаемые трассировки стека, например "a.b at bundle.min.js:1:84721". Загружайте карты исходного кода в Sentry, Datadog или ваш конвейер OpenTelemetry во время процесса сборки CI/CD, чтобы необработанные трассировки стека автоматически преобразовывались в исходные имена файлов TypeScript и номера строк.
Выборка сеансов RUM
Отправка полных данных трассировки для каждого сеанса обходится дорого. Реализуйте выборку сеансов: при первой загрузке страницы случайным образом назначайте флаг sessionSampled и сохраняйте его в sessionStorage. Инициализируйте SDK OpenTelemetry и отправляйте трассировки только для отобранных сеансов, например для 10%. Сеансы с ошибками всегда отбирайте со 100% вероятностью.
Оповещения о регрессиях веб-показателей
Веб-показатели, передаваемые как метрики OpenTelemetry, позволяют создавать оповещения на основе SLO: если P75 LCP превышает 2,5 секунды более чем в 5% сеансов за часовой интервал, создавайте оповещение. Это даёт инженерным командам практичные сигналы, напрямую связанные с пользовательским опытом, а не с метриками серверной инфраструктуры.
Обратный вызов onLCP для веб-показателей
Когда срабатывает обратный вызов onLCP из библиотеки web-vitals?
Повторение урока
Библиотека web-vitals предоставляет простые обратные вызовы для измерения LCP, INP, CLS, FCP и TTFB в браузерах реальных пользователей. Передавайте их как метрики OpenTelemetry для оповещений на основе SLO, захватывайте ошибки с помощью глобальных слушателей и границ обработки ошибок React как интервалы OpenTelemetry, а также загружайте карты исходного кода для восстановления минифицированных трассировок стека. Используйте выборку сеансов, чтобы управлять объёмом данных и сохранять полный охват ошибок.
Часто задаваемые вопросы
Урок «Мониторинг реальных пользователей и Web Vitals» бесплатный?
Да — полный текст урока «Мониторинг реальных пользователей и Web Vitals» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс React Academy, подпишись на CoddyKit PRO. Курс React Academy содержит 4 уроков всего.
Чему я научусь в уроке «Мониторинг реальных пользователей и Web Vitals»?
Собирайте LCP, FID, CLS и пользовательские метки производительности как метрики OpenTelemetry с помощью библиотеки web-vitals Ты практикуешь React Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать React Academy?
Предыдущий опыт не требуется. React Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.
Сколько времени занимает урок «Мониторинг реальных пользователей и Web Vitals»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке React Academy?
Да. Каждый урок React Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Наблюдаемость фронтенда: что это и зачем она нужна
- Трассировки OpenTelemetry из браузера
- Мониторинг реальных пользователей и Web Vitals
- Связывание трассировок фронтенда и бэкенда