Sampling
少于1分钟
简要概述
采样频率是限制系统生成 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)