OpenTelemetry セマンティック規約をサービスエントリーのスパンにマッピングする

概要

Datadog は、トレースメトリクスAPM Trace Explorer などの機能のプラットフォーム全体でサービスエントリスパンを使用しています。この規約は Datadog 固有のものですが、以下のオプトインガイドに従うことで、OpenTelemetry の SpanKind 属性からマッピングすることができます。

要件

  • OTel Collector Contrib v0.100.0 以上
  • Datadog Agent v7.53.0 以上

セットアップ

ご利用の取り込みパスに基づいて、構成オプションを有効にしてください。

新しいサービスエントリスパン識別ロジックは、Datadog エクスポーターDatadog コネクターtraces::compute_top_level_by_span_kind 構成オプションを true に設定することで有効化できます。エクスポーターとコネクターの両方を使用している場合、この構成オプションは両方で有効にする必要があります。

新しいサービスエントリスパン識別ロジックは、Datadog Agent の構成で apm_config.features"enable_otlp_compute_top_level_by_span_kind" を追加することで有効化できます。

サポートされる規約

トレースメトリクスは、サービスエントリスパンと測定されたスパンに対して生成されます。これらのスパン規約は Datadog 固有のものであるため、OpenTelemetry のスパンは以下のマッピングで識別されます。

OpenTelemetry の規約Datadog の規約
ルートスパンサービスエントリスパン
サーバースパン (span.kind: server)サービスエントリスパン
コンシューマースパン (span.kind: consumer)サービスエントリスパン
クライアントスパン (span.kind: client)測定されたスパン
プロデューサースパン (span.kind: producer)測定されたスパン
インターナルスパン (span.kind: internal)トレースメトリクスは生成されません

移行

この新しいサービスエントリスパン識別ロジックにより、トレースメトリクスを生成するスパンの数が増加し、トレースメトリクスに基づく既存のモニターに影響を与える可能性があります。インターナルスパンしかないユーザーの場合、トレースメトリクスは減少するでしょう。

トレースメトリクスに基づく既存のモニターがある場合、この変更によりトレースメトリクスの一貫性が向上するため、アップグレード後にそれらを更新できます。インターナルスパンしかない場合、トレースメトリクスとサービスエントリスパンを受け取るために、上記の表に従ってインスツルメンテーションを更新してください。

SpanKind は通常、スパンが作成されるときに設定されますが、OpenTelemetry Collector の変換プロセッサを使用して上記のマッピングを制御するために更新することもできます。例えば、インターナルスパンに対してトレースメトリクスが必要な場合、以下の構成により http.path: "/health" を持つインターナルスパンをクライアントスパンに変換します。

  transform:
    trace_statements:
      - context: span
        statements:
          - set(kind.string, "Client") where kind.string == "Internal" and attributes["http.path"] == "/health"

参考資料

お役に立つドキュメント、リンクや記事: