本文档介绍 Web RUM SDK 的高级配置选项,帮助您根据业务需求定制数据收集行为。
保护敏感数据
屏蔽个人身份信息等敏感数据
关联用户会话
将用户会话与内部用户标识关联
减少数据量
通过采样降低 RUM 数据收集量
增强上下文
为数据添加丰富的上下文信息
覆盖默认 RUM 视图名称
RUM 会在用户访问新页面或 SPA 中 URL 更改时自动生成视图事件。视图名称默认从当前页面 URL 计算,并自动移除变量 ID(包含数字的路径段)。例如,/dashboard/1234 和 /dashboard/9a 会被归一化为 /dashboard/?。
您可以通过设置 trackViewsManually 选项手动跟踪视图事件,并为视图指定自定义名称。
配置手动跟踪视图
1
启用手动跟踪
在初始化时设置
trackViewsManually 为 true:rum-init.js
2
调用 startView 方法
在每个新页面或路由更改时调用
startView 方法:string
视图名称,默认为页面 URL 路径
string
服务名称,默认为创建 RUM 应用时指定的服务
string
应用版本,默认为创建 RUM 应用时指定的版本
object
视图的附加上下文,应用于视图及其子事件
React Router 集成
React Router v6 示例
React Router v6 示例
RumTracker.jsx
设置视图名称
使用setViewName 方法更新当前视图的名称,而无需启动新视图:
控制首屏 Web Vitals 采集
Web SDK 默认在初始加载视图中采集 Web Vitals 和首屏性能指标,包括 FCP、LCP、FID 和加载时间。这些指标会以页面导航开始时间为基准计算,适用于真实用户直接打开页面的场景。 如果页面会在用户可见前提前加载,例如被浏览器预渲染、在后台标签页打开,或由宿主容器提前初始化,首屏指标可能会从不相关的导航开始时间计算,导致 FCP、LCP 或加载时间异常偏大。你可以在初始化时将trackWebVitals 设置为 false,只关闭初始加载视图的 Web Vitals 和首屏性能指标采集。
rum-init.js
trackWebVitals 只影响初始加载视图的 Web Vitals 和首屏性能指标。资源、长任务、用户行为、错误和后续视图事件仍按其他配置项继续采集。丰富和控制 RUM 数据
通过beforeSend 回调函数,您可以在事件发送到 Flashduty 之前对其进行拦截和修改:
- 丰富事件:添加额外的上下文属性
- 修改事件:更改事件内容或屏蔽敏感信息
- 丢弃事件:选择性地丢弃特定 RUM 事件
上下文类型
不同的事件类型对应不同的上下文:丰富 RUM 事件
为事件添加上下文属性,例如为资源事件添加响应头数据:修改 RUM 事件内容
例如,从视图 URL 中屏蔽电子邮件地址:可修改的属性
丢弃 RUM 事件
通过在beforeSend 中返回 false,可以丢弃特定 RUM 事件:
用户会话
通过为 RUM 会话添加用户信息,您可以:- 跟踪特定用户的浏览路径
- 了解哪些用户受错误影响最大
- 监控关键用户的性能
用户属性
以下为可选的用户属性,建议至少提供一个:string
唯一用户标识符
string
用户友好名称,默认在 RUM UI 中显示
string
用户电子邮件,若无名称则显示邮件
用户会话 API
- 设置用户
- 获取用户
- 更新属性
- 删除属性
- 清除用户
用户会话信息更改后,之后的 RUM 事件将包含更新后的信息。注销(调用
clearUser)后,最后一个视图仍保留用户信息,但后续视图和会话级别数据不会。采样
默认情况下,RUM 会收集所有会话的数据。您可以通过sessionSampleRate 参数设置采样率来减少收集的会话数量:
用户跟踪同意
为遵守 GDPR、CCPA 等隐私法规,RUM 允许在初始化时设置用户跟踪同意状态:示例:处理用户同意
同意状态不会在标签页间同步或持久化,您需要在初始化或通过
setTrackingConsent 提供用户决定。视图上下文
您可以通过以下 API 为当前视图及其子事件添加或修改上下文:- 启动视图时指定
- 添加/修改属性
- 替换上下文
错误上下文
在捕获错误时,您可以通过dd_context 属性为错误对象附加本地上下文:
全局上下文
全局上下文会附加到所有 RUM 事件上:上下文生命周期
默认情况下,全局上下文和用户上下文存储在当前页面内存中:- 页面完全刷新后不会保留
- 不同标签页或窗口间不共享
storeContextsAcrossPages 选项可以将上下文存储到 localStorage:
微前端支持
RUM 支持微前端架构,通过堆栈跟踪机制识别事件来源。在beforeSend 中根据堆栈信息覆盖 service 和 version 属性:
以下事件无法归因于特定来源:自动收集的操作事件、非 XHR/Fetch 的资源事件、视图事件、CORS 和 CSP 违规事件。
集成 RUM 与分布式追踪
集成 RUM 与分布式追踪,可让您将 Web 应用程序的请求与其对应的后端跟踪关联起来,实现完整的前后端链路追踪。使用方法
使用allowedTracingUrls 参数配置当前应用的 API 服务域名:
- NPM
- CDN 同步
- CDN 异步
allowedTracingUrls 匹配完整 URL,接受以下类型:
追踪协议
分布式追踪通过在 Header 上添加对应的头部字段实现:traceparent:
[version]-[trace id]-[parent id]-[trace flags]version: 当前为 00trace id: 128 bits 的 trace ID,16 进制处理后为 32 个字符parent id: 64 bits 的 span ID,16 进制处理后为 16 个字符trace flags: 代表是否有降采样,01 代表命中采样,00 代表非采样
dd=s:[sampling priority];o:[origin]sampling priority: 1 代表 trace 被采样origin: 始终为 RUM,代表通过 RUM SDK 采集
如何验证
添加配置后,查看从应用中发送的请求,如能正确携带对应的 header 则说明配置无误。注意事项
相关文档
SDK 接入指南
了解如何快速接入 RUM SDK
数据收集
了解 SDK 收集的数据类型和属性
问题排查
解决常见问题和调试技巧