日志数据说明

本文介绍用户体验监控日志中的数据含义。

概览

用户体验监控日志包含明细表和聚合表。

明细表:ViewResourceExceptionActionCustomApplicationSystem

聚合表:Session

其中,Application表和System表只有原生App监控使用。

名词解释

  • 属性(Attribute):索引,一般为String类型,对数据进行分组、过滤、聚合等作用,不可量化但具备有限可枚举性、索引。

  • 度量(Measure):索引,一般为Number类型,是可量化的值。

  • 元数据(Metadata):默认非索引,作为描述数据的数据,主要是描述数据属性的信息。

公共属性

公共属性需要建立索引,是数据过滤和聚合的重要组成部分,在明细表和聚合表中都将存在。同一SessionID在一般情况下公共属性的值保持一致,但也有可能不同,例如Session内切换账号后uid不同导致的差异。

属性名

类型

指标项

说明

timestamp

long

发生时间

事件发生的开始时间,如果没有则取系统时间补齐。

event_type

string

事件类型

view、resource、exception、longtask、action、custom,以及聚合表session。

event_id

string

事件ID

viewsession之外的resource、exception、longtask、actioncustom。

app.id

string

应用ID

创建RUM应用生成的唯一应用ID。

app.version

string

应用版本

用户自己定义的版本号。

app.channel

string

应用渠道

应用渠道。

app.env

string

环境信息

环境类型,用于区分生产pord(默认)、灰度gray、预发pre等。

app.type

string

应用类型

对应用户创建应用时的应用类型,由上报和数据流双边指定,取值:

  • android

  • ios

  • browser

  • miniapp

app.package

string

应用包名

Package在不同的平台下对应着不同定义:

  • Android:PackageName

  • iOS:BundleIdentifier

  • 小程序:AppId

  • 浏览器:用户自定义

user.id

string

用户ID

用户ID,初始化SDK时可主动传入,不配置SDK随机生成。

user.name

string

用户名

用户名称,需要自定义配置。

user.tags

string

用户标签

用户标签。

device.id

string

设备ID

设备ID。

device.type

string

设备类型

设备报告的设备类型,例如:移动手机、PC。

device.brand

string

设备品牌

设备报告的设备品牌,例如:mac、iPad、华为、小米。

device.model

string

设备型号

设备报告的设备型号。

device.name

string

设备名称

设备报告的设备名称。

os.type

string

操作系统

设备报告的操作系统名称。

os.version

string

操作系统版本

设备报告的操作系统版本。

os.container

string

容器类型

例如:Chrome、微信小程序、App(应用名称)。

os.container_version

string

容器版本

例如:Chrome的版本。

geo.country

string

国家

国家名称。

geo.country_id

string

国家ISO

国家的ISO代码。

geo.province

string

省份/地域

省份或地域名称。

geo.province_id

string

区域 Code

省份或地域Code。

geo.city

string

城市

城市名称。

geo.city_id

string

城市 Code

城市Code。

isp.id

string

运营商ID

运营商ID。

isp.name

string

运营商名称

运营商名称。

net.model

string

接入方式

网络接入方式:2G、3G、4G、5G、WIFI、Unknown等,根据具体平台信息返回。

net.name

string

网络名称

Ethernet名称。

公共Measure

指标

类型

描述

times

int

事件发生的次数,默认值是1。

公共Metadata

字段名

类型

描述

os.user_agent

string

上报请求头。

net.ip

string

客户端IP

device.sr

string

屏幕分辨率。

os.container_vp

string

页面大小分辨率。

明细表设计

View

可交互的用户视图,关注访问量和相关性能数据,View是针对视图的归类,分为:

  • PV:用于计算View被访问的数量,每次View的访问PV必须上报,是关联各种事件,计算各种时序指标的基础数据。

  • Webvitals:基于Google提出的视图性能三大指标,由于采集时机差异较大且标准边界清晰,采取单独存储。

  • Perf:视图常见性能数据,是一个相对比较杂指标类别,基于Perfmonce标准,此类型关注页面客观性能,可因主观改变的性能不包含在内()。

    说明

    看主观改变的性能例如:页面停留时长。从定义角度来说,页面停留时长是用户的一种行为数据,放在Action中去管理更合理。

