Справочник метрик полевых измерений (field/RUM)
Справочник метрик полевых измерений (field/RUM)
Задача документа. Кратко и точно: что измеряет каждая метрика, в каких единицах, какие пороги «хорошо/плохо» и какие у метрик ограничения.
Обозначения статуса: ✅ доступно — метрика собирается сейчас; 🟡 планируется — метрика описана, но в сборе ещё не появилась.
Дополнительно: install-rum-js.md (подключение),
troubleshooting.md (диагностика), faq.md.
1. Core Web Vitals и базовые метрики
| Метрика | Единица | Хорошо | Плохо | Что измеряет | Статус |
|---|---|---|---|---|---|
LCP | мс | ≤ 2500 | > 4000 | Время до отрисовки крупнейшего элемента страницы | ✅ |
INP | мс | ≤ 200 | > 500 | Отзывчивость на взаимодействия пользователя | ✅ |
CLS | безразмерный (score) | ≤ 0.1 | > 0.25 | Визуальные сдвиги контента при загрузке | ✅ |
FCP | мс | ≤ 1800 | > 3000 | Время до первого отрисованного контента | ✅ |
TTFB | мс | ≤ 800 | > 1800 | Время до первого байта ответа сервера | ✅ |
error | счётчик (шт) | 0 | — | Ошибки JS, промисов и загрузки ресурсов (с типом) | ✅ |
Пороги Core Web Vitals — стандартные ориентиры web.dev/Chrome.
2. Разложение TTFB (диагностика сети)
| Метрика | Единица | Хорошо | Плохо | Что измеряет | Статус |
|---|---|---|---|---|---|
TTFB_DNS | мс | ≤ 50 | > 200 | Разрешение имени домена (DNS) | ✅ |
TTFB_TCP | мс | ≤ 100 | > 300 | Установка TCP-соединения (без TLS) | ✅ |
TTFB_TLS | мс | ≤ 100 | > 300 | TLS-рукопожатие (0, если сайт без HTTPS) | ✅ |
TTFB_REQ | мс | ≤ 50 | — | Подготовка и отправка запроса (обычно ≈ 0) | ✅ |
TTFB_RES | мс | ≤ 200 | > 1000 | Ожидание первого байта от сервера | ✅ |
- Сумма частей приблизительно равна общему
TTFB(полезно для проверок). - Пороги для
TTFB_DNS/TCP/TLS/REQ— ориентировочные: в стандартах их нет, трактовка «хорошо/плохо» может уточняться. - На переходах внутри SPA метрики
TTFB_*не собираются (нет данных навигации).
3. Отзывчивость и блокировки главного потока
| Метрика | Единица | Хорошо | Плохо | Что измеряет | Статус |
|---|---|---|---|---|---|
LONGTASK | счётчик (шт) | 0 | > 10 | Число длительных задач (> 50 мс) за просмотр | ✅ |
TBT | мс (сумма) | ≤ 200 | > 600 | Суммарное время блокировки — косвенная оценка | ✅ |
FID | мс | ≤ 100 | > 300 | Задержка первого взаимодействия (устаревшая метрика, если поддерживается браузером) | 🟡 |
TBT— косвенная оценка (без TTI), в интерфейсе это помечается.- Если браузер не поддерживает нужный тип измерений, метрика не собирается: в интерфейсе будет «нет данных», а не «0».
4. Ресурсы и заголовок Timing-Allow-Origin
| Метрика | Единица | Трактовка | Что измеряет | Статус |
|---|---|---|---|---|
RES_COUNT | счётчик (шт) | справочно | Число загруженных ресурсов | ✅ |
RES_SLOW | счётчик (шт) | хорошо 0, плохо > 5 | Ресурсы с длительностью > 1000 мс | ✅ |
RES_BYTES | сумма (байт) | справочно | Суммарный объём ответов — только свой домен и ресурсы с Timing-Allow-Origin | ✅ |
RES_XORIGIN | счётчик (шт) | справочно | Число сторонних ресурсов без Timing-Allow-Origin | ✅ |
- Ограничение: у сторонних ресурсов без
Timing-Allow-Originразмер не передаётся браузером, поэтому такие ресурсы не попадают вRES_BYTES, но учитываются вRES_XORIGIN. Не трактуйтеRES_BYTESкак «полный вес страницы». Как это исправить —install-rum-js.md§6. - Адреса ресурсов не отправляются: собираются только агрегаты (число и объём), списка ресурсов с временами осознанно нет.
5. Просмотры и сессии
| Метрика | Единица | Что измеряет | Статус |
|---|---|---|---|
PV | счётчик (шт) | Просмотр страницы (по одному на каждый реальный переход) | ✅ |
| сессия (идентификатор) | идентификатор | Эфемерный идентификатор сессии, без cookie | ✅ |
sessions | шт | Число уникальных сессий | ✅ |
pv_per_session | отношение | Просмотры на одну сессию | ✅ |
- Сессии считаются по эфемерному идентификатору. Если посетитель использует
старую версию счётчика (без идентификатора), показатели
sessionsиpv_per_sessionне отображаются. - «Сессия» здесь — техническое, неличное понятие: идентификатор живёт в пределах вкладки, перестаёт действовать после 30 минут бездействия и не связывается с персональными данными, IP или другими сайтами.
6. Категориальные разрезы
Разрез показывает распределение — доли категорий (к категориям не применяются минимум/среднее/максимум).
| Разрез | Значение | Откуда | Статус |
|---|---|---|---|
«Устройство» (device_type) | desktop | mobile | tablet | other | определяется сервисом по данным браузера | ✅ |
«Тип навигации» (nav_type) | тип перехода, включая переход внутри SPA | определяется сервисом | ✅ |
«Тип сети» (NET_TYPE) | slow-2g | 2g | 3g | 4g | тип соединения устройства | ✅ |
«Память» (DEV_MEM) | ГБ | объём памяти устройства | ✅ |
CLS_SRC | источник сдвига (тег/класс, без текста и адресов) | измерение сдвигов | 🟡 |
6.1. Что именно распределяется (основание разреза)
У разреза есть основание — то, что считают число и доли категорий:
- Просмотры (по умолчанию) — одна запись на реальный просмотр страницы. Для разрезов «Устройство» и «Тип навигации» основание считается по событиям просмотра, поэтому сумма по категориям равна числу просмотров за выбранный период — это число сопоставимо с посещениями.
- События метрик — все события измерений (LCP, INP, CLS, TTFB и др.). На один просмотр приходится несколько таких событий, поэтому сумма заметно больше числа просмотров (ориентировочно в 15–20 раз) — это не число посещений.
Для разрезов «Тип сети» и «Память» основание всегда Просмотры: эти категории собираются по одному разу на просмотр.
Основание указано прямо в интерфейсе (рядом с подписью разреза), поэтому видно, что именно означает число. По умолчанию используется основание Просмотры — чтобы число было сопоставимо с объёмом трафика.
Пример. За день было 40 просмотров страниц.
- Разрез «Устройство», основание Просмотры → «всего 40 просмотров» (например, 25 mobile + 15 desktop).
- Тот же разрез, основание События метрик → «всего 669 событий»: это 40 просмотров × ~17 измерений на каждый, а не число посещений.
Как читать. Число в разрезе — это не «посетители»: при основании «Просмотры» оно равно числу просмотров страницы, при основании «События метрик» — числу событий измерений. Сравнивать с числом посещений корректно только основание «Просмотры».
CLS_SRC— диагностика причин сдвига, не метрика Core Web Vitals.
7. Ошибки и их группировка
| Поле | Смысл | Статус |
|---|---|---|
тип ошибки (js / promise / resource) | категория события ошибки | ✅ |
| сообщение | текст ошибки, усечённый до 200 символов | ✅ |
| отпечаток | нормализованное сообщение (без чисел, адресов, идентификаторов) + устойчивый ключ → группировка похожих ошибок | 🟡 |
- События от ботов сохраняются, но не попадают в основной индекс метрик.
- До появления группировки по отпечатку ошибки могут выглядеть «раздробленными» на много строк.
8. Сводные ограничения (важно понимать)
- Нет
INPбез взаимодействий — если посетитель не взаимодействовал со страницей,INPне будет; отсутствие метрики ≠ «0». - Сторонние ресурсы без
Timing-Allow-Origin— объём (RES_BYTES) по ним не считается, они видны какRES_XORIGIN. - Лабораторные метрики здесь не собираются — это данные реальных пользователей; результаты Lighthouse/WebPageTest — отдельный источник.
- Зависимость от браузера — часть измерений (длительные задачи, ресурсы, задержка первого взаимодействия, сдвиги, тип соединения, память устройства) зависит от движка браузера: Safari и старые версии могут их не передавать.
- Переходы внутри SPA — не собираются
TTFB_*,FCP,FID. - «Технические» переходы (меняются только параметры запроса или фрагмент) нового просмотра не создают.
- Ограничение размера пакета — 50 событий: при превышении пакет отбрасывается целиком (счётчик сам отбирает и сокращает набор).
- UTC и задержка — агрегация выполняется по UTC-дню; данные за текущий день могут быть неполными.