采样
采样是限制系统生成跟踪量的一个过程。Ruby SDK 提供了几种头部采样器。
默认行为
默认情况下,所有 span 都会被采样,因此 100% 的跟踪都会被采样。如果你不需要管理数据量,可以不用设置采样器。
具体来说,默认采样器是 ParentBased 和 ALWAYS_ON 的复合体,它确保跟踪中的根 span 始终被采样,并且所有子 span 都遵循其父 span 的采样标志来做出采样决策。这保证了默认情况下跟踪中的所有 span 都会被采样。
TraceIDRatioBased Sampler
最常用的头部采样器是 TraceIdRatioBased 采样器。它根据你作为参数传入的比例,确定性地采样一部分跟踪。
环境变量
你可以通过环境变量配置一个 TraceIdRatioBased 采样器。
export OTEL_TRACES_SAMPLER="traceidratio"
export OTEL_TRACES_SAMPLER_ARG="0.1"
这告诉 SDK 采样 span,以便只有 10% 的跟踪被导出。
代码中的配置
虽然可以在代码中配置 TraceIdRatioBased 采样器,但这样做并**不推荐**。这样做需要你手动设置具有所有正确配置选项的 Tracer Provider,这比仅仅使用 OpenTelemetry::SDK.configure 更难正确设置。