我们如何指定 opentelemetry 中的迹线数量

Aka*_*rma 1 typescript zipkin nestjs distributed-tracing open-telemetry

我正在使用 opentelemetry 来检测 Nest js 应用程序。假设要发出的请求数量很大。那么我们如何指定要收集的痕迹数量呢?

小智 5

采样是一种通过减少收集并发送到后端的跟踪样本数量来控制 OpenTelemetry 引入的噪声和开销的机制。

你需要TraceIdRatioBasedSampler这个。创建时TracerProvider您可以为其指定采样器。可用采样器的列表是:

  • AlwaysOnSampler
  • AlwaysOffSampler
  • TraceIdRatioBasedSampler
  • ParentBasedAlwaysOnSampler
  • ParentBasedAlwatsOffSampler
  • ParentBasedTraceIdRatioBasedSampler

您可以在这里阅读有关它们的更多信息。例如,如果您想收集 100 个跟踪中的 1 个,那么您将必须执行类似的操作。

const samplingRate = 1/100;
const { NodeTracerProvider } = require("@opentelemetry/node");
const { TraceIdRatioBasedSampler } = require("@opentelemetry/core");

const tracerProvider = new NodeTracerProvider({
  sampler: new TraceIdRatioBasedSampler(samplingRate)
});
Run Code Online (Sandbox Code Playgroud)

PS:您还可以通过扩展Sampler和实现您自己的shouldSample.