You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 22:28:31