Sampling

简要概述

采样频率是限制系统生成 Span 以及上报的数量,根据实际情况,通常在应用启动前就决定并配置好。一般在开发、测试环境设置为 trace.AlwaysSample() 以便把所有请求产生的 Span 均做记录。需要临时关闭则使用 trace.NeverSample() 方法。

在应用程序使用 sdk go.opentelemetry.io/otel/sdk/trace 设置采集频率。

采样频率

方法 示例 说明
AlwaysSample() - 总是采集不会遗漏任何 Span,也等于 TraceIDRatioBased(1)
NeverSample() - 关闭采集不会上报任何 Span,也等于 TraceIDRatioBased(0)
TraceIDRatioBased(fraction float64) 0.5 给定一个 0 至 1 之间的分数决定采样频率
ParentBased(root Sampler) Sampler - 复合采样器

应用场景

对所有请求进行采样

provider := trace.NewTracerProvider(
    trace.WithSampler(trace.AlwaysSample()),
)

对 50% 请求 Span 进行采样

provider := trace.NewTracerProvider(
    trace.WithSampler(trace.ParentBased(trace.TraceIDRatioBased(0.5))),
)



最后修改 2023.10.23: docs: 完善 collector (f472144)