3.13. Probabilistic Sampling Processor
大量のテレメトリーデータを処理し、処理するデータ量を減らすことでコストを削減したい場合は、Tail Sampling Processor の代わりに Probabilistic Sampling Processor を使用できます。
Probabilistic Sampling Processor は、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
プロセッサーは、指定された割合のトレース範囲またはログレコードをステートレスに、そしてリクエストごとにサンプリングします。
プロセッサーは、使用された有効サンプリング確率に関する情報をテレメトリーデータに追加します。
-
トレーススパンでは、プロセッサーは、しきい値とオプションのランダム性情報を W3C Trace Context
tracestateフィールドにエンコードします。 - ログレコードでは、プロセッサーはしきい値とランダム性の情報を属性としてエンコードします。
以下は、トレース範囲をサンプリングするための Probabilistic Sampling Processor の OpenTelemetryCollector カスタムリソース設定の例です。
# ...
config:
processors:
probabilistic_sampler:
sampling_percentage: 15.3
mode: "proportional"
hash_seed: 22
sampling_precision: 14
fail_closed: true
# ...
service:
pipelines:
traces:
processors: [probabilistic_sampler]
# ...
- 1
- トレースパイプラインの場合、ランダム性のソースとなるのは、スパントレース ID のハッシュ値です。
- 2
- 必須。スパンをサンプリングする割合を、32 ビット浮動小数点数のパーセンテージ値で受け入れます。
- 3
- 任意。サンプリングロジックのモードにサポートされている文字列値 (デフォルトは
hash_seed、proportional、またはequalizing) を受け入れます。hash_seedモードは、トレース ID に Fowler–Noll–Vo (FNV) ハッシュ関数を適用し、そのハッシュ値をサンプリングのパーセンテージ値と比較します。トレース ID 以外のテレメトリー単位でhash_seedモードを使用することもできます。proportionalモードでは、総スパン量の厳密な確率ベースの比率がサンプリングされ、OpenTelemetry および World Wide Web Consortium の仕様に基づいています。equalizingモードは、パイプライン全体でサンプリング確率を最小値に下げたり、クライアント SDK にさまざまなサンプリング設定がある Collector デプロイメントで均一なサンプリング確率を適用したりする際に役立ちます。 - 4
- 任意。ハッシュアルゴリズムの計算に使用される 32 ビットの符号なし整数を受け入れます。このフィールドが設定されていない場合、デフォルトのシード値は
0です。複数の層の Collector インスタンスを使用する場合は、同じ層のすべての Collector を同じシード値に設定する必要があります。 - 5
- 任意。サンプリングしきい値をエンコードするために使用される 16 進数の桁数を決定します。整数値を受け入れます。サポートされる値は
1-14です。デフォルト値4では、しきい値に 16 を超える有効ビットが含まれる場合、つまり 56 ビットを使用するproportionalモードの場合、しきい値は丸められます。proportionalモードを選択した場合は、前のサンプラーによって適用された精度を維持するために、より大きな値を使用します。 - 6
- 任意。サンプリングエラーのあるスパンを拒否します。ブール値を受け入れます。デフォルト値は
trueです。
以下は、ログレコードをサンプリングするための Probabilistic Sampling Processor の OpenTelemetryCollector カスタムリソース設定の例です。
# ...
config:
processors:
probabilistic_sampler/logs:
sampling_percentage: 15.3
mode: "hash_seed"
hash_seed: 22
sampling_precision: 4
attribute_source: "record"
from_attribute: "<log_record_attribute_name>"
fail_closed: true
# ...
service:
pipelines:
logs:
processors: [ probabilistic_sampler/logs ]
# ...
- 1
- 必須。スパンをサンプリングする割合を、32 ビット浮動小数点数のパーセンテージ値で受け入れます。
- 2
- 任意。サンプリングロジックモードにサポートされている文字列値 (デフォルトは
hash_seed、equalizing、またはproportional) を受け入れます。hash_seedモードは、トレース ID または指定されたログレコードの属性に Fowler–Noll–Vo (FNV) ハッシュ関数を適用し、そのハッシュ値をサンプリングのパーセンテージ値と比較します。また、hash_seedモードは、トレース ID 以外のテレメトリー単位で使用することもできます。たとえば、service.instance.idリソース属性を使用して、一定の割合の Pod からログレコードを収集できます。equalizingモードは、パイプライン全体でサンプリング確率を最小値に下げたり、クライアント SDK にさまざまなサンプリング設定がある Collector デプロイメントで均一なサンプリング確率を適用したりする際に役立ちます。proportionalモードでは、総スパン量の厳密な確率ベースの比率がサンプリングされ、OpenTelemetry および World Wide Web Consortium の仕様に基づいています。 - 3
- 任意。ハッシュアルゴリズムの計算に使用される 32 ビットの符号なし整数を受け入れます。このフィールドが設定されていない場合、デフォルトのシード値は
0です。複数の層の Collector インスタンスを使用する場合は、同じ層のすべての Collector を同じシード値に設定する必要があります。 - 4
- 任意。サンプリングしきい値をエンコードするために使用される 16 進数の桁数を決定します。整数値を受け入れます。サポートされる値は
1-14です。デフォルト値4では、しきい値に 16 を超える有効ビットが含まれる場合、つまり 56 ビットを使用するproportionalモードの場合、しきい値は丸められます。proportionalモードを選択した場合は、前のサンプラーによって適用された精度を維持するために、より大きな値を使用します。 - 5
- 任意。
from_attributeでログレコード属性を検索する場所を定義します。ログレコード属性はランダム性のソースとして使用されます。デフォルトのtraceID値またはrecord値を受け入れます。 - 6
- 任意。一意のログレコード ID など、サンプリングハッシュの計算に使用されるログレコード属性の名前。文字列値を受け入れます。デフォルト値は
""です。このフィールドは、トレース ID が存在しないか、トレース ID サンプリングが無効になっているか、attribute_sourceフィールドがrecord値に設定されている状況で、ランダム性のソースとしてログレコード属性を指定する必要がある場合にのみ使用してください。 - 7
- 任意。サンプリングエラーのあるスパンを拒否します。ブール値を受け入れます。デフォルト値は
trueです。