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

Datadog迁移至OpenTelemetry后Ingested Spans异常增多及子Span统计疑问

关于Datadog Ingested Spans机制与OTEL迁移后的差异解析

一、Datadog原生SDK的默认行为

是的,使用Datadog Go原生SDK时,默认仅根Span会被统计为Ingested Spans,同时仅为根Span的operationName生成请求量、延迟等指标。

背后的逻辑是:

  • 采用Trace级采样,当一个Trace被采样后,仅根Span会作为独立的Ingested Span上报,子Span只会作为根Span的附属数据出现在追踪详情页中,不会单独计入Ingested Spans统计,也不会生成独立的操作指标。
  • 内置了服务内部子Span的过滤逻辑,默认不会将内部操作类的子Span(如你示例中的Span B)单独上报为可统计的Ingested Span。

二、迁移至OTEL SDK后行为变化的原因

迁移到OpenTelemetry SDK后子Span被纳入统计,核心是OTEL与Datadog的集成逻辑和原生SDK存在本质差异:

  1. Span上报规则不同:OTEL遵循OpenTelemetry标准,默认会将Trace中所有被采样到的Span(包括子Span)都单独上报给Datadog后端。每个被上报的Span都会被计入Ingested Spans统计,同时为每个Span的operationName生成对应的指标(也就是你看到的other.operation指标)。
  2. 默认过滤逻辑缺失:Datadog原生SDK默认过滤内部子Span的独立上报,而OTEL SDK没有这个默认规则,所有符合采样条件的Span都会被独立上报。
  3. 采样与上报的分离:虽然OTEL也默认采用Trace级采样,但采样后会将Trace内的所有Span作为独立实体上报,而非像Datadog原生SDK那样只上报根Span并附带子Span数据。

三、调整建议(可选)

如果需要恢复到和Datadog原生SDK一致的行为,可通过以下方式配置OTEL:

  • 在OTEL Collector中添加filter处理器,过滤掉非根Span(通过判断parent_span_id是否为空),仅保留根Span上报给Datadog。
  • 调整Datadog OTEL Exporter的配置,开启类似原生SDK的内部Span过滤逻辑。

内容的提问来源于stack exchange,提问作者oren

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 14:40:09