RUM(真实用户体验监控)介绍、优势、采样与挑战
RUM(Real User Monitoring)顾名思义,就是真实用户体验监控。在端上(Web、H5、App)埋点,观测用户真实的产品使用体验。
相比 RUM(Real User Monitoring),还有一类监控通常与之对比,即 Synthetic Monitoring,姑且可以翻译为合成监控。合成监控是通过程序模仿人去操作,通常只模仿关键路径,RUM 则是真实的用户体验监控数据。
RUM 优势
- 精准定位性能问题——找出哪些页面在特定设备(例如移动设备与桌面设备)上加载缓慢或运行不佳。
- 减少用户挫败感——在错误导致用户离开前及时发现它们。
- 优化业务影响力——加载更快的页面意味着更满意的用户,进而带来更多转化(销售、注册、互动)。
- 识别趋势——用户会经常触发这种边缘情况错误吗?不要只是猜测,要数据驱动!
- 优先修复——无需猜测,利用真实数据来决定首先改进哪些内容。
示例
如果移动端的结账页面加载需要8秒,而桌面端只需2秒,真实用户监测(RUM)能帮助你找到并解决这一瓶颈。RUM监控会精确显示哪些用户正遭遇加载缓慢的问题,你还可以查看历史趋势,判断是否是近期的某项更改导致了这一问题。
RUM 如何工作?
1. 数据收集
通常,需要在端上代码(比如 JavaScript)中用一行命令引入 SDK 即可。SDK 会自动追踪:
- 页面加载时间:页面多久才能可用?
- 资源计时:是缓慢的图像或API延迟了渲染吗?
- 用户交互:点击、滚动、表单提交
- 错误:JavaScript 崩溃、API 调用失败、资源损坏
所有这些数据都会被收集起来,通常作为带有事件和错误注释的跟踪信息,由轻量级的RUM代码进行传输。
2. 数据传输
- 数据被发送到监控后端
- 采样(可选)通过仅发送一定百分比的会话来降低成本
3. 数据分析
- 仪表板显示性能趋势(例如,“欧洲的移动用户速度慢了40%”)。
- 警报会在错误率飙升时通知您。
- 会话重放(在某些工具中)让你可以看到真实用户在遇到漏洞时的困境。
💡从核心指标(加载时间、错误率)开始,然后扩展到跟踪业务目标(例如,“用户多久能播放视频?”)。
采样和存储
真实用户监控(RUM)会生成海量数据。如果要跟踪数百万用户的每一次点击、滚动和页面加载,成本可能会飙升。存储RUM数据不仅会让你的存储解决方案耗资巨大,还意味着查询历史性能时速度会慢得惊人。
典型的采样逻辑有两种,头部采样和尾部采样。
头部采样
采用随机算法,随机监控用户 session,性能极好,但是一些异常的 session 可能没被捕获。比如下图中红色部分是随机捕获的 session,而耗时最长的那个 session 恰好未被捕获。

头部采样可以用来查看一些数据趋势,对于排查问题效果会差一些,因为有些让用户崩溃的体验可能恰好没有采集。
尾部采样
尾部采样是说先把数据统一收集到后端,在后端决策采样保留哪些、丢弃哪些。比如下面这个例子,采集了最高延迟的 session(用户感觉慢)和最小延迟的 session(可能报错了)。

尾部采样会把所有数据推到后端,需要考虑网络层面的影响,当然也要考虑厂商的计费策略,力争找一个 ROI 最高的实践方式。
Flashduty RUM 推荐的做法
数据可以 100% 上报,服务端会把原始数据计算生成各类指标,这些指标可以让用户看到各类趋势。
原始数据可以采样存储,比如只存储异常数据和延迟较高的数据,可以大幅降低成本。