WebvitalsPerf为可选上报的类型,原生视图可能不适用。

Attributes

属性名

类型

指标项

描述

session.id

string

会话ID

关联的Session。

view.id

string

视图ID

为每个页面视图随机生成的ID。

view.name

string

视图名称

针对一类视图的别名,默认为URLpath部分,可以基于规则进行匹配或用户主动配置。

view.loading_type

string

视图加载方式

视图加载类型:

  • initial_load

  • route_change

view.type

string

视图事件类型

View事件类型:

  • pv

  • perf

view.view_type

string

视图渲染类型

-

Measures

属性

类型

指标项

描述

view.time_spent

long (ms)

页面

在当前视图上花费的时间。

view.largest_contentful_paint

long (ms)

最大内容渲染耗时

页面加载时间线中呈现视图中最大DOM对象(屏幕上可见)的时刻,大于2.5秒标记为慢。

view.first_input_delay

long (ms)

首次输入延迟耗时

从用户第一次与页面交互到浏览器响应之间经过的时间。

view.cumulative_layout_shift

long

累积布局配置偏移

量化由于动态加载的内容(例如第三方广告)而导致的意外页面移动,其中0表示没有发生变化。

view.first_contentful_paint

long (ms)

首次内容渲染耗时(白屏时间)

FCP浏览器首次呈现text、image(包括背景图像)、非白色CanvasSVG的时间。

view.dom_interactive

long (ms)

首次可交互时间

内容可交互时间。

view.dom_content_loaded

long (ms)

HTML完全加载时间(DOM Ready 耗时)

当初始HTML文档完全加载和解析时触发事件,无需等待非渲染阻塞stylesheets、imagessubframes完成加载。

view.dom_complete

long (ms)

DOM

页面和所有子资源都准备好了。对于用户Loading已停止旋转。

view.load_event

long (ms)

页面完全加载时间

页面完全加载时触发的事件。通常是附加应用程序逻辑的触发器。

说明

小于2秒的页面载入时间被认为是优良的,而且高达4秒是可接受的。 大于5秒的页面载入时间不仅影响网站的搜索引擎排名,还会严重影响用户体验。

Metadata

属性名

类型

描述

view.referrer

string

上一个网页的URL,从该网页链接到当前请求的页面。

view.url

string

View对应的URL,完整的URL包含了scheme协议、host、path、query、hash部分。

view.timing_data

string

PerformanceResourceTimingJSONString。

view.snapshots

string

View快照JSONString,主要用于原生App。

Resource

Resource事件是针对网络请求的归纳,基于HTTP协议和Perfmonce标准制定的RUM事件类型。由于 Perfmonce在不同的平台环境下有不少的差异,RUM针对这部分差异做了修正拉齐。

从业务和习惯出发,Resource分为静态资源和API两大类别,本质上来说,静态资源和API没有任何区别,都是HTTP请求的资源,但关注点上有比较大的区别,具体如下:

  • 静态资源(resource.typecss、javascript、image、media等)关注的是资源类型、CDN、网络稳定性等。其中,当resource.typenavigation时,关联View视图(view.id相同)的资源数据。

  • API(resource.typeXHR、fetchAPI)会更加关注与服务端之间的关联,如响应码、Response内容等,还会和Tracing有强关联。

    XHRfetch主要出现在浏览器和WebView中,或有类似定期的场景中。

    API是在不确定API类型时的默认值,常见于原生和小程序情况下。

一般来说Resource只关注发起了真实网络请求的情况,对于从缓存中获取的情况上报前推荐过滤不上报。对于确有上报价值的情况(如计算缓存命中率,资源使用量)需要对该类型进行缓存打标,以区分发起了网络请求的资源。

Attributes

属性

类型

描述

session.id

string

关联的Session。

view.id

string

关联的View。

view.name

string

