Datadog仅采集1% Span失效:DD_SPAN_SAMPLING_RULES不生效排查
排查Datadog采样率不生效的常见原因及解决方法
1. 代码配置覆盖环境变量
如果你的ASP.NET Core项目中通过代码显式设置了采样规则或采样率,会直接覆盖环境变量的配置。比如以下代码会强制设置100%采样,忽略环境变量:
TracerSettings settings = TracerSettings.FromDefaultSources(); settings.SamplingRate = 1.0; var tracer = new Tracer(settings);
排查方法:检查项目中是否存在手动配置Tracer采样相关的代码,若有则移除或调整为目标采样率。
2. 环境变量格式解析错误
DD_SPAN_SAMPLING_RULES的JSON格式在不同环境中可能存在解析问题:
- 若使用Windows环境或Docker Compose等编排工具,单引号包裹的JSON可能无法被正确解析,需改用双引号并转义:
DD_SPAN_SAMPLING_RULES: "{\"sample_rate\":0.01,\"service\":\"*\",\"name\":\"*\"}" - 确保JSON语法完全正确,无多余逗号或缺失引号。
3. 采样规则匹配逻辑未生效
虽然你用了"*"作为通配符,但部分旧版本Tracer对通配符支持有限,可能导致规则不触发。可以先尝试指定具体服务名测试:
DD_SPAN_SAMPLING_RULES: '[{"sample_rate":0.01,"service":"YourActualServiceName","name":"*"}]'
4. Tracer版本兼容性问题
旧版本的Datadog.Tracer可能存在采样配置的bug,比如对DD_SPAN_SAMPLING_RULES的支持不完善。
- 通过NuGet包管理器将
Datadog.Tracer升级到最新稳定版,再验证采样效果。
5. 上游采样决策的传播影响
分布式追踪中,下游服务会继承上游服务的采样决策。如果上游服务配置了100%采样,下游即使设置1%采样率,也会跟随上游的采样标记,导致实际采样率远高于预期。
- 检查上游服务的采样配置,确保全链路采样策略一致;或启用
DD_TRACE_RATE_LIMITER_ENABLED限制每秒采样的Span数量,辅助控制采样量。
内容的提问来源于stack exchange,提问作者Arjun Vachhani
相关产品推荐
相关产品推荐

