サポートセンターホーム


トレースデータのサンプリング

OpenTelemetry仕様内のいくつかのサンプリング方法を使用して、アプリケーションでキャプチャするデータの量を制限または集中させることができます。 たとえば、長時間実行されるバックグラウンドジョブまたは200OKステータスコードのトレースを除外したい場合があります。 サンプリングに推奨されるXNUMXつの方法は、ヘッドベースのサンプリングとテールベースのサンプリングです。

ヘッドベースのサンプリングは、トレースの開始時に行われる確率的なランダムサンプリングの決定です。 ヘッドベースのサンプリング決定を実装するには、次のOpenTelemetryトレースサンプラーをアプリケーションに追加します。

SdkTracerProvider tracerProvider = SdkTracerProvider.builder()
  .setSampler(Sampler.traceIdRatioBased(0.5))
  .build();

デフォルトでは、トレースの決定は親スパンで行われ、決定はトレース全体に伝播されます。 上記の例では、トレースの50%をサンプリングしています。 これを変更するには、の構成と追加の詳細を参照してください。 OpenTelemetryのサンプリングドキュメント.

テールベースのサンプリング

テールベースのサンプリングは、トレースの最後に行われるサンプリングの決定であり、定義された一連の基準に基づいて保持されます。 テールベースのサンプリング決定はコレクターレベルで設定でき、ユーザーが構成する必要があります。

OpenTelemetryは、次のポリシーをサポートしています。

ポリシー 製品説明
always_sample すべてのトレースをサンプリングします。
numeric_attribute 数値属性に基づくサンプル。
string_attribute 文字列の一致に基づくサンプル。
rate_limiting レートに基づくサンプル。

次の例は、レート制限の構成を示しています。

processors:
  tail_sampling:
    decision_wait: 10s
    num_traces: 100
    expected_new_traces_per_sec: 10
    policies:
      [
        {
         name: test-policy-1,
         type: rate_limiting,
	 Rate_limiting: {spans_per_second: 35}
	}
      ]

ポリシーの完全なリストと追加の詳細については、 OpenTelemetryテールサンプリングプロセッサのドキュメント.

トレースへのカスタムタグの追加

インストルメンテーション言語に関係なく、トレースを既存の監視対象リソースにマップする場合は、実装中に次のカスタムタグを指定する必要があります。ip、 resource.type (これはに設定する必要があります kubernetes-pod, cloudまたは host)、及び host.name (これはKubernetesのポッド名である必要があります)。

トレースで上記のタグを静的にキャプチャすることは、LogicMonitor内のマッピングにとって重要ですが、データを探索および検索するときに、より多くの相関関係とコンテキストを見つけるために、トレースデータに追加の属性を含めることができます。 たとえば、顧客層、製品カテゴリ、地理データなどのメタデータをキャプチャすると、発生している可能性のある問題をよりよく理解するための重要なコンテキストが提供されます。

手動で計測されたスパンに、Key-Valueペアまたはペアのグループを設定できます。 以下はJavaの例です。

Span span = tracer.spanBuilder("/resource/path").setSpanKind(SpanKind.CLIENT).startSpan();
span.setAttribute("http.method", "GET");
span.setAttribute("http.url", url.toString());

スパン属性と命名の詳細については、を参照してください。 OpenTelemetryのドキュメント とその 意味規則の定義されたリスト.

記事上で