サンプリング

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

デフォルトの動作

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

具体的には、デフォルトのサンプラーは ParentBasedALWAYS_ON を組み合わせたものであり、トレース内のルートスパンが常にサンプリングされ、すべての子スパンが親のサンプリングフラグを尊重してサンプリングの決定を行うことを保証します。 これにより、デフォルトですべてのスパンがサンプリングされることが保証されます。

TraceIDRatioBasedサンプラー

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

環境変数

環境変数を使用して、TraceIdRatioBased サンプラーを設定できます。

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

この設定では、トレースの10%のみがエクスポートされるようにスパンがサンプリングされます。

コードでの構成

TraceIdRatioBasedサンプラーをコードで構成することは可能ですが、推奨されません。 コードで構成するには、適切な構成オプションをすべて備えたトレーサープロバイダーを手動で設定する必要がありますが、OpenTelemetry::SDK.configure を使用するだけの場合と比べて正しく実行するのが困難です。