用户会话轨迹

更新时间:
复制为 MD 格式

用户会话轨迹(User Session Trace)是用户体验监控提供的核心能力之一。该功能记录终端用户从进入应用到离开的完整旅程,SDK 在应用运行期间自动采集各类用户行为和性能事件,并通过唯一的 Session ID 将同一次会话中的所有事件串联起来,形成完整的用户行为时间线。

功能概述

通过用户会话轨迹,您可以:

  • 还原单个用户在一次会话中的完整操作路径。

  • 定位用户遇到的异常、卡顿或慢加载问题发生时的上下文。

  • 分析页面跳转顺序、停留时长和交互行为,优化用户体验。

  • 结合资源请求数据,排查网络层面的性能瓶颈。

前提条件

使用用户会话轨迹功能前,请确保已完成以下准备工作:

  • 已在控制台创建应用并获取接入初始化代码。

  • 已完成 SDK 的集成和初始化。具体操作请参见前端应用

说明:SDK 初始化成功后,用户会话轨迹功能默认开启,页面加载、用户操作、资源请求、异常错误、卡顿等事件将自动采集,无需额外埋点。

工作原理

会话生命周期

SDK 自动管理会话生命周期,无需手动干预。不同平台的会话管理策略如下:

移动端应用(iOS / Android):

  1. 会话创建:应用首次启动或从后台回到前台时,SDK 自动创建新会话并生成唯一的 Session ID。

  2. 会话续期:如果应用进入后台后在 60 秒内回到前台,SDK 复用当前会话,不会创建新会话。

  3. 会话过期:如果应用在后台停留超过 60 秒后回到前台,SDK 认为上一次会话已结束,自动创建新会话。

  4. 会话终止:应用被终止时,当前会话结束。

┌─────────────┐    ┌──────────────┐    ┌─────────────┐
│  应用启动    │───▶│  创建新会话   │───▶│  采集事件    │
└─────────────┘    └──────────────┘    └──────┬──────┘
                                              │
                          ┌───────────────────┤
                          ▼                   ▼
                   ┌─────────────┐    ┌──────────────┐
                   │  进入后台    │    │  应用终止     │
                   └──────┬──────┘    └──────────────┘
                          │
              ┌───────────┴───────────┐
              ▼                       ▼
     ┌────────────────┐     ┌────────────────┐
     │ ≤60秒回到前台   │     │ >60秒回到前台   │
     │ 复用当前会话    │     │ 创建新会话      │
     └────────────────┘     └────────────────┘

前端应用(Web / 小程序):

  1. 会话创建:用户首次访问页面时,SDK 自动创建新会话并生成唯一的 Session ID。

  2. 会话续期:用户在页面上持续活跃(如点击、滚动、导航等交互行为)时,会话保持有效。

  3. 会话过期:用户无任何交互操作超过超时时间后,SDK 认为会话已结束;下次交互时自动创建新会话。

  4. 会话终止:用户关闭页面或浏览器时,当前会话结束。

会话采样

SDK 支持会话级别的采样控制。采样率默认值为 100%(即采集所有会话),被采样命中的会话,其所有事件均会上报;未命中的会话,其事件将被丢弃,不会产生网络开销。

手动配置

适用于 Web/小程序应用,在集成 RUM 过程中,初始化配置 sessionConfig 函数,可支持对 SDK 采集的会话进行采样率配置。

参数

类型

描述

是否必填

默认值

sampleRate

number

Session采样率:[0, 1]

50%采样率就是0.5。

1

maxDuration

number(ms)

Session最大持续时间,默认24小时。

86400000

overtime

number(ms)

Session超时时间,默认一小时。

3600000

storage

string

Session相关的数据存储位置。

  • cookie

  • localStorage

localStorage

armsRum.init({
  endpoint: "your endpoint",
  sessionConfig: {
    sampleRate: 0.5, // 采样率50%
    maxDuration: 86400000,
    overtime: 3600000,
    storage: 'cookie',
  },
});

远程配置

登录 RUM 控制台,应用列表点击进入应用详情 > 应用设置 > SDK 配置,在「会话配置」中进行相应会话采样率的配置。

如果您是 Web应用,如果要进行远程配置会话采样率,需要在初始化 RUM SDK 时,添加 remoteConfig 字段。SDK在初始化的时候会根据该字段去获取远程 OSS 配置,并根据获取到的配置更新探针配置功能。

参数

类型

描述

是否必填

默认值

enable

boolean

是否启用远端配置

false

mode

string

  • launch-first: 启动优先模式,先使用本地配置快速启动,异步获取最新配置

  • remote-first: 云端优先模式,阻塞等待云端配置,超时后降级到本地

launch-first

cacheTimeout

number(ms)

配置缓存有效期,默认一小时

3600000

armsRum.init({
  endpoint: "your endpoint",
  remoteConfig: {
    enable: true,
    mode: 'remote-first',
  }
});

SDK 获取到远程配置之后,除了即时更新功能外,还会将该配置存储到本地,以便下次SDK启动的时候优先使用本地存储的配置进行初始化。此外需要注意,SDK需要版本号在0.0.37及以上。

事件关联

SDK 为每次会话生成唯一的 Session ID。在会话期间采集的所有事件(页面加载、用户操作、资源请求、异常错误、卡顿等)都会自动关联该 Session ID,确保同一会话内的事件可以被完整串联和回溯。

同时,每个事件还会记录当前所在的页面信息(页面 ID 和页面名称),便于在会话轨迹中定位事件发生的具体页面上下文。

采集的事件类型

SDK 在一次用户会话中自动采集以下事件类型:

页面加载(View)

记录用户访问的每个页面的加载和停留信息。SDK 自动采集页面生命周期事件,无需手动埋点。

属性

说明

页面名称

页面标识名称

页面 URL

页面路径

上一页面

来源页面信息,用于分析跳转路径

页面加载耗时

页面从开始加载到加载完成的时间(ms)

页面停留时长

用户在该页面的停留时间(ms)

首次绘制(FP)

页面首次渲染的时间

首次内容绘制(FCP)

页面首次有内容渲染的时间

最大内容绘制(LCP)

页面最大内容元素渲染完成的时间

累积布局偏移(CLS)

页面布局稳定性指标

首次输入延迟(FID)

用户首次交互到应用响应的延迟

用户操作(Action)

记录用户在页面上的交互行为,如点击、滑动等。SDK 自动拦截用户交互事件进行采集。

属性

说明

操作类型

交互类型(如 tap、click、scroll 等)

操作名称

操作目标的名称或描述

视图路径

操作目标在视图层级中的路径

操作坐标

用户操作的屏幕坐标

响应耗时

操作从触发到响应完成的时间(ms)

资源请求(Resource)

自动采集应用发起的网络请求,记录请求的完整生命周期和性能指标。

属性

说明

请求 URL

完整的请求地址

HTTP 方法

请求方法(GET、POST 等)

状态码

HTTP 响应状态码

资源类型

资源类型(API、Image、Media、Font 等)

是否成功

请求是否成功

DNS 耗时

DNS 解析耗时(ms)

TCP 连接耗时

TCP 连接建立耗时(ms)

TLS 耗时

TLS 握手耗时(ms)

首字节时间(TTFB)

从请求发出到收到第一个字节的时间(ms)

响应耗时

完整响应耗时(ms)

请求大小

请求体大小(bytes)

响应大小

响应体大小(bytes)

异常错误(Exception / Crash)

自动采集应用崩溃(Crash)和未捕获异常,同时支持通过 SDK 接口手动上报自定义异常。异常事件会自动关联当前会话和页面上下文,帮助还原异常发生时用户的完整操作路径。

属性

说明

异常类型

异常的分类标识

异常原因

导致异常的原因描述

堆栈信息

异常发生时的调用堆栈,用于定位代码位置

所在页面

异常发生时用户所在的页面

会话 ID

异常所属的会话,可回溯异常前的完整用户行为

SDK 采集的异常类型包括:

  • 应用崩溃(Crash):移动端包括运行时未捕获异常和系统信号异常(如 SIGSEGV、SIGABRT 等),SDK 在下次启动时自动上报;前端包括 JavaScript Error 和未处理的 Promise Rejection,实时上报。

  • 自定义异常:业务代码中主动捕获的异常,可通过 SDK 提供的上报接口手动上报,适用于记录非致命错误或业务逻辑异常。

卡顿(Long Task / ANR)

自动检测应用运行中的卡顿事件,帮助定位性能瓶颈。

属性

说明

卡顿时长

阻塞或长任务的持续时间(ms)

堆栈信息

卡顿发生时的调用堆栈

所在页面

卡顿发生时用户所在的页面

会话 ID

卡顿所属的会话,可关联前后操作上下文

SDK 采集的卡顿类型包括:

  • ANR(移动端):主线程长时间无响应,通常由死锁、大量同步 IO 或复杂计算引起。

  • 帧率卡顿(移动端):渲染帧率低于阈值,导致用户感知到界面不流畅。

  • 长任务(Long Task):执行时间超过阈值的任务,前端和移动端均支持检测。

使用场景

场景一:排查用户投诉

用户反馈"页面打开后白屏"。通过用户会话轨迹,您可以根据用户 ID 或设备 ID 找到对应会话,查看该用户在白屏页面前后的完整事件序列:页面加载耗时是否异常、是否有资源请求失败、是否触发了 JavaScript 异常等,快速定位根因。

场景二:分析页面转化漏斗

通过会话轨迹中的页面跳转序列,分析用户从首页到下单页的转化路径。结合页面停留时长和操作事件,识别用户在哪个环节流失,是因为页面加载慢、交互卡顿还是操作路径过长。

场景三:定位慢请求影响

某个 API 接口响应变慢后,通过会话轨迹查看受影响用户的完整体验:慢请求发生在哪个页面、用户在等待期间是否有重复点击、最终是否离开了应用。结合资源请求的 DNS、TCP、TTFB 等分阶段耗时,判断是网络问题还是服务端问题。

常见问题

用户会话轨迹功能是否需要手动开启?

不需要。SDK 初始化成功后,会话轨迹功能默认开启,所有事件自动采集。

会话的超时时间是否可以自定义?

当前会话超时时间固定为 60 秒,暂不支持自定义配置。

采样率如何调整?

会话采样率通过控制台远程配置下发,默认为 100%。您可以在控制台调整采样率,修改后实时生效,无需重新发版。

崩溃事件是否也会关联到会话?

是的。崩溃事件会记录崩溃发生时的 Session ID 和页面信息。移动端崩溃由于导致应用退出,崩溃数据会在下次应用启动时上报;前端 JavaScript Error 为实时上报。两者均会关联到异常发生时的会话。