Datadog:如何关联RUM事件与日志?会话ID是否一致?
Datadog RUM与日志会话关联问题
1. RUM和日志收集的session_id是否相同?
默认情况下,RUM和日志SDK生成的session_id是不同的。这两个SDK独立初始化,各自维护会话生命周期与ID生成逻辑,同一会话下两者的session_id不会自动一致。
2. 如何关联同一会话的RUM事件与日志?
有两种可靠的实现方式:
方式一:手动共享RUM会话ID到日志上下文
通过RUM SDK的getSessionId()方法获取当前会话ID,将其添加到日志的全局上下文或自定义字段中,即可在Datadog平台通过该字段关联两类数据。
具体代码调整:
// 先初始化RUM datadogRum.init({ applicationId: '<DATADOG_APPLICATION_ID>', clientToken: '<DATADOG_CLIENT_TOKEN>', site: '<DATADOG_SITE>', sessionSampleRate: 100, sessionReplaySampleRate: 100, trackResources: true, trackLongTasks: true, trackUserInteractions: true, enablePrivacyForActionName: true, }); // 初始化日志 datadogLogs.init({ clientToken: '<DATADOG_CLIENT_TOKEN>', site: '<DATADOG_SITE>', forwardErrorsToLogs: true, sessionSampleRate: 100, }); // 初始化时同步一次RUM会话ID到日志上下文 datadogLogs.setContext('rum_session_id', datadogRum.getSessionId()); // 监听RUM会话切换事件,实时更新日志上下文 datadogRum.onSessionStart((session) => { datadogLogs.setContext('rum_session_id', session.id); });
后续所有日志都会携带rum_session_id字段,你可以在Datadog日志页面通过该字段过滤,或在RUM页面关联对应日志。
方式二:利用SDK自动关联功能
若使用较新版本的RUM和日志SDK(建议用最新稳定版),且两者配置了相同的clientToken和site,SDK会自动共享会话上下文信息,无需手动设置。你的代码中已开启forwardErrorsToLogs,该选项本身会自动关联RUM捕获的错误与日志,同时传递会话标识。
额外关联维度
除session_id外,还可通过以下字段辅助关联:
- 用户ID:若在RUM和日志中设置了相同的
user.id,可通过用户维度聚合数据 - 页面URL/路由:同一会话下用户访问的页面路径一致,可作为关联条件
- 客户端时间戳:日志与RUM事件的时间戳范围匹配,结合其他字段缩小关联范围
内容的提问来源于stack exchange,提问作者user3908406
相关产品推荐
相关产品推荐

