К содержанию
ActionPulse

Запись сессии не появилась

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

Кому
Тем, кто включил записи сессий и не видит их
Проверено
На этой странице

Записи сессий отказывают частично: события продолжают собираться, а видео нет. Из-за этого поломку легко не заметить и легко перепутать с настройками. Ниже — разбор по симптомам, от «не собирается» к «собралось, но не открывается».

Сначала три переключателя

Записи выключены по умолчанию, и выключены они дважды: отдельным переключателем и нулевой долей записываемых сессий. Проверьте оба в Настройки → Сбор и приватность → Записи сессий:

  1. «Записывать выбранную долю сессий» — включено.
  2. «Доля записей» — больше нуля.
  3. Тег на сайте отдаёт согласие, если сбор требует согласия.

Изменения подхватываются трекерами в течение минуты и действуют только для новых сессий: историю задним числом они не заполняют. После включения подождите минуту и откройте сайт в новой сессии, а не обновляйте старую вкладку.

Решение проблем

Раздел закрыт заглушкой «Записи действий недоступны»

Вероятная причина. Не доступ по тарифу как таковой, а отсутствие действующего доступа вообще: подписка приостановлена, пробный период закончился, либо в собственной установке подписанная лицензия не содержит ключ записей сессий. Точный текст заглушки — «Функция не включена для текущего проекта. Данные и элементы управления плеером не загружались», и последняя фраза буквальна: запросов к данным записей экран не делал.

Как проверить. Откройте раздел биллинга в кабинете и посмотрите состояние подписки. Со стороны приёма это видно по ответам на отправку частей записи: 403 с кодом feature_locked и сообщением «session replay is not available» означает отсутствие права, 402 с кодом subscription_required — приостановку доступа. В собственной установке смотрите страницу лицензии.

Безопасное исправление. Восстановите подписку или обновите лицензию. Данные при этом не теряются: уже сохранённые записи остаются доступными в пределах срока хранения, как только доступ вернётся.

Если не помогло. Проверьте, не открываете ли вы демонстрационный проект: в публичном демо записи посетителей отключены намеренно, и вместо списка там показывается готовый пример. Это не поломка.

Модуль записи не загрузился

Вероятная причина. Запись выполняет отдельный файл-модуль той же версии, что и ядро трекера. Ядро подгружает его само, с проверкой контрольной суммы, и берёт его с origin самого скрипта, а не с адреса приёма событий. Отказать может любое из четырёх звеньев: файл недоступен по адресу, контрольная сумма не совпала, версия модуля не равна версии ядра, загрузка не уложилась в 10 секунд. Отдельная и самая частая причина — политика безопасности сайта без worker-src blob:: запись использует фоновый поток, остальной сбор — нет.

Как проверить. В сетевой панели должен быть запрос файла replay.js с кодом 200. Дальше по симптомам:

Что видно Причина
запроса replay.js нет вовсе запись не включена конфигурацией или сессия не попала в долю
код 404 файл не выложен по ожидаемому адресу — типично для раздачи со своего домена
в консоли сообщение про integrity сумма модуля не совпала
в консоли сообщение про Content Security Policy и worker или blob не хватает worker-src blob:
файл загрузился, а частей записи не отправляется версия модуля не совпала с версией ядра

Безопасное исправление. Для политики безопасности добавьте worker-src blob:data: для браузеров без поддержки таких потоков); в старых браузерах эту роль играет child-src blob:. Директива unsafe-eval не нужна ни при каких условиях. При раздаче файлов со своего домена выложите весь набор одной версии целиком — расхождение версий разбирается в версиях и контрольных суммах.

Если не помогло. Если модуль недоступен, соответствующая возможность просто не включается, а базовый сбор продолжает работать — поэтому проверять нужно именно наличие файла, а не наличие событий. Ещё одна деталь: в консоли может появиться запрос несуществующего файла карт исходников с кодом 404. Это косметика, на работу записи она не влияет.

При подключении из бандла запись — отдельная возможность, выключенная по умолчанию: её нужно включить в конфигурации клиента, иначе серверная настройка ничего не даст. Удалённых файлов в этом режиме не загружается вовсе.

Согласие не выдано

Вероятная причина. Пока сбор не разрешён, трекер не запрашивает конфигурацию сбора и не загружает модуль записи. Никакой отдельной настройки «записывать без согласия» нет и быть не должно.

Как проверить. В консоли страницы:

pp.getConsent();  // 'granted' — сбор разрешён

Если вернулось pending, denied или revoked, записи не будет по построению. Дополнительный признак: в сетевой панели нет запроса /v1/cfg.

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

Если не помогло. Помните, что отзыв согласия отбрасывает активную запись без досылки: незавершённые части не уходят на сервер. Это осознанное поведение, и оно означает, что сессия, в которой посетитель отозвал согласие, в записях не появится вообще.

Запись открывалась, а теперь «Запись недоступна»

Вероятная причина. Истёк срок хранения. Плеер показывает именно это: «Запись не была сохранена или уже удалена по сроку хранения. События сессии остаются доступны в профиле пользователя». Срок задаётся тарифом и составляет от 7 дней до 90 дней; сверху действует общий предел в 90 дней.

