【发布时间】:2021-03-02 20:32:43
【问题描述】:
我正在使用 opentelemetry 来检测 nest js 应用程序。假设要发出的请求数量很大。那么我们如何指定要收集的痕迹数量。
【问题讨论】:
标签: typescript nestjs zipkin distributed-tracing open-telemetry
我正在使用 opentelemetry 来检测 nest js 应用程序。假设要发出的请求数量很大。那么我们如何指定要收集的痕迹数量。
【问题讨论】:
标签: typescript nestjs zipkin distributed-tracing open-telemetry
采样是一种通过减少收集并发送到后端的跟踪样本数量来控制 OpenTelemetry 引入的噪声和开销的机制。
为此,您需要TraceIdRatioBasedSampler。当您创建TracerProvider 时,您可以为其指定采样器。可用的采样器列表是:
AlwaysOnSamplerAlwaysOffSamplerTraceIdRatioBasedSamplerParentBasedAlwaysOnSamplerParentBasedAlwatsOffSamplerParentBasedTraceIdRatioBasedSampler您可以阅读更多关于他们的信息here。例如,如果您想收集 100 条轨迹中的 1 条,则必须执行以下操作。
const samplingRate = 1/100;
const { NodeTracerProvider } = require("@opentelemetry/node");
const { TraceIdRatioBasedSampler } = require("@opentelemetry/core");
const tracerProvider = new NodeTracerProvider({
sampler: new TraceIdRatioBasedSampler(samplingRate)
});
P.S:您还可以通过扩展 Sampler 并实现自己的 shouldSample 来自定义采样行为。
【讨论】: