Диагностика проблем со счётчиком полевых метрик (field/RUM)
Диагностика проблем со счётчиком полевых метрик (field/RUM)
Задача документа. Быстро понять, почему данных нет или почему метрика отсутствует, и что сделать. Диагностика идёт «снизу вверх»: сначала убеждаемся, что данные уходят из браузера, затем — что они принимаются, затем — что они корректно отображаются.
Дополнительно: install-rum-js.md,
metrics.md, faq.md.
0. Универсальная последовательность проверки
- Откройте сайт с открытыми инструментами разработчика (вкладка Network, фильтр
rum). - Покиньте страницу или скройте вкладку: данные отправляются при уходе/скрытии страницы или при смене адреса, а не сразу при загрузке.
- Найдите запрос
POST /v1/rum→ ответ200с телом{"ok":true}. - Если запроса нет → разделы 1–2.
- Если запрос уходит и получает
200, но данных в аналитике нет → разделы 3–5.
1. Данных нет вообще: запрос не уходит
| Причина | Признак | Решение |
|---|---|---|
| Токен не задан | нет запросов; в коде пустой токен | задать токен проекта в коде встраивания; при пустом токене счётчик молча ничего не отправляет |
| Адрес сервиса задан относительным путём | запрос уходит на ваш домен (site.ru/v1/rum) и получает 404 | указать абсолютный адрес https://seo-tools.velizarov.ru/v1/rum |
| Скрипт не загрузился | в Network нет самого файла скрипта | см. §2 (CSP и адрес скрипта) |
| Доля сбора равна нулю или очень мала | запросы редки или отсутствуют | задать data-sample="1.0" для полного сбора |
Как отладить на странице: временно добавьте data-debug="true" → в консоли
браузера появятся сообщения счётчика (например, sent via sendBeacon N events).
2. Скрипт блокируется политикой безопасности (CSP)
Признак: в консоли браузера сообщения вида Refused to load the script ... because it violates Content-Security-Policy или Refused to connect ....
Решение: разрешите домен сервиса и для загрузки скрипта, и для отправки данных:
script-src 'self' https://seo-tools.velizarov.ru;
connect-src 'self' https://seo-tools.velizarov.ru;
- Если вы используете вариант с
window.RUM_CONFIG(инлайновый<script>), для него нужен nonce/hash либо переход на вариант сdata-*—install-rum-js.md§3–4.
3. Запрос уходит, но сервис «молча» его отбрасывает
Сервис приёма отвечает 200 {"ok":true} всегда: по коду ответа нельзя судить,
приняты ли данные. Причины «тихого» отбрасывания:
| Причина | Как проверить | Решение |
|---|---|---|
| Приём событий для проекта выключен | настройки проекта в личном кабинете | включить приём событий для проекта |
| Токен отозван или выключен | список токенов проекта в личном кабинете | включить токен или выпустить/заменить его |
| Токен от другого проекта | сверьте время последнего использования у нужного проекта | использовать токен нужного проекта |
| Набор метрик несовместим | на сайте используется расширенный набор, а сервис его ещё не поддерживает | привести набор на сайте в соответствие с поддержкой сервиса: расширенный набор включается на стороне сервиса до перехода сайта на metrics="v2" |
Критично: пакет данных проверяется целиком. Одиночное неизвестное имя метрики → отбрасывается весь пакет. Поэтому набор на сайте сначала проверяют, а затем переводят на расширенный.
Хороший признак приёма: время последнего использования токена в личном кабинете. Если оно обновляется — данные доходят; если нет — они отбрасываются или не уходят.
4. Запрос доходит, но метрики «нет»
| Симптом | Причина | Что делать |
|---|---|---|
Нет INP | посетитель не взаимодействовал со страницей | ожидаемо; INP появляется после первого взаимодействия |
Нет RES_BYTES или объём «маленький» | сторонние ресурсы без Timing-Allow-Origin | добавить заголовок на ответы CDN; смотреть RES_XORIGIN |
Нет TTFB_*, FCP, FID при переходе внутри SPA | у перехода нет данных навигации | ожидаемо: эти метрики собираются только при полной загрузке страницы |
Нет NET_TYPE / DEV_MEM | браузер не передаёт тип соединения или объём памяти (Safari, старые версии) | ожидаемо |
RES_BYTES выглядит завышенным | это оценка по доступным ресурсам, а не сетевой вес | воспринимать как справочную оценку |
| Сессии пусты | используется старая версия счётчика без идентификатора сессии | подключить актуальную версию скрипта и metrics="v2" |
| Ошибки «раздроблены» на много строк | группировка похожих ошибок ещё не включена | 🟡 планируется: группировка по отпечатку |
5. Проблемы с количеством и дублями
| Симптом | Причина | Что делать |
|---|---|---|
| Просмотр «двойной» | просмотр считается только при смене адреса страницы | проверить, что роутер меняет именно адрес, а не только параметры или фрагмент |
| Много просмотров на страницу | частые реальные переходы и обновления | норма; сверьте тип перехода |
| Пакет не уходит (тихий отброс) | слишком много событий (более 50) | снизить набор метрик или включить долю сбора data-sample |
| «Сегодня пусто» | агрегация по UTC и задержка агрегации | смотрите предыдущий UTC-день; учитывайте свой часовой пояс |
6. Расхождение ожиданий по приватности и согласию
- Счётчик не использует cookie, не отправляет
referrer, IP, параметры запроса и фрагмент адреса (это нормальное поведение, а не поломка). - Учёт сигналов «не отслеживать» (DNT/GPC) и автоматическая связка с consent-баннером
пока не реализованы —
install-rum-js.md§7. До этого подключайте счётчик после получения согласия.
7. Когда обращаться в поддержку
Если запросы уходят и получают 200, приём событий для проекта включён, токен
активен и время последнего использования обновляется, а данных на странице
аналитики нет — это уже вопрос к отображению данных. Соберите факты и передайте в
поддержку:
- адрес страницы;
- время (в UTC), когда смотрели данные;
- какие метрики ожидали увидеть;
- время последнего использования токена;
- фрагменты запроса и ответа из вкладки Network (без токена в открытом виде — достаточно факта запроса и кода ответа).