我正在使用 opentelemetry 来检测 nest js 应用程序。假设要发出的请求数量很大。那么我们如何指定要收集的跟踪数量。
1 回答
3
采样是一种通过减少收集并发送到后端的跟踪样本数量来控制 OpenTelemetry 引入的噪声和开销的机制。
你需要TraceIdRatioBasedSampler这个。在创建时,TracerProvider您可以为其指定采样器。可用的采样器列表是:
AlwaysOnSamplerAlwaysOffSamplerTraceIdRatioBasedSamplerParentBasedAlwaysOnSamplerParentBasedAlwatsOffSamplerParentBasedTraceIdRatioBasedSampler
你可以在这里阅读更多关于它们的信息。例如,如果您想收集 100 条轨迹中的 1 条,则必须执行类似的操作。
const samplingRate = 1/100;
const { NodeTracerProvider } = require("@opentelemetry/node");
const { TraceIdRatioBasedSampler } = require("@opentelemetry/core");
const tracerProvider = new NodeTracerProvider({
sampler: new TraceIdRatioBasedSampler(samplingRate)
});
PS:您还可以通过扩展Sampler和实现自己的shouldSample.
于 2020-12-21T07:13:32.833 回答