关联的view.name。

resource.type

string

采集的资源类型。如:css、javascript、media、XHR、image、navigation。

说明

如果是XHR或者fetch,则资源类型会被认为是API。

resource.method

string

HTTP请求方法。如:POST、GET。

resource.status_code

string

资源状态码。

resource.message

string

一般错误时补充的返回结果内容,对应resource.error_msg。

resource.url

string

资源URL。

resource.name

string

默认为URLPath部分,可以基于规则进行匹配或用户主动配置。

resource.provider_type

string

资源提供者类型。如:first-party、cdn、ad、analytics。

resource.trace_id

string

资源请求的TraceID。

Measure

指标

类型

描述

resource.success

number

资源加载是否成功:

  • 1(默认):成功

  • 0:失败

resource.duration

long (ms)

加载资源所花费的全部时间。

计算公式:responseEnd - redirectStart

resource.size

long (bytes)

资源大小,对应decodedBodySize。

resource.connect_duration

long (ms)

与服务器建立连接所花费的时间。

计算公式:connectEnd - connectStart

resource.ssl_duration

long (ms)

TLS握手所花费的时间。如果最后一个请求不是通过HTTPS,则不会出现此指标。

计算公式:connectEnd - secureConnectionStart

此处需要特别判断一下,如果secureConnectionStart的值为0, 说明没有发起SSL连接,此时不计算ssl_duration,ssl_duration赋值为0。

resource.dns_duration

long (ms)

解析最后一个请求的DNS名称所花费的时间。

计算公式:domainLookupEnd - domainLookupStart

resource.redirect_duration

long (ms)

重定向HTTP请求的时间。

计算公式:redirectEnd - redirectStart

resource.first_byte_duration

long (ms)

等待接收响应的第一个字节所花费的时间。

计算公式:responseStart - requestStart

resource.download_duration

long (ms)

下载响应所用的时间。

计算公式:responseEnd - responseStart

Metadata

属性

类型

描述

resource.timing_data

string

PerformanceResourceTimingJSONString。

resource.trace_data

string

链路追踪信息快照:

{
  "propagatorType": "tracecontext",
  "traceId": "57599e11233cc6ebe1a3f539bbb1f238",
  "spanId": "3be6827e9b4f0956",
  "sample": 1,
}

resource.snapshots

string

View快照,主要用于原生App包含。

"resource.flavor": "1.0",
"resource.client.tcp.ip": "127.0.0.1",
"resource.client.tcp.port": 8080,
"resource.request.content_length": 1024,
"resource.request.header.content_type": [
   "application/json"
],
"resource.request.header.accept_encoding": [
   "gzip",
   "deflate",
   "br"
],
"resource.response.content_length": 2048,
"resource.response.header.eagleid": [
   "670f632716687515436056344e"
],

resource.node_name

string

发起请求的Dom类型。

resource.xpath

string

发生xpath的位置。

html. > body. > img.

resource.provider_name

string

资源提供者名,默认为unknown。

resource.provider_domain

string

资源提供者域名。

Exception

Exception是代码执行过程中发生了预期之外的情况。

  • Crash:应用发生崩溃。

  • ANR:即Android应用程序无响应(Application No Responding),特定的Message(如Key Dispatch、Broadcast、Service) 在应用的UI线程(主线程)内没有按规定的时间处理完,将会触发ANR异常。根据定义ANR具备异常的所有特征,是Exception的一种类型,而非LongTask。

  • Exception:没有引起CrashANR的其他异常情况。

  • Custom:用户主动上报的自定义错误。

  • Error:主要用于记录JavaScript相关的错误。

  • Blank:用于白屏监控,主要针对浏览器下的白屏情况。

Attributes

属性

类型

描述

session.id

string

关联的Session。

view.id

string

关联的View。

view.name

string

关联的view.name。

exception.source

string

错误来源。如:console、event。

exception.file

string

错误文件。

exception.type

string

错误类型包括:

  • crash(崩溃)

  • custom(自定义错误)

  • error(执行错误)

exception.subtype

