概要
Datadog と併用して OpenTelemetry を使用している場合、トレース内に不明瞭または長大なオペレーション名が表示されたり、一部のトレースがサービスページに表示されないことがあります。これは、OpenTelemetry SDK の情報と Datadog のオペレーション名 (サービスへのエントリポイントを分類する span 属性) とのマッピングが不足しているために起こります。
Datadog はサービスページ上でのトレースの可視性を向上させる、新しいオペレーション名マッピングを提供しています。この機能は現在はオプトインの設定が必要ですが、近い将来デフォルトになる予定です。
たとえば、古いオペレーション名が go.opentelemetry.io_contrib_instrumentation_net_http_otelhttp.server
であった span は、新しいロジックで http.server.request
に変わります。
Datadog は、これがデフォルトに切り替わる前になるべく早く新しいマッピングへ移行することを強く推奨します。
もしオペレーション名を監視するモニターやダッシュボードがある場合、変更の影響を受けるため、新しい規約に合わせて更新してください。
前提条件
移行前に、既存の span 名の設定をすべて削除してください:
Datadog エクスポーターとコネクターの設定から span_name_as_resource_name
と span_name_remappings
を削除します:
# 設定にこれらの行があれば削除してください
exporters:
datadog:
traces:
span_name_as_resource_name: true
span_name_remappings:
"old_name1": "new_name"
connectors:
datadog/connector:
traces:
span_name_as_resource_name: true
- Agent の設定から
span_name_as_resource_name
と span_name_remappings
を削除します:
# 設定にこれらの行があれば削除してください
otlp_config:
traces:
span_name_as_resource_name: true
span_name_remappings:
"old_name1": "new_name"
- 以下の環境変数を削除します:
DD_OTLP_CONFIG_TRACES_SPAN_NAME_AS_RESOURCE_NAME
DD_OTLP_CONFIG_TRACES_SPAN_NAME_REMAPPINGS
新しいオペレーション名マッピングを有効化
OpenTelemetry Collector を feature gate とともに起動します:
otelcol --config=config.yaml --feature-gates=datadog.EnableOperationAndResourceNameV2
削除した設定を置き換える
以前 span 名の設定を使用していた場合、processor の設定で置き換えてください:
SpanNameAsResourceName の置き換え
削除した span_name_as_resource_name
設定は、OpenTelemetry のトレースにある span.name
属性を Datadog のオペレーション名に適用していました。この機能を維持するには、transform processor を使って span 名を operation.name
属性にマッピングします:
processors:
transform:
trace_statements:
- context: span
statements:
- set(attributes["operation.name"], name)
SpanNameRemappings の置き換え
削除した span_name_remappings
設定は、オペレーション名を自動的にマッピングするために使用していました。この機能を維持するには、transform processor を使用して特定のオペレーション名を設定します:
processors:
transform:
trace_statements:
- context: span
statements:
- set(attributes["operation.name"], "new_name") where name == "old_name"
以下のいずれかの方法で機能を有効にします:
削除した設定の置き換え
以前に span 名の設定を使用していて同様の機能が必要な場合は、アプリケーションコード内で直接 operation.name
属性を設定してください。
参考資料