計装の設定

このページでは、複数の計装に同時に適用される共通設定について説明します。

ピアサービス名

ピアサービス名は、接続先のリモートサービスの名前です。 ローカルサービスのリソースにおける service.name に対応します。

System property: otel.instrumentation.common.peer-service-mappingEnvironment variable: OTEL_INSTRUMENTATION_COMMON_PEER_SERVICE_MAPPING

Description: ホスト名または IP アドレスからピアサービスへのマッピングを、<host_or_ip>=<user_assigned_name> のペアをカンマ区切りのリストとして指定するために使用します。 ホストまたは IP アドレスがマッピングに一致するスパンに、ピアサービスが属性として追加されます。

たとえば、以下のように設定した場合:

1.2.3.4=cats-service,dogs-abcdef123.serverlessapis.com=dogs-api

1.2.3.4 へのリクエストには peer.service 属性として cats-service が設定され、dogs-abcdef123.serverlessapis.com へのリクエストには dogs-api という属性が設定されます。

Java エージェントバージョン 1.31.0 以降では、peer.service を定義するためにポートとパスを指定することも可能です。

たとえば、以下のように設定した場合:

1.2.3.4:443=cats-service,dogs-abcdef123.serverlessapis.com:80/api=dogs-api

1.2.3.4 へのリクエストには peer.service 属性の上書きはありませんが、1.2.3.4:443 には peer.service として cats-service が設定され、dogs-abcdef123.serverlessapis.com:80/api/v1 へのリクエストには dogs-api という属性が設定されます。

DB ステートメントのサニタイズ

エージェントは、db.statement セマンティック属性を設定する前に、すべてのデータベースクエリ/ステートメントをサニタイズします。 クエリ文字列内のすべての値(文字列、数値)は疑問符(?)に置き換えられます。

注意:JDBC バインドパラメーターは db.statement にキャプチャされません。 バインドパラメーターのキャプチャについては、対応するイシューを参照してください。

例:

  • SQL クエリ SELECT a from b where password="secret" は、エクスポートされたスパンでは SELECT a from b where password=? として表示されます。
  • Redis コマンド HSET map password "secret" は、エクスポートされたスパンでは HSET map password ? として表示されます。

この動作はすべてのデータベース計装でデフォルトで有効になっています。 無効にするには、以下のプロパティを使用してください:

System property: otel.instrumentation.common.db-statement-sanitizer.enabledEnvironment variable: OTEL_INSTRUMENTATION_COMMON_DB_STATEMENT_SANITIZER_ENABLED

Default: true
Description: DB ステートメントのサニタイズを有効にします。

メッセージング計装におけるコンシューマーメッセージ受信テレメトリーのキャプチャ

メッセージング計装でコンシューマーメッセージ受信テレメトリーをキャプチャするようにエージェントを設定できます。 有効にするには、以下のプロパティを使用してください:

System property: otel.instrumentation.messaging.experimental.receive-telemetry.enabledEnvironment variable: OTEL_INSTRUMENTATION_MESSAGING_EXPERIMENTAL_RECEIVE_TELEMETRY_ENABLED

Default: false
Description: コンシューマーメッセージ受信テレメトリーを有効にします。

これにより、コンシューマー側で新しいトレースが開始され、プロデューサーのトレースとはスパンリンクのみで接続されることに注意してください。

Note: テーブルに記載されているプロパティ/環境変数名はまだ実験的なものであり、変更される可能性があります。

エンドユーザー属性のキャプチャ

JavaEE/JakartaEE ServletSpring Security などの計装ライブラリから、一般的な ID 属性enduser.idenduser.roleenduser.scope)をキャプチャするようにエージェントを設定できます。

Note: 関係するデータの機密性を考慮して、この機能はデフォルトで無効になっていますが、特定の属性に対して選択的に有効化できます。 データの収集を有効にする前に、各属性のプライバシーへの影響を慎重に評価する必要があります。

System property: otel.instrumentation.common.enduser.id.enabledEnvironment variable: OTEL_INSTRUMENTATION_COMMON_ENDUSER_ID_ENABLED

Default: false
Description: enduser.id セマンティック属性をキャプチャするかどうかを決定します。

System property: otel.instrumentation.common.enduser.role.enabledEnvironment variable: OTEL_INSTRUMENTATION_COMMON_ENDUSER_ROLE_ENABLED

Default: false
Description: enduser.role セマンティック属性をキャプチャするかどうかを決定します。

System property: otel.instrumentation.common.enduser.scope.enabledEnvironment variable: OTEL_INSTRUMENTATION_COMMON_ENDUSER_SCOPE_ENABLED

Default: false
Description: enduser.scope セマンティック属性をキャプチャするかどうかを決定します。

Spring Security

カスタムの付与された権限の接頭辞を使用する Spring Security ユーザーは、以下のプロパティを使用して enduser.* 属性値からそれらの接頭辞を除去し、実際のロール名とスコープ名をより適切に表現できます:

System property: otel.instrumentation.spring-security.enduser.role.granted-authority-prefixEnvironment variable: OTEL_INSTRUMENTATION_SPRING_SECURITY_ENDUSER_ROLE_GRANTED_AUTHORITY_PREFIX

Default: ROLE_
Description: enduser.role セマンティック属性にキャプチャするロールを識別する、付与された権限の接頭辞。

System property: otel.instrumentation.spring-security.enduser.scope.granted-authority-prefixEnvironment variable: OTEL_INSTRUMENTATION_SPRING_SECURITY_ENDUSER_SCOPE_GRANTED_AUTHORITY_PREFIX

Default: SCOPE_
Description: enduser.scopes セマンティック属性にキャプチャするスコープを識別する、付与された権限の接頭辞。