string

是错误类型的二级分类

exception.name

string

错误名称。

exception.message

string

一个简洁可读的、解释事件的消息。

Metadata

属性

类型

描述

exception.stack

string

有关错误的堆栈跟踪或补充信息。

exception.caused_by

string

异常原因。

exception.line

long

异常发生代码行数。

exception.column

long

异常发生代码列数。

exception.thread_id

string

线程ID。

exception.binary_images

string

错误来源。

exception.snapshots

string

错误快照。

Action

Attributes

属性

类型

描述

session.id

string

关联的Session。

view.id

string

关联的View。

view.name

string

关联的view.name。

action.type

string

用户行为类型。

action.name

string

语义化的名称。如:单击#checkout。

action.target_name

string

用户与之交互的元素。仅用于自动收集的动作。

Measure

指标

类型

描述

action.duration

long (ms)

行为持续时间。

Metadata

属性

类型

描述

action.snapshots

string

行为快照。

action.method_info

string

行为回调。如:onClick()。

Custom

Attributes

属性

类型

描述

session.id

string

关联的Session。

view.id

string

关联的View。

view.name

string

关联的view.name。

custom.type

string

自定义类型。

custom.name

string

自定义事件名称。

custom.group

string

自定义事件分组。

Measure

属性

类型

描述

custom.value

number

自定义事件分组。

Metadata

属性

类型

描述

custom.snapshots

string

字符长度一般不超过5000个字符。

Application

应用级事件,如:冷/热启动、应用退出、应用切出/入等。

Attributes

属性

类型

描述

session.id

string

关联的Session。

application.type

string

枚举类型:

  • launch:启动

  • exit:退出

  • background:切入后台

  • forground:切入前台

application.name

string

作为application.type的细粒度类型,如:

  • cold-lunch:冷启动

  • hot-lunch:热启动

  • first-lunch:首次启动

  • background:切入后台

  • forground:切入前台

Measure

指标

类型

描述

application.duration

long(ms)

对应应用事件类型的耗时。

Metadata

属性

类型

描述

application.snapshots

string

应用启动事件的快照数据,一般为线程方法。

System

Attributes

属性

类型

描述

session.id

string

关联的Session。

system.type

string

用户行为类型。

system.name

string

语义化的名称,例如单击#checkout。

Metadata

属性

类型

描述

system.snapshots

string

"sys.net_change.before.ip": "1.1.XX.XX",
"sys.net_change.before.standard": "wifi",
"sys.net_change.after.ip": "2.2.2.2",
"sys.net_change.after.standard": "4G",

聚合表设计

Session

Attributes

属性名

类型

描述

session.id

string

每个会话随机生成的ID。

session.ip

string

客户端IP地址。

session.referrer

string

上一个网页的URL,从该网页链接到当前请求的页面。

session.initial_view_id

string

用户生成的第一个View ID。

session.initial_view_name

string

用户生成的第一个View Name。

session.last_view_id

string

用户生成的最后一个View ID。

session.last_view_name

string

用户生成的最后一个View Name。

session.start

long

Session的开始时间戳。

session.end

long

Session的结束时间戳。

Metadata

属性

类型

描述

session.initial_view.url

string

用户生成的第一个View URL。

session.last_view_url

string

用户生成的最后一个View URL。

Measure

指标

类型

名称

描述

session.time_spent

long (ms)

会话时长

用户会话的持续时间。

session.view_count

long

视图数量

此次会话收集的所有浏览次数。

session.exception_count

long

异常数量

此次会话收集的所有异常的计数。

session.resource_count

long

资源请求数

此次会话收集的所有资源的计数。

session.resource_error_count

long

资源错误数

此次会话收集的所有错误资源的计数。

session.api_count

long

API请求数

此次会话收集的所有API请求的计数。

session.api_error_count

long

API错误数

此次会话收集的所有API请求错误的计数。

session.action_count

long

用户事件数

此次会话收集的所有操作的计数。

session.long_task_count

long

卡顿次数

此次会话收集的所有长任务的计数。