Собираемые данные RUM и Mobile
Документ описывает формат событий RUM, основанный на схеме rum-events-format:
- Браузер — атрибуты, реально отправляемые Browser SDK версии 7.2.0. Описаны в основных разделах ниже.
- Мобильные приложения (Android, iOS и кросс-платформенные SDK) — атрибуты, специфичные для мобильных агентов, вынесены в отдельный раздел Мобильные приложения (Android / iOS).
Часть атрибутов формируется на стороне сервера приёма данных по тому, что отправил SDK
(IP-адрес и заголовок User-Agent → геолокация, ОС, устройство, браузер; URL → его составные части).
Такие атрибуты помечены как (вычисляется на сервере). Для мобильных агентов сведения об устройстве и ОС
отправляются SDK напрямую (см. мобильный раздел).
На этой странице:
- Общие атрибуты событий
- Атрибуты сессии
- Атрибуты просмотра (View)
- Атрибуты ресурсов (Resource)
- Атрибуты GraphQL
- Атрибуты действий (Action)
- Атрибуты Long Tasks
- Атрибуты ошибок (Error)
- Сигналы фрустрации
- UTM-параметры
- Устройство
- Операционная система
- Браузер (User Agent)
- Геолокация
- Дисплей
- Мобильные приложения (Android / iOS)
Общие атрибуты событий
Эти атрибуты прикрепляются ко всем событиям RUM (view, resource, action, long task, error).
| Атрибут | Описание |
|---|---|
date | Время начала события (в миллисекундах от epoch) |
source | Источник события (для Browser SDK всегда browser) |
context.* | Произвольный пользовательский контекст, добавленный через API (setGlobalContext, addAction и т. п.) |
Приложение и сборка
| Атрибут | Описание |
|---|---|
application.id | UUID приложения RUM |
service | Имя сервиса, заданное в конфигурации |
version | Версия приложения, заданная в конфигурации |
build_version | Версия сборки приложения |
build_id | Уникальный идентификатор сборки, генерируемый инструментарием |
Пользователь
Заполняются, если приложение вызывает setUser(). Допускают произвольные дополнительные поля.
| Атрибут | Описание |
|---|---|
usr.id | Идентификатор пользователя |
usr.name | Имя пользователя |
usr.email | Email пользователя |
usr.anonymous_id | Сквозной идентификатор пользователя между сессиями (при включённом trackAnonymousUser) |
Атрибуты usr.* добавляются через API:
POBP_RUM.setUser({
id: '1234', // обязательное поле
name: 'John Doe', // → usr.name
email: 'john@example.com', // → usr.email
plan: 'premium', // произвольные доп. поля сохраняются как есть
})
POBP_RUM.setUserProperty('plan', 'premium') // добавить/изменить одно поле
POBP_RUM.getUser() // получить текущего пользователя
POBP_RUM.clearUser() // очистить пользователя
usr.anonymous_id собирается автоматически (trackAnonymousUser по умолчанию true).
Чтобы отключить: POBP_RUM.init({ trackAnonymousUser: false }).
Сетевое подключение (Connectivity)
| Атрибут | Описание |
|---|---|
connectivity.status | Состояние подключения устройства (connected, not_connected, maybe) |
connectivity.interfaces | Доступные сетевые интерфейсы (wifi, cellular, ethernet и др.) |
connectivity.effective_type | Оценочный тип соединения по измеренной производительности (slow-2g, 2g, 3g, 4g) |
Флаги функциональности (Feature Flags)
| Атрибут | Описание |
|---|---|
feature_flags.<имя> | Значения feature flags, активных в момент события (прикрепляются к событиям View и Error) |
Значения feature flags добавляются через API:
POBP_RUM.addFeatureFlagEvaluation('new_checkout', true) // → feature_flags.new_checkout
По умолчанию значения прикрепляются к событиям View и Error. Чтобы добавлять их также
к другим типам событий, перечислите их в init:
POBP_RUM.init({
// ...
trackFeatureFlagsForEvents: ['action', 'resource', 'long_task', 'vital'],
})
Глобальный контекст
Произвольные пары ключ/значение, которые прикрепляются ко всем последующим событиям в поле context.*.
POBP_RUM.setGlobalContext({ team: 'billing', tier: 'pro' }) // задать весь контекст
POBP_RUM.setGlobalContextProperty('tier', 'pro') // одно поле → context.tier
POBP_RUM.removeGlobalContextProperty('tier') // удалить одно поле
POBP_RUM.getGlobalContext() // получить текущий контекст
POBP_RUM.clearGlobalContext() // очистить контекст
Атрибуты сессии
Атрибуты пользовательской сессии — агрегированные данные по всей сессии пользователя.
| Атрибут | Описание |
|---|---|
session.id | Случайно сгенерированный идентификатор каждой сессии |
session.type | Тип сессии (user, synthetics, ci_test) |
session.is_active | Показывает, активна ли сессия в данный момент |
session.has_replay | Показывает, есть ли для сессии запись Session Replay |
session.sampled_for_replay | Показывает, попала ли сессия в выборку для Session Replay |
session.ip | IP-адрес клиента (вычисляется на сервере) |
session.referrer | URL предыдущей веб-страницы, с которой пользователь перешёл на текущую |
session.time_spent | Длительность пользовательской сессии |
session.view.count | Количество всех представлений (views), собранных за эту сессию |
session.error.count | Количество всех ошибок, собранных за эту сессию |
session.resource.count | Количество всех ресурсов, собранных за эту сессию |
session.action.count | Количество всех действий, собранных за эту сессию |
session.long_task.count | Количество всех long tasks, собранных за эту сессию |
session.frustration.count | Количество всех сигналов фрустрации, связанных с одной сессией |
Атрибуты сессии агрегируются на сервере из потока событий просмотров.
Атрибуты первого просмотра сессии:
| Атрибут | Описание |
|---|---|
session.initial_view.id | Идентификатор первого RUM view, созданного пользователем |
session.initial_view.url_host | Хост-часть URL |
session.initial_view.url_path | Путь URL |
session.initial_view.url_path_group | Автоматическая группа URL, созданная для похожих адресов |
session.initial_view.url_query | Параметры URL, разобранные на пары ключ/значение |
session.initial_view.url_scheme | Схема URL |
Атрибуты последнего просмотра сессии:
| Атрибут | Описание |
|---|---|
session.last_view.id | Идентификатор последнего RUM view, созданного пользователем |
session.last_view.url_host | Хост-часть URL |
session.last_view.url_path | Путь URL |
session.last_view.url_path_group | Автоматическая группа URL, созданная для похожих адресов |
session.last_view.url_query | Параметры URL, разобранные на пары ключ/значение |
session.last_view.url_scheme | Схема URL |
Атрибуты просмотра (View)
Атрибуты отдельного просмотра страницы.
| Атрибут | Описание |
|---|---|
view.id | UUID просмотра |
view.name | Имя просмотра (может быть задано произвольно через API) |
view.url | URL просмотра |
view.referrer | URL, с которого был выполнен переход на просмотр |
view.loading_type | Тип загрузки просмотра (initial_load, route_change, bf_cache) |
view.is_active | Показывает, является ли просмотр активным |
privacy.replay_level | Уровень приватности Session Replay для просмотра (allow, mask, mask-user-input) |
Таймеры и метрики производительности View
| Атрибут | Описание |
|---|---|
view.time_spent | Время, проведённое на текущем view |
view.loading_time | Время до полной готовности страницы, когда отсутствуют сетевые запросы и изменения DOM |
view.first_byte | Время до получения первого байта запроса документа |
view.dom_interactive | Время до завершения разбора основного HTML-документа |
view.dom_content_loaded | Время до того, как событие DOMContentLoaded было вызвано (документ разобран без подресурсов) |
view.dom_complete | Время до полной готовности страницы и всех её подресурсов |
view.load_event | Время до завершения обработчика события load |
view.custom_timings.<имя> | Пользовательские тайминги, добавленные через addTiming() |
Имя просмотра и пользовательские тайминги задаются через API:
POBP_RUM.setViewName('Checkout') // → view.name
POBP_RUM.addTiming('first_interaction') // → view.custom_timings.first_interaction
Core Web Vitals
Метрики Web Vitals доступны по пути view.performance.*:
| Атрибут | Описание |
|---|---|
view.performance.lcp.timestamp | Момент отрисовки самого крупного DOM-элемента в области видимости (Largest Contentful Paint) |
view.performance.lcp.target_selector | CSS-селектор элемента LCP |
view.performance.lcp.resource_url | URL ресурса элемента LCP |
view.performance.lcp.sub_parts.load_delay | Задержка перед началом загрузки ресурса LCP |
view.performance.lcp.sub_parts.load_time | Время загрузки ресурса LCP |
view.performance.lcp.sub_parts.render_delay | Время от окончания загрузки ресурса LCP до его отрисовки |
view.performance.fcp.timestamp | Момент, когда браузер впервые отрисовал любой контент (First Contentful Paint) |
view.performance.inp.duration | Самый долгий интервал между взаимодействием и следующей отрисовкой (Interaction to Next Paint) |
view.performance.inp.timestamp | Момент начала взаимодействия, давшего INP |
view.performance.inp.target_selector | CSS-селектор элемента, связанного с INP |
view.performance.inp.sub_parts.input_delay | Задержка ввода до начала обработки события |
view.performance.inp.sub_parts.processing_duration | Время выполнения обработчиков события |
view.performance.inp.sub_parts.presentation_delay | Время отрисовки после обработки события |
view.performance.cls.score | Суммарный показатель неожиданных смещений макета (Cumulative Layout Shift) |
view.performance.cls.timestamp | Момент наибольшего смещения макета, влияющего на CLS |
view.performance.cls.target_selector | CSS-селектор элемента, дающего наибольший вклад в CLS |
Устаревшие «плоские» атрибуты (
view.largest_contentful_paint,view.first_contentful_paint,view.interaction_to_next_paint,view.cumulative_layout_shiftи соответствующие*_target_selector/*_time) по-прежнему отправляются для обратной совместимости, но являются устаревшими — используйтеview.performance.*. Метрика First Input Delay (FID) больше не собирается Browser SDK; используйте INP.
Прокрутка (Scroll)
| Атрибут | Описание |
|---|---|
display.scroll.max_depth | Максимальная глубина прокрутки на просмотре (в пикселях) |
display.scroll.max_depth_scroll_top | Положение прокрутки в момент достижения максимальной глубины (в пикселях) |
display.scroll.max_scroll_height | Максимальная общая высота прокрутки страницы (в пикселях) |
display.scroll.max_scroll_height_time | Время от начала просмотра до достижения максимальной высоты прокрутки |
Счётчики View
| Атрибут | Описание |
|---|---|
view.error.count | Количество всех ошибок, собранных для этого view |
view.long_task.count | Количество всех long tasks, собранных для этого view |
view.resource.count | Количество всех ресурсов, собранных для этого view |
view.action.count | Количество всех действий, собранных для этого view |
view.frustration.count | Количество всех сигналов фрустрации, связанных с одним view |
Атрибуты ресурсов (Resource)
Данные о загрузке ресурсов (документ, CSS, JavaScript, изображения, шрифты, XHR/Fetch, beacon и др.).
Таймеры загрузки ресурсов
| Атрибут | Описание |
|---|---|
resource.duration | Общее время загрузки ресурса |
resource.redirect.duration | Время, затраченное на перенаправления (redirect) |
resource.dns.duration | Время DNS-разрешения имени хоста |
resource.connect.duration | Время установки соединения с сервером |
resource.ssl.duration | Время TLS-рукопожатия |
resource.first_byte.duration | Время ожидания первого байта ответа |
resource.download.duration | Время, затраченное на загрузку тела ответа |
resource.worker.duration | Время фазы Service Worker (если применимо) |
У каждой фазы также доступно поле .start — смещение начала фазы относительно начала запроса.
Свойства ресурсов
| Атрибут | Описание |
|---|---|
resource.id | UUID ресурса |
resource.type | Тип ресурса (document, xhr, fetch, beacon, css, js, image, font, media, other) |
resource.method | HTTP-метод (GET, POST и т. д.; доступен для fetch/XHR) |
resource.status_code | HTTP-код ответа |
resource.url | URL ресурса |
resource.size | Размер тела ответа после декодирования (в байтах) |
resource.encoded_body_size | Размер тела ответа до снятия кодирования (в байтах) |
resource.decoded_body_size | Размер тела ответа после снятия кодирования (в байтах) |
resource.transfer_size | Размер переданного по сети ресурса (в байтах) |
resource.protocol | Сетевой протокол загрузки ресурса (например, http/1.1, h2) |
resource.delivery_type | Способ доставки ресурса (cache, navigational-prefetch, other) |
resource.render_blocking_status | Блокирует ли ресурс отрисовку (blocking, non-blocking) |
resource.request.headers.* | HTTP-заголовки запроса (если включён сбор заголовков) |
resource.response.headers.* | HTTP-заголовки ответа (если включён сбор заголовков) |
resource.url_host | Хост-часть URL ресурса (вычисляется на сервере) |
resource.url_path | Путь URL ресурса (вычисляется на сервере) |
resource.url_query | Параметры URL, разобранные на пары ключ/значение (вычисляется на сервере) |
resource.url_scheme | Протокол URL — HTTP или HTTPS (вычисляется на сервере) |
Провайдер ресурсов
| Атрибут | Описание |
|---|---|
resource.provider.name | Имя поставщика ресурса |
resource.provider.domain | Домен поставщика ресурса |
resource.provider.type | Тип поставщика ресурса (first party, cdn, ad, analytics, content, tag-manager и др.) |
Атрибуты GraphQL
Доступны при использовании GraphQL API в веб-приложении.
| Атрибут | Описание |
|---|---|
resource.graphql.operationType | Тип GraphQL-операции: query, mutation или subscription |
resource.graphql.operationName | Имя GraphQL-операции, если указано |
resource.graphql.variables | Переменные GraphQL, переданные в запросе |
resource.graphql.payload | Содержимое GraphQL-операции (доступно только при включённом trackPayload) |
resource.graphql.error_count | Количество ошибок в GraphQL-ответе (доступно при включённом trackResponseErrors) |
resource.graphql.errors | Массив ошибок GraphQL с message, code, locations и path (доступно при включённом trackResponseErrors) |
Сбор метаданных GraphQL включается параметром allowedGraphQlUrls в init:
POBP_RUM.init({
// ...
allowedGraphQlUrls: [
{
match: 'https://api.example.com/graphql',
trackPayload: true, // → resource.graphql.payload
trackResponseErrors: true, // → resource.graphql.error_count, resource.graphql.errors
},
],
})
Атрибуты действий (Action)
Данные о действиях пользователей (клики и пользовательские действия).
Таймеры и счётчики действий
| Атрибут | Описание |
|---|---|
action.loading_time | Время загрузки действия |
action.long_task.count | Количество всех long tasks, собранных для этого действия |
action.resource.count | Количество всех ресурсов, собранных для этого действия |
action.error.count | Количество всех ошибок, собранных для этого действия |
Свойства действий
| Атрибут | Описание |
|---|---|
action.id | UUID пользовательского действия |
action.type | Тип действия (click — автоматически собираемый, custom — добавленный через API) |
action.name | Понятное имя действия (например, Click on #checkout) |
action.target.name | Элемент, с которым взаимодействовал пользователь (только для автоматически собираемых действий) |
action.target.selector | CSS-селектор элемента, с которым было выполнено действие |
action.target.width | Ширина элемента, с которым было выполнено действие (в пикселях) |
action.target.height | Высота элемента, с которым было выполнено действие (в пикселях) |
action.position.x | Координата X клика относительно целевого элемента (в пикселях) |
action.position.y | Координата Y клика относительно целевого элемента (в пикселях) |
action.frustration.type | Тип сигнала фрустрации (dead_click, rage_click, error_click) |
action.view.in_foreground | Показывает, находился ли view на переднем плане (в фокусе браузера) в момент выполнения действия |
В сериализованном событии поля target.selector, target.width, target.height, position.x, position.y,
а также способ вычисления имени (name_source) и селектор по composed path (composed_path_selector)
находятся внутри _dd.action.
Автоматический сбор кликов управляется параметром trackUserInteractions в init.
Пользовательские действия (action.type = custom) добавляются через API:
POBP_RUM.addAction('checkout_completed', { cart_value: 42 }) // доп. данные → context.*
Атрибуты Long Tasks
Длинные задачи — задачи, которые блокируют основной поток UI на продолжительный период. Long Animation Frames (LoAF) собираются как long tasks.
| Атрибут | Описание |
|---|---|
long_task.id | UUID длинной задачи или длинного кадра анимации |
long_task.entry_type | Тип записи (long-task или long-animation-frame) |
long_task.duration | Длительность long task |
long_task.blocking_duration | Время, в течение которого кадр анимации был заблокирован |
long_task.render_start | Момент начала цикла отрисовки |
long_task.start_time | Время начала длинного кадра анимации |
long_task.scripts.* | Подробности скриптов, выполнявшихся в течение длинного кадра (для LoAF) |
Атрибуты ошибок (Error)
| Атрибут | Описание |
|---|---|
error.id | UUID ошибки |
error.source | Источник ошибки (source, network, console, custom, report) |
error.type | Тип/класс произошедшей ошибки |
error.message | Сообщение об ошибке |
error.stack | Трассировка стека ошибки |
error.handling | Была ли ошибка обработана вручную в коде (handled, unhandled) |
error.handling_stack | Стек вызова в месте обработки ошибки |
error.source_type | Тип источника стека ошибки (для Browser SDK — browser) |
error.causes | Цепочка причин ошибки (массив с message, type, stack, source) |
error.fingerprint | Отпечаток для пользовательской группировки в Error Tracking |
error.component_stack | Стек компонентов (для ошибок в React-приложениях) |
error.csp.disposition | Для ошибок CSP: режим применения нарушенной политики (enforce, report) |
error.view.in_foreground | Показывает, находился ли view на переднем плане (в фокусе браузера) в момент ошибки |
Ошибки из источников source (необработанные JS-исключения), network, console и report (ReportingObserver)
собираются автоматически. Пользовательские ошибки (error.source = custom) добавляются через API:
POBP_RUM.addError(new Error('Что-то пошло не так'), { context: 'checkout' }) // доп. данные → context.*
Сигналы фрустрации
Сигналы фрустрации позволяют выявлять моменты, когда пользователь испытывает затруднения при работе с приложением.
| Атрибут | Описание |
|---|---|
session.frustration.count | Количество всех сигналов фрустрации, связанных с одной сессией |
view.frustration.count | Количество всех сигналов фрустрации, связанных с одним view |
action.frustration.type | Тип сигнала фрустрации (dead_click, rage_click, error_click) |
Типы сигналов фрустрации:
- Dead click — пользователь нажимает на статичный элемент, который не производит никаких действий на странице
- Rage click — пользователь нажимает на элемент более трёх раз за односекундное скользящее окно
- Error click — пользователь нажимает на элемент непосредственно перед возникновением ошибки JavaScript
UTM-параметры
Параметры маркетинговых кампаний разбираются из строки запроса URL (вычисляется на сервере).
| Атрибут | Описание |
|---|---|
view.url_query.utm_source | Параметр в URL, отслеживающий источник трафика |
view.url_query.utm_medium | Параметр в URL, отслеживающий канал трафика |
view.url_query.utm_campaign | Параметр в URL, идентифицирующий маркетинговую кампанию |
view.url_query.utm_content | Параметр в URL, идентифицирующий конкретный элемент кампании |
view.url_query.utm_term | Параметр в URL, отслеживающий ключевое слово кампании |
Устройство
device.type, device.brand, device.model, device.name определяются на сервере по заголовку User-Agent.
device.locale, device.locales, device.time_zone отправляются Browser SDK напрямую.
| Атрибут | Описание |
|---|---|
device.type | Тип устройства (desktop, mobile, tablet, tv, gaming_console, bot, other) — вычисляется на сервере |
device.brand | Производитель устройства (бренд) — вычисляется на сервере |
device.model | Модель устройства (SKU) — вычисляется на сервере |
device.name | Маркетинговое название устройства — вычисляется на сервере |
device.locale | Локаль пользователя (язык + регион), например en-US |
device.locales | Упорядоченный список предпочитаемых языков пользователя |
device.time_zone | Часовой пояс устройства, например Europe/Berlin |
Операционная система
Определяется на сервере по заголовку User-Agent.
| Атрибут | Описание |
|---|---|
os.name | Название операционной системы |
os.version | Полная версия операционной системы |
os.version_major | Основная (мажорная) версия операционной системы |
os.build | Номер сборки операционной системы |
Браузер (User Agent)
Определяется на сервере по заголовку User-Agent, отправляемому клиентом.
| Атрибут | Описание |
|---|---|
ua.name | Название user agent’а (браузера) |
ua.version | Версия user agent’а (браузера) |
ua.string | Полная строка user agent, отправляемая клиентом |
Геолокация
Геолокация определяется на стороне сервера на основе IP-адреса клиента.
| Атрибут | Описание |
|---|---|
geo.ip | IP-адрес клиента, использованный для геолокации |
geo.country | Код страны, определённый на основе IP-адреса пользователя |
geo.region | Регион или область, определённые на основе IP-адреса пользователя |
geo.city | Город, определённый на основе IP-адреса пользователя |
Дисплей
| Атрибут | Описание |
|---|---|
display.viewport.width | Ширина видимой области экрана пользователя в пикселях |
display.viewport.height | Высота видимой области экрана пользователя в пикселях |
Мобильные приложения (Android / iOS)
Мобильные агенты (Android, iOS и кросс-платформенные SDK — Flutter, React Native, Kotlin Multiplatform и др.) используют тот же формат событий RUM, что и браузер: общие атрибуты (сессия, просмотр, ресурс, действие, ошибка, пользователь, флаги функциональности) собираются точно так же.
Ниже описаны атрибуты и события, специфичные для мобильных платформ.
Источник события
| Атрибут | Описание |
|---|---|
source | Платформа источника: android, ios, flutter, react-native, kotlin-multiplatform, unity, roku и др. |
Устройство и ОС (мобильные)
В отличие от браузера, мобильные SDK отправляют сведения об устройстве и ОС напрямую (не вычисляются на сервере), а также добавляют аппаратные характеристики.
| Атрибут | Описание |
|---|---|
device.type | Тип устройства (mobile, tablet, tv и др.) |
device.brand | Производитель устройства (например, Apple, Samsung, Xiaomi) |
device.model | Модель устройства (SKU), например SM-988GN |
device.name | Маркетинговое название устройства, например Pixel 5 |
device.architecture | Архитектура CPU устройства |
device.battery_level | Текущий уровень заряда батареи (от 0.0 до 1.0) |
device.power_saving_mode | Включён ли режим энергосбережения |
device.brightness_level | Текущий уровень яркости экрана (от 0.0 до 1.0) |
device.logical_cpu_count | Количество логических ядер CPU, доступных в момент выполнения |
device.total_ram | Общий объём оперативной памяти (в мегабайтах) |
device.is_low_ram | Считается ли устройство low-RAM (Android) |
device.locale | Локаль пользователя (язык + регион), например en-US |
device.locales | Упорядоченный список предпочитаемых языков пользователя |
device.time_zone | Часовой пояс устройства, например Europe/Berlin |
os.name | Название ОС (например, Android, iOS) |
os.version | Полная версия ОС, например 8.1.1 |
os.version_major | Мажорная версия ОС |
os.build | Номер сборки ОС, например 15D21 |
application.current_locale | Текущая локаль пользователя с учётом поддерживаемых приложением языков, например es-FR |
Доступность (Accessibility)
Системные настройки доступности устройства на момент просмотра (поле view.accessibility.*).
| Атрибут | Описание |
|---|---|
view.accessibility.text_size | Предпочитаемый масштаб текста относительно системного по умолчанию |
view.accessibility.screen_reader_enabled | Активна ли программа чтения с экрана |
view.accessibility.bold_text_enabled | Включён ли жирный шрифт |
view.accessibility.reduce_transparency_enabled | Включено ли уменьшение прозрачности |
view.accessibility.reduce_motion_enabled | Включено ли уменьшение движения |
view.accessibility.reduced_animations_enabled | Предпочитает ли пользователь уменьшенные анимации/кросс-фейды |
view.accessibility.button_shapes_enabled | Включены ли формы кнопок |
view.accessibility.invert_colors_enabled | Включена ли инверсия цветов |
view.accessibility.increase_contrast_enabled | Включено ли повышение контраста |
view.accessibility.should_differentiate_without_color | Следует ли различать элементы интерфейса без опоры на цвет |
view.accessibility.grayscale_enabled | Включён ли чёрно-белый режим экрана |
view.accessibility.closed_captioning_enabled | Включены ли субтитры при воспроизведении медиа |
view.accessibility.mono_audio_enabled | Включён ли моно-звук |
view.accessibility.video_autoplay_enabled | Включено ли автовоспроизведение видео |
view.accessibility.assistive_switch_enabled | Включён ли альтернативный ввод (Switch Control / Switch Access) |
view.accessibility.assistive_touch_enabled | Включён ли AssistiveTouch |
view.accessibility.speak_screen_enabled | Включена ли функция «Проговаривание экрана» |
view.accessibility.speak_selection_enabled | Включено ли озвучивание выделенного текста |
view.accessibility.shake_to_undo_enabled | Включена ли функция «Встряхнуть для отмены» |
view.accessibility.single_app_mode_enabled | Заблокировано ли устройство в режиме одного приложения (Guided Access / Screen Pinning) |
view.accessibility.on_off_switch_labels_enabled | Включены ли метки вкл/выкл для переключателей |
view.accessibility.rtl_enabled | Включена ли поддержка письма справа налево |
Сетевое подключение (мобильное)
В дополнение к общим полям Connectivity мобильные SDK сообщают данные сотовой сети.
| Атрибут | Описание |
|---|---|
connectivity.cellular.technology | Тип радиотехнологии сотовой связи |
connectivity.cellular.carrier_name | Имя оператора SIM-карты |
Мобильные метрики производительности View
Специфичные для мобильных приложений атрибуты потребления ресурсов устройства и качества рендеринга. Замороженным кадром считается кадр, рендеринг которого занимает аномально долго и приводит к видимому «зависанию» интерфейса (порог зависит от платформы).
CPU и память:
| Атрибут | Описание |
|---|---|
view.cpu_ticks_count | Общее количество CPU-тиков за всё время жизни просмотра |
view.cpu_ticks_per_second | Среднее количество CPU-тиков в секунду при рендеринге просмотра |
view.memory_average | Средний объём используемой памяти за время жизни просмотра (в байтах) |
view.memory_max | Пиковый объём используемой памяти за время жизни просмотра (в байтах) |
Рендеринг и кадры:
| Атрибут | Описание |
|---|---|
view.is_slow_rendered | Был ли у просмотра низкий средний refresh rate |
view.refresh_rate_average | Средняя частота обновления экрана во время просмотра (кадров/с) |
view.refresh_rate_min | Минимальная частота обновления экрана во время просмотра (кадров/с) |
view.slow_frames_rate | Доля медленных кадров за время жизни просмотра (мс на секунду) |
view.slow_frames | Список медленных кадров (start, duration) |
view.frozen_frame.count | Количество замороженных кадров за время жизни просмотра |
view.freeze_rate | Доля «зависаний» за время жизни просмотра (секунд на час) |
view.flutter_build_time | Время выполнения методов build во Flutter |
view.flutter_raster_time | Время растеризации просмотра во Flutter |
view.js_refresh_rate | Частота обновления JavaScript для React Native |
Видимость и навигация:
| Атрибут | Описание |
|---|---|
view.in_foreground_periods | Список периодов, когда просмотр находился на переднем плане (start, duration) |
view.network_settled_time | Время от старта просмотра до завершения всех начальных сетевых запросов |
view.interaction_to_next_view_time | Время от последнего взаимодействия на предыдущем просмотре до отображения текущего |
view.loading_type | Тип загрузки просмотра: activity_display, activity_redisplay, fragment_display, fragment_redisplay, view_controller_display, view_controller_redisplay |
Мобильные действия (Action)
| Атрибут | Описание |
|---|---|
action.type | Тип действия на мобильных: tap, scroll, swipe, application_start, back |
action.frustration.type | Типы сигналов фрустрации на мобильных: rage_tap, error_tap |
_dd.action.target.permanent_id | Стабильный уникальный идентификатор UI-элемента (хэш пути) для связи действий с wireframe в Session Replay |
Ошибки и сбои (Error / Crash)
В дополнение к общим атрибутам ошибок мобильные агенты собирают данные о сбоях приложения.
| Атрибут | Описание |
|---|---|
error.is_crash | Привёл ли сбой к аварийному завершению приложения |
error.category | Категория ошибки: ANR, App Hang, Exception, Watchdog Termination, Memory Warning, Network |
error.source_type | Тип источника стека: android, ios, react-native, flutter, ndk, ios+il2cpp, ndk+il2cpp и др. |
error.time_since_app_start | Время от запуска приложения до возникновения ошибки (в миллисекундах) |
error.was_truncated | Был ли какой-либо из стеков усечён из-за минификации |
error.threads | Описание каждого потока в момент сбоя (name, crashed, stack, state) |
error.binary_images | Список бинарных образов (нативных библиотек) для символизации (uuid, name, is_system, load_address, max_address, arch) |
error.meta.* | Платформенные метаданные сбоя (code_type, parent_process, incident_identifier, process, exception_type, exception_codes, path) |
freeze.duration | Длительность зависания основного потока для ошибок App Hang / ANR (в наносекундах) |
Счётчики сбоев также агрегируются на уровне просмотра и действия: view.crash.count и action.crash.count.
Vital-события
Vital-события — отдельный тип событий (type: vital), собираемый мобильными SDK для измерения
длительных операций и запуска приложения.
Общие свойства Vital:
| Атрибут | Описание |
|---|---|
vital.id | UUID vital-события |
vital.name | Имя vital (используется как путь фасета для значения) |
vital.description | Описание vital (вторичный идентификатор: URL, имя компонента и т. п.) |
Vital типа Duration (vital.type: duration):
| Атрибут | Описание |
|---|---|
vital.duration | Длительность измеряемой операции (в наносекундах) |
Vital запуска приложения (vital.type: app_launch):
| Атрибут | Описание |
|---|---|
vital.app_launch_metric | Метрика запуска: ttid (time to initial display) или ttfd (time to full display) |
vital.duration | Длительность запуска (в наносекундах) |
vital.startup_type | Тип запуска: cold_start или warm_start |
vital.is_prewarmed | Был ли запуск предварительно прогрет (prewarmed) |
vital.has_saved_instance_state_bundle | Был ли при запуске сохранён instance state bundle (Android) |
Vital шага операции (vital.type: operation_step):
| Атрибут | Описание |
|---|---|
vital.operation_key | Ключ для различения параллельных операций с одинаковым именем |
vital.step_type | Тип шага операции: start, update, retry, end |
vital.failure_reason | Причина сбоя шага, если применимо: error, abandoned, other |