opentelemetry.io/content/en/docs/instrumentation/js/sampling.md

2.4 KiB

title weight
Sampling 9

Sampling is a process that restricts the amount of traces that are generated by a system. The JavaScript SDK offers several head samplers.

Default behavior

By default, all spans are sampled, and thus, 100% of traces are sampled. If you do not need to manage data volume, don't bother setting a sampler.

TraceIDRatioBasedSampler

When sampling, the most common head sampler to use is the TraceIdRatioBasedSampler. It deterministically samples a percentage of traces that you pass in as a parameter.

Environment Variables

You can configure the TraceIdRatioBasedSampler with environment variables:

export OTEL_TRACES_SAMPLER="traceidratio"
export OTEL_TRACES_SAMPLER_ARG="0.1"

This tells the SDK to sample spans such that only 10% of traces get created.

Node.js

You can also configure the TraceIdRatioBasedSampler in code. Here's an example for Node.js:

{{< tabpane lang=shell persistLang=false >}}

{{< tab TypeScript >}} import { TraceIdRatioBasedSampler } from '@opentelemetry/sdk-trace-node';

const samplePercentage = 0.1;

const sdk = new NodeSDK({ // Other SDK configuration parameters go here sampler: new TraceIdRatioBasedSampler(samplePercentage), }); {{< /tab >}}

{{< tab JavaScript >}} const { TraceIdRatioBasedSampler } = require('@opentelemetry/sdk-trace-node');

const samplePercentage = 0.1;

const sdk = new NodeSDK({ // Other SDK configuration parameters go here sampler: new TraceIdRatioBasedSampler(samplePercentage), }); {{< /tab >}}

{{< /tabpane >}}

Browser

You can also configure the TraceIdRatioBasedSampler in code. Here's an example for browser apps:

{{< tabpane lang=shell persistLang=false >}}

{{< tab TypeScript >}} import { WebTracerProvider, TraceIdRatioBasedSampler } from '@opentelemetry/sdk-trace-web';

const samplePercentage = 0.1;

const provider = new WebTracerProvider({ sampler: new TraceIdRatioBasedSampler(samplePercentage), }); {{< /tab >}}

{{< tab JavaScript >}} const { WebTracerProvider, TraceIdRatioBasedSampler } = require('@opentelemetry/sdk-trace-web');

const samplePercentage = 0.1;

const provider = new WebTracerProvider({ sampler: new TraceIdRatioBasedSampler(samplePercentage), }); {{< /tab >}}

{{< /tabpane >}}