Как проверить. Сравните дату сессии с сегодняшней и со сроком хранения своего тарифа. Если сессия старше — диагноз подтверждён. Если моложе, посмотрите, есть ли у строки в списке значок «Запись»: значение «Нет записи» означает, что видео для этой сессии и не создавалось.

Безопасное исправление. Восстановить истёкшую запись нельзя: истёкшие части удаляются из хранилища, а не скрываются. Стирается только видео — события сессии остаются, и разбор поведения по ним по-прежнему возможен.

Если не помогло. Если запись пропала заметно раньше срока, проверьте, не выполнялось ли в проекте удаление данных человека: это отдельная необратимая процедура, и она стирает записи вместе с остальными данными субъекта.

Запись есть, но пустая или почти вся замаскирована

Вероятная причина. Два независимых механизма. Первый — режим текста «Строгий», он включён по умолчанию: текста страницы в записи нет вообще, видна только структура и поведение. Второй — атрибуты разметки: элемент с data-pp-block не записывается вместе со всем содержимым. Отдельный случай — плеер сообщает «Запись пуста» или «В записи нет полного снимка rrweb»: значит сохранились не все части, а без первой части воспроизводить нечего.

Как проверить. Режим текста виден в **Настройки → Сбор и приватность → Записи сессий → «Текст на странице». Наличие атрибутов проверяется поиском data-pp-block в разметке страницы. Если плеер сообщает об отсутствии полного снимка, посмотрите в списке сессий длительность и число событий: очень короткая сессия часто просто не успевает отдать первую часть.

Безопасное исправление. Если текст нужен для разбора, переключите режим на «Стандартный — маскировать ввод и пароли». Значения полей ввода при этом по-прежнему маскируются всегда, а пароли — безусловно; ослабить это нельзя ни настройкой, ни тарифом. Изменение действует только на новые сессии.

Если не помогло. Проверьте, не оборвалась ли запись по пределу. Пределы одной записи: 60 минут, 10 МиБ на сессию, 512 КиБ на одну часть и 10 000 частей. При достижении любого из них запись останавливается, буфер отбрасывается и в этой сессии не возобновляется, а факт остановки фиксируется событием pp.replay_capped с причиной — его видно в реестре событий. Часовые сессии поддержки в запись целиком не попадут: это осознанный компромисс в пользу предсказуемого объёма.

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

Воспроизведение обрывается или плеер отказывается запускаться

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

Как проверить. Сообщение на экране плеера прямо называет причину:

Сообщение Что произошло
«Запись содержит небезопасную браузерную возможность» в записи встретился элемент или возможность, которые плеер не воспроизводит
«В записи нет полного снимка rrweb» не сохранилась первая часть записи
«Нарушен порядок частей записи» части пришли с пропуском
«Запись превышает безопасный лимит загрузки» суммарный объём больше границы загрузки
«Запись превышает безопасный лимит сложности» слишком много элементов или событий
«Этот браузер не поддерживает безопасную распаковку gzip» устаревший браузер

Безопасное исправление. Границы плеера менять нельзя, и это правильно: воспроизведение чужой страницы в кабинете — самая чувствительная часть продукта. Практический путь — разбирать сессию по событиям и маркерам, а не по видео: в списке событий и в карточке человека есть всё, кроме картинки. При сообщении о распаковке откройте запись в текущей версии Chrome, Edge, Firefox или Safari.

Если не помогло. Если отказ повторяется на всех записях проекта, а не на одной, соберите: адрес страницы плеера, точный текст сообщения и время попытки в UTC. Содержимое записи в поддержку пересылать не нужно и не следует — достаточно текста сообщения.

Список и плеер закрыты сообщением о правах

Вероятная причина. У вас роль «Наблюдатель». Записи требуют роли «Аналитик» или выше — это отдельная граница, не связанная с тарифом.

Как проверить. Посмотрите свою роль в разделе команды проекта. Отличить отказ по правам от отказа по доступу можно по тексту: заглушка о недоступности функции говорит про проект, сообщение о правах — про вас.

Безопасное исправление. Попросите владельца или администратора проекта повысить роль. Повышение роли не открывает доступ к чужим проектам и не меняет уже собранные данные.

Если не помогло. Если роль подходящая, а раздел всё равно закрыт, проверьте частоту запросов: чтение записей ограничено 120 запросами в минуту на пользователя, проект и экран, и при превышении приходит 429 с заголовком Retry-After. Подождите указанное время.

Что проверить

  1. Подписка действует, роль — «Аналитик» или выше.
  2. Переключатель записей включён, доля записей больше нуля.
  3. pp.getConsent() возвращает granted на проблемной странице.
  4. В сетевой панели есть replay.js с кодом 200 и запросы частей записи.
  5. В политике безопасности сайта разрешён worker-src blob:.
  6. Проверка проводится в новой сессии, спустя минуту после изменения настроек.
  7. Дата сессии укладывается в срок хранения тарифа.

Как устроены записи, что в них попадает и как приходить к нужной записи из отчётов — в записях сессий.