1

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

4

1 回答 1

3

采样是一种通过减少收集并发送到后端的跟踪样本数量来控制 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)
});

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

于 2020-12-21T07:13:32.833 回答