サンプリング

生成されるテレメトリの量を削減する

サンプリングは、システムによって生成されるトレースの量を制限するプロセスです。 JavaScript SDKでは、いくつかのヘッドサンプラーが提供されています。

デフォルトの動作

デフォルトでは、すべてのスパンがサンプリングされ、つまり100%のトレースがサンプリングされます。 データ量を管理する必要がない場合は、サンプラーの設定は不要です。

TraceIDRatioBasedSampler

サンプリングを行う際に最も一般的に使用されるヘッドサンプラーは、TraceIdRatioBasedSamplerです。 このサンプラーは、パラメータとして渡される割合のトレースを決定論的にサンプリングします。

環境変数

TraceIdRatioBasedSamplerは環境変数で設定できます。

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

これにより、SDKはスパンをサンプリングし、トレースの10%のみが作成されるよう指定します。

Node.js

TraceIdRatioBasedSamplerはコードでも設定できます。Node.jsの例は以下の通りです。

import { TraceIdRatioBasedSampler } from '@opentelemetry/sdk-trace-node';

const samplePercentage = 0.1;

const sdk = new NodeSDK({
  // その他のSDK設定パラメータをここに記述
  sampler: new TraceIdRatioBasedSampler(samplePercentage),
});
const { TraceIdRatioBasedSampler } = require('@opentelemetry/sdk-trace-node');

const samplePercentage = 0.1;

const sdk = new NodeSDK({
  // その他のSDK設定パラメータをここに記述
  sampler: new TraceIdRatioBasedSampler(samplePercentage),
});

ブラウザ

TraceIdRatioBasedSamplerはコードでも設定できます。 ブラウザアプリケーションの例は以下の通りです。

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

const samplePercentage = 0.1;

const provider = new WebTracerProvider({
  sampler: new TraceIdRatioBasedSampler(samplePercentage),
});
const {
  WebTracerProvider,
  TraceIdRatioBasedSampler,
} = require('@opentelemetry/sdk-trace-web');

const samplePercentage = 0.1;

const provider = new WebTracerProvider({
  sampler: new TraceIdRatioBasedSampler(samplePercentage),
});