Java エージェントの宣言的設定
宣言的設定は、環境変数やシステムプロパティのかわりに YAML ファイルを使用します。
このアプローチは次のような場合に便利です。
- 設定するオプションが多い場合
- 環境変数やシステムプロパティでは利用できない設定オプションを使いたい場合
環境変数と同様に、設定の構文は言語に依存せず、OpenTelemetry Java エージェントを含む、宣言的設定をサポートするすべての OpenTelemetry Java SDK で動作します。
宣言的設定のスキーマは安定版です。
まだ実験的な部分には /development というサフィックスが付いています。
Java エージェントの宣言的設定サポートはまだ実験的です。
サポートされるバージョン
宣言的設定は OpenTelemetry Java エージェントバージョン 2.26.0 以降 でサポートされています。
はじめに
- 以下の設定ファイルを
otel-config.yamlとして保存します。 - JVM の起動引数に以下を追加します。
-Dotel.config.file=/path/to/otel-config.yaml
file_format: '1.0'
resource:
attributes_list: ${OTEL_RESOURCE_ATTRIBUTES}
detection/development:
detectors:
- service: # "service.instance.id" と OTEL_SERVICE_NAME からの "service.name" が追加される
propagator:
composite:
- tracecontext:
- baggage:
tracer_provider:
processors:
- batch:
exporter:
otlp_http:
endpoint: ${OTEL_EXPORTER_OTLP_TRACES_ENDPOINT:-http://localhost:4318/v1/traces}
meter_provider:
readers:
- periodic:
exporter:
otlp_http:
endpoint: ${OTEL_EXPORTER_OTLP_METRICS_ENDPOINT:-http://localhost:4318/v1/metrics}
logger_provider:
processors:
- batch:
exporter:
otlp_http:
endpoint: ${OTEL_EXPORTER_OTLP_LOGS_ENDPOINT:-http://localhost:4318/v1/logs}
宣言的設定のより一般的なスタートガイドについては、SDK の宣言的設定 のドキュメントを参照してください。
このページでは、OpenTelemetry Java エージェント に特有の内容に焦点を当てています。 Spring Boot スターターについては、Spring Boot スターターの宣言的設定 を参照してください。
既存の設定の変換
Paste your existing configuration below to generate the equivalent declarative configuration YAML. You can fill in any combination of inputs.
設定オプションのマッピング
既存の環境変数やシステムプロパティの設定を宣言的設定にマッピングする場合は、以下のルールを使用してください。
- 設定オプションが
otel.javaagent.で始まる場合(例:otel.javaagent.logging)、環境変数またはシステムプロパティでのみ設定できるプロパティである可能性が高いです(詳細は以下の 環境変数とシステムプロパティのみのオプション セクションを参照してください)。 それ以外の場合は、otel.javaagent.接頭辞を削除し、以下のagentセクションに配置します。 - 設定オプションが
otel.instrumentation.で始まる場合(例:otel.instrumentation.spring-batch.experimental.chunk.new-trace)、otel.instrumentation.接頭辞を削除し、以下のinstrumentationセクションに配置します。 - それ以外の場合、オプションは SDK の設定に属する可能性が高いです。
移行設定 で適切なセクションを見つけてください。
otel.bsp.schedule.delayのようなシステムプロパティがある場合は、移行設定で対応する環境変数OTEL_BSP_SCHEDULE_DELAYを探してください。 .を使ってインデントレベルを作成します。-を_に変換します。- 適切な場合は YAML のブーリアン型と整数型を使用します(例:
"true"のかわりにtrue、"5000"のかわりに5000)。 - 特別なマッピングがあるオプションは以下で説明しています。
instrumentation/development:
general:
http:
client:
request_captured_headers: # 以前は otel.instrumentation.http.client.capture-request-headers
- Content-Type
- Accept
response_captured_headers: # 以前は otel.instrumentation.http.client.capture-response-headers
- Content-Type
- Content-Encoding
server:
request_captured_headers: # 以前は otel.instrumentation.http.server.capture-request-headers
- Content-Type
- Accept
response_captured_headers: # 以前は otel.instrumentation.http.server.capture-response-headers
- Content-Type
- Content-Encoding
java:
common:
service_mapping: # 以前は "otel.instrumentation.common.peer-service-mapping"
- peer: 1.2.3.4
service_name: FooService
- peer: 2.3.4.5
service_name: BarService
agent:
# 以前は otel.instrumentation.common.default-enabled
# instrumentation_mode: none # 以前は false
instrumentation_mode: default # 以前は true
spring_batch:
experimental:
chunk:
new_trace: true
エージェント固有のオプション(otel.javaagent. で始まるもの)は distribution セクションに配置されます。
distribution:
javaagent:
instrumentation:
default_enabled: false # 以前は otel.instrumentation.common.default-enabled
enabled:
- tomcat
- spring_webmvc
disabled:
- armeria_grpc
exclude_classes: # 以前は otel.javaagent.exclude-classes
- com.example.excluded.Class1
exclude_class_loaders: # 以前は otel.javaagent.exclude-class-loaders
- com.example.ExcludedClassLoader
環境変数とシステムプロパティのみのオプション
以下の設定オプションは宣言的設定でサポートされていますが、環境変数またはシステムプロパティでのみ利用可能です。
otel.javaagent.configuration-file(ただし、宣言的設定では不要なはずです)otel.javaagent.debugotel.javaagent.enabledotel.javaagent.experimental.field-injection.enabledotel.javaagent.experimental.security-manager-support.enabledotel.javaagent.extensionsotel.javaagent.logging.application.logs-buffer-max-recordsotel.javaagent.logging
これらのオプションはエージェントの起動時、宣言的設定ファイルが読み込まれる前に必要です。
期間のフォーマット
- 宣言的設定は ミリ秒単位の期間のみをサポートしています(例: 5秒の場合は
5000)。 OTEL_BSP_SCHEDULE_DELAY=5sを使用するとエラーになります(環境変数では有効ですが、宣言的設定では無効です)。
例:
tracer_provider:
processors:
- batch:
schedule_delay: ${OTEL_BSP_SCHEDULE_DELAY:-5000}
動作の違い
- リソース属性
telemetry.distro.name(Java エージェントによってデフォルトで追加される)の値は、opentelemetry-java-instrumentationではなくopentelemetry-javaagentになります(3.0 リリースで再び統一される予定です)。
まだサポートされていない機能
まだ環境変数やシステムプロパティが必要な機能
環境変数やシステムプロパティでサポートされている一部の機能は、宣言的設定ではまだサポートされていません。
以下の設定は、環境変数またはシステムプロパティで設定する必要があります。
otel.javaagent.experimental.thread-propagation-debugger.enabled
まったくサポートされていない機能
宣言的設定でまだサポートされていない Java エージェントの機能:
otel.javaagent.add-thread-details
宣言的設定でまだサポートされていない Contrib の機能:
エクステンション API
エクステンションは新しい宣言的設定 API を使用します。
AutoConfigurationCustomizerProviderを使用するエクステンションは、新しいDeclarativeConfigurationCustomizerProviderAPI に移行する必要があります。 以前の AgentTracerProviderConfigurer が新しい SpanLoggingCustomizerProvider にどのようにマッピングされるかを確認してください。- スパンエクスポーターなどのコンポーネントは、
ComponentProviderAPI を使用する必要があります。 旧 API と新 API の両方をサポートしている Baggage Processor を例として確認してください。
フィードバック
このページは役に立ちましたか?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!