跳转到主要内容
Browser RUM SDK 会在创建会话时作出采样决定,并在该会话中保持不变,应用的所有标签页都一致。

配置采样率

两个值都是从 0 到 100 的百分比:
  • sessionSampleRate 决定 SDK 是否上报该会话与关联 RUM 事件,默认值为 100;
  • sessionReplaySampleRate 只作用于已采样会话,默认值为 0。
实际回放采样率是两个采样结果的乘积。在上面的示例中,大约 25% 的会话会上报 RUM 数据,大约 5% 的全部会话会记录回放(25% × 20%)。
startSessionReplayRecording() 可以为当前已采样会话启用回放,但不能把被 sessionSampleRate 排除的会话重新纳入采样。

在服务端保留一部分会话

应用可以在 SDK 自己的采样之外,再保留收到的一部分会话,不论是哪个客户端发来的。在 RUM → 应用 里打开应用,找到 保留的会话。保留的会话比例(%) 取值 0 到 100,默认 100,即保留全部会话。 一个会话整个保留或整个丢弃。服务端按会话 id 的哈希决定,所以同一个会话的每个事件和每个回放分段,在任何节点上都是同样的命运,保留下来的会话有它做过的一切。被丢弃的会话什么都不留:没有事件,没有 rum_sessions 的行,也没有回放,只有它的错误例外(见保留所有错误)。 这个比例是对 SDK 已上报的会话而言的。SDK 里 sessionSampleRate: 50、保留的会话比例 为 20 时,大约 10% 的会话会被存下来。0 什么都不存,适合不改 SDK 就暂停一个应用。接入的应答里,sampled 说明有多少事件被舍弃,读它的 SDK 能知道数据不是丢了。未保留的会话的回放分段,返回 200 和 sampled: true。 改动只对之后到达的事件生效。已经存储的会话保留;改动前开始的会话,从那时起按新的比例保留或丢弃。

过滤器

过滤器给它描述的会话一个单独的比例:比如所有生产环境的会话都保留,其余只保留十分之一。在 保留的会话 里添加过滤器。一个过滤器有名称、0 到 100 的比例,以及最多 5 个条件,会话要全部满足。没有条件的过滤器描述所有会话。 条件看会话的一项事实,并与一组值比较:会话是其中之一,或者不是其中任何一个(这项事实没有值的会话,不是其中任何一个)。值不区分大小写,* 代表任意文字,所以 2.* 是 2 开头的所有版本。一个条件最多列 20 个值,一个应用最多 10 个过滤器。 过滤器按列出的顺序依次询问,第一个描述了这个会话的过滤器决定它的比例,所以更具体的过滤器放在更宽的前面。没有任何过滤器描述的会话,按过滤器下面的 其余会话的保留比例(%) 保留。没有过滤器时,它就是这个应用唯一的比例。
会话的每个事件都要是同一个命运,所以条件只能看会话进行中不会变的事实。人在会话里做了什么,以及 SDK 很晚才知道的身份(登录后设置的用户 id),都不能决定会话是否保留。错误有自己的开关,见下。
回放分段按它说出的会话信息判断:它来自哪个浏览器、哪个地方,以及浏览器和 Flutter SDK 在请求体里带上的 env、service 和 version(SDK 没有设置 env 或 version 时不带)。分段没有说明的事实,只要有任何可能描述这个会话的过滤器会保留它,分段就保留。

保留所有错误

没有保留的会话,它的错误照样保存,除非关掉 保留所有错误。这样罕见的错误不会随会话一起丢掉:它是一个问题,和其他问题一起计数。这样的错误只是 rum_errors 里的一行;它的会话没有行,没有视图,也没有回放,所以问题页在该链接到会话的地方写着 会话未保留。

总数是估算值

每一行都在 retention.rate 里写明这类行保留了多少比例(被 25% 的过滤器保留的会话是 25),在 retention.filter 里写明是什么保留了它:过滤器的 id,其余会话的比例是 default,没保留的会话的错误是 errors。开着 保留所有错误 时,所有错误都被保留,所以不论它属于哪个会话,错误写的都是 100。 显示总数的页面,把每一行按它的比例放大:比例 25 保留下来的会话算四个。页面会写出 估算值 和保留了多少比例的会话,所以总数就是每个会话都保留时会有的数。
  • 数量、总和和平均值会放大,百分位数按同样的比例加权。
  • 看到的人数,以及最小值和最大值不放大:它们就是看到的。
  • 漏斗和路径按比例数会话。留存的队列是人,所以按看到的数。
  • 探索器列出的是保留下来的行,它的数量和图表按这些行原样计数。对 聚合接口 传 estimate=false 能得到同样的数。
  • 等待 最少样本 的告警规则,等的是存下来的行,不是它们代表的数量。
采样带来误差:几个会话的 10% 说明不了什么。

选择初始值

这些值只适合作为起点,并不是通用默认值。发布前请估算事件量、对象存储、保留时间,以及每种浏览器和版本所需的会话数量。

会话边界

SDK 会把采样决定存入会话 Cookie _msrum_s_<applicationId>,应用的各个标签页共享它。满足任一条件时会创建新会话:
  • sessionInactivityTimeout:默认 15 分钟;
  • maxSessionDuration:默认 4 小时。
两个值都使用毫秒,允许范围为 1 分钟到 24 小时。
修改采样配置不会改变当前会话已经保存的决定。测试新配置时,请调用 stopSession(),或清除 _msrum_s_<applicationId> Cookie。

限制客户端数据量

使用传输配置让内存占用和请求大小保持可预测:
每次调整后都应监控写入速率、回放存储、浏览器开销和排障覆盖率。请按应用和版本逐步发布采样配置。

Browser RUM SDK

查看全部初始化配置。

会话回放

配置回放采集和影响存储量的选项。
最后修改于 2026年10月26日