SDKの設定
SDKはAPIの組み込み参照実装で、計装API呼び出しによって生成されたテレメトリーを処理およびエクスポートします。 テレメトリーを適切に処理およびエクスポートするようにSDKを設定することは、OpenTelemetryをアプリケーションに統合するために不可欠なステップです。
すべてのSDKコンポーネントにはプログラム設定APIがあります。 これは、SDKを設定する最も柔軟で表現力豊かな方法です。 ただし、設定を変更するにはコードを調整してアプリケーションを再コンパイルする必要があり、APIがJavaで書かれているため言語の相互運用性がありません。
ゼロコードSDK自動設定モジュールは、システムプロパティまたは環境変数を通じてSDKコンポーネントを設定し、プロパティが不十分な場合のさまざまな拡張ポイントを提供します。
ゼロコードSDK自動設定モジュールの使用を推奨します。 これにより定型コードが削減され、コードの書き直しやアプリケーションの再コンパイルなしに再設定が可能になり、言語の相互運用性があります。
JavaエージェントとSpringスターターは、ゼロコードSDK自動設定モジュールを使用してSDKを自動的に設定し、それとともに計装をインストールします。
すべての自動設定コンテンツは、JavaエージェントとSpringスターターユーザーに適用されます。
プログラム設定
プログラム設定インターフェースは、SDKコンポーネントを構築するためのAPIのセットです。 すべてのSDKコンポーネントにはプログラム設定APIがあり、他のすべての設定メカニズムはこのAPIの上に構築されています。 たとえば、自動設定環境変数とシステムプロパティ設定インターフェースは、よく知られた環境変数とシステムプロパティをプログラム設定APIへの一連の呼び出しに解釈します。
他の設定メカニズムはより便利ですが、必要な正確な設定を表現するコードを書くことの柔軟性を提供するものはありません。 特定の機能が上位の設定メカニズムでサポートされていない場合、プログラム設定を使用するしかない場合があります。
SDKコンポーネントセクションでは、SDKの主要なユーザー向け領域の簡単なプログラム設定APIを示しています。 完全なAPIリファレンスについてはコードを参照してください。
ゼロコードSDK自動設定
自動設定モジュール(アーティファクトio.opentelemetry:opentelemetry-sdk-extension-autoconfigure:1.50.0
)は、プログラム設定インターフェースの上に構築された設定インターフェースで、SDKコンポーネントをゼロコードで設定します。
2つの異なる自動設定ワークフローがあります。
- 環境変数とシステムプロパティは、環境変数とシステムプロパティを解釈してSDKコンポーネントを作成し、プログラム設定をオーバーレイするためのさまざまなカスタマイゼーションポイントを含みます
- 宣言的設定(現在開発中)は、設定モデルを解釈してSDKコンポーネントを作成し、通常はYAML設定ファイルでエンコードされます
自動設定を使用してSDKコンポーネントを自動的に設定するには以下のようにします。
package otel;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
public class AutoConfiguredSdk {
public static OpenTelemetrySdk autoconfiguredSdk() {
return AutoConfiguredOpenTelemetrySdk.initialize().getOpenTelemetrySdk();
}
}
JavaエージェントとSpringスターターは、ゼロコードSDK自動設定モジュールを使用してSDKを自動的に設定し、それとともに計装をインストールします。 すべての自動設定コンテンツは、JavaエージェントとSpringスターターユーザーに適用されます。
自動設定モジュールは、適切なときにSDKをシャットダウンするためにJavaシャットダウンフックを登録します。
OpenTelemetry Javaは内部ログにjava.util.logging
を使用するため、シャットダウンフック中に一部のログが抑制される可能性があります。
これはJDK自体のバグであり、OpenTelemetry Javaの制御下にあるものではありません。
シャットダウンフック中にログが必要な場合は、シャットダウンフック内で自身をシャットダウンしてログメッセージを抑制する可能性があるログフレームワークではなく、System.out
の使用を検討してください。
詳細については、このJDKバグを参照してください。
環境変数とシステムプロパティ
自動設定モジュールは、環境変数設定仕様にリストされているプロパティをサポートし、時々実験的およびJava固有の追加があります。
以下のプロパティはシステムプロパティとしてリストされていますが、環境変数を使用して設定することもできます。 システムプロパティを環境変数に変換するには以下のステップを適用してください。
- 名前を大文字に変換します
- すべての
.
と-
文字を_
に置き換えます
たとえば、otel.sdk.enabled
システムプロパティはOTEL_SDK_ENABLED
環境変数と同等です。
プロパティがシステムプロパティと環境変数の両方として定義されている場合、システムプロパティが優先されます。
プロパティ:一般
SDKを無効にするためのプロパティ。
システムプロパティ | 説明 | デフォルト |
---|---|---|
otel.sdk.disabled | true の場合、OpenTelemetry SDKを無効にします。[1] | false |
[1]: 無効にした場合、AutoConfiguredOpenTelemetrySdk#getOpenTelemetrySdk()
は最小限に設定されたインスタンス(例:OpenTelemetrySdk.builder().build()
)を返します。
システムプロパティ | 説明 | デフォルト |
---|---|---|
otel.attribute.value.length.limit | 属性値の最大長。スパンとログに適用されます。otel.span.attribute.value.length.limit 、otel.span.attribute.count.limit によってオーバーライドされます。 | 制限なし |
otel.attribute.count.limit | 属性の最大数。スパン、スパンイベント、スパンリンク、ログに適用されます。 | 128 |
コンテキスト伝播のプロパティ。
システムプロパティ | 説明 | デフォルト |
---|---|---|
otel.propagators | プロパゲーターのカンマ区切りリスト。既知の値にはtracecontext 、baggage 、b3 、b3multi 、jaeger 、ottrace 、xray 、xray-lambda が含まれます。[1] | tracecontext,baggage (W3C) |
[1]: 既知のプロパゲーターとアーティファクト(アーティファクト座標についてはtext map propagatorを参照)。
tracecontext
はW3CTraceContextPropagator
を設定しますbaggage
はW3CBaggagePropagator
を設定しますb3
、b3multi
はB3Propagator
を設定しますjaeger
はJaegerPropagator
を設定しますottrace
はOtTracePropagator
を設定しますxray
はAwsXrayPropagator
を設定しますxray-lambda
はAwsXrayLambdaPropagator
を設定します
プロパティ:リソース
リソースを設定するためのプロパティ。
システムプロパティ | 説明 | デフォルト |
---|---|---|
otel.service.name | 論理サービス名を指定します。otel.resource.attributes で定義されたservice.name よりも優先されます。 | unknown_service:java |
otel.resource.attributes | 次の形式でリソース属性を指定します:key1=val1,key2=val2,key3=val3 。 | |
otel.resource.disabled.keys | フィルタリングするリソース属性キーを指定します。 | |
otel.java.enabled.resource.providers | 有効にするResourceProvider 完全修飾クラス名のカンマ区切りリスト。[1] 設定されていない場合、すべてのリソースプロバイダーが有効になります。 | |
otel.java.disabled.resource.providers | 無効にするResourceProvider 完全修飾クラス名のカンマ区切りリスト。[1] |
[1]: たとえば、OSリソースプロバイダーを無効にするには、-Dotel.java.disabled.resource.providers=io.opentelemetry.instrumentation.resources.OsResourceProvider
を設定します。
注意: otel.service.name
とotel.resource.attributes
システムプロパティ/環境変数は、io.opentelemetry.sdk.autoconfigure.internal.EnvironmentResourceProvider
リソースプロバイダーで解釈されます。otel.java.enabled.resource-providers
経由でリソースプロバイダーを指定することを選択した場合、サプライズを避けるためにそれを含めたい場合があります。リソースプロバイダーのアーティファクト座標についてはResourceProviderを参照してください。
プロパティ:トレース
otel.traces.exporter
で指定されたエクスポーターと組み合わせたバッチスパンプロセッサーのプロパティ。
システムプロパティ | 説明 | デフォルト |
---|---|---|
otel.bsp.schedule.delay | 2つの連続するエクスポート間の間隔(ミリ秒)。 | 5000 |
otel.bsp.max.queue.size | バッチ処理前にキューに入れられるスパンの最大数。 | 2048 |
otel.bsp.max.export.batch.size | 単一バッチでエクスポートするスパンの最大数。 | 512 |
otel.bsp.export.timeout | データをエクスポートする最大許可時間(ミリ秒)。 | 30000 |
サンプラーのプロパティ。
システムプロパティ | 説明 | デフォルト |
---|---|---|
otel.traces.sampler | 使用するサンプラー。既知の値にはalways_on 、always_off 、traceidratio 、parentbased_always_on 、parentbased_always_off 、parentbased_traceidratio 、jaeger_remote が含まれます。[1] | parentbased_always_on |
otel.traces.sampler.arg | サポートされている場合の設定されたトレーサーへの引数(例:比率)。 |
[1]: 既知のサンプラーとアーティファクト(アーティファクト座標についてはsamplerを参照)。
always_on
はAlwaysOnSampler
を設定しますalways_off
はAlwaysOffSampler
を設定しますtraceidratio
はTraceIdRatioBased
を設定します。otel.traces.sampler.arg
で比率を設定しますparentbased_always_on
はParentBased(root=AlwaysOnSampler)
を設定しますparentbased_always_off
はParentBased(root=AlwaysOffSampler)
を設定しますparentbased_traceidratio
はParentBased(root=TraceIdRatioBased)
を設定します。otel.traces.sampler.arg
で比率を設定しますjaeger_remote
はJaegerRemoteSampler
を設定します。otel.traces.sampler.arg
は仕様で説明されている引数のカンマ区切りリストです
スパン制限のプロパティ。
システムプロパティ | 説明 | デフォルト |
---|---|---|
otel.span.attribute.value.length.limit | スパン属性値の最大長。otel.attribute.value.length.limit よりも優先されます。 | 制限なし |
otel.span.attribute.count.limit | スパンごとの属性の最大数。otel.attribute.count.limit よりも優先されます。 | 128 |
otel.span.event.count.limit | スパンごとのイベントの最大数。 | 128 |
otel.span.link.count.limit | スパンごとのリンクの最大数。 | 128 |
プロパティ:メトリクス
定期的メトリクスリーダーのプロパティ。
システムプロパティ | 説明 | デフォルト |
---|---|---|
otel.metric.export.interval | 2つのエクスポート試行の開始間の間隔(ミリ秒)。 | 60000 |
エグザンプラーのプロパティ。
システムプロパティ | 説明 | デフォルト |
---|---|---|
otel.metrics.exemplar.filter | エグザンプラーサンプリングのフィルター。ALWAYS_OFF 、ALWAYS_ON 、TRACE_BASED のいずれかです。 | TRACE_BASED |
カーディナリティ制限のプロパティ。
システムプロパティ | 説明 | デフォルト |
---|---|---|
otel.experimental.metrics.cardinality.limit | 設定された場合、カーディナリティ制限を設定します。値はメトリクスごとの異なるポイントの最大数を指示します。このオプションは実験的で、変更または削除される可能性があります。 | 2000 |
プロパティ:ログ
otel.logs.exporter
経由でエクスポーターと組み合わせたログレコードプロセッサーのプロパティ。
システムプロパティ | 説明 | デフォルト |
---|---|---|
otel.blrp.schedule.delay | 2つの連続するエクスポート間の間隔(ミリ秒)。 | 1000 |
otel.blrp.max.queue.size | バッチ処理前にキューに入れられるログレコードの最大数。 | 2048 |
otel.blrp.max.export.batch.size | 単一バッチでエクスポートするログレコードの最大数。 | 512 |
otel.blrp.export.timeout | データをエクスポートする最大許可時間(ミリ秒)。 | 30000 |
プロパティ:エクスポーター
エクスポーターを設定するためのプロパティ。
システムプロパティ | 目的 | デフォルト |
---|---|---|
otel.traces.exporter | スパンエクスポーターのカンマ区切りリスト。既知の値にはotlp 、zipkin 、console 、logging-otlp 、none が含まれます。[1] | otlp |
otel.metrics.exporter | メトリクスエクスポーターのカンマ区切りリスト。既知の値にはotlp 、prometheus 、none が含まれます。[1] | otlp |
otel.logs.exporter | ログレコードエクスポーターのカンマ区切りリスト。既知の値にはotlp 、console 、logging-otlp 、none が含まれます。[1] | otlp |
otel.java.exporter.memory_mode | reusable_data の場合、アロケーションを削減するために(サポートするエクスポーターで)再利用可能メモリモードを有効にします。既知の値にはreusable_data 、immutable_data が含まれます。[2] | reusable_data |
[1]: 既知のエクスポーターとアーティファクト(エクスポーターのアーティファクト座標についてはspan exporter、metric exporter、log exporterを参照)。
otlp
はOtlpHttp{Signal}Exporter
/OtlpGrpc{Signal}Exporter
を設定しますzipkin
はZipkinSpanExporter
を設定しますconsole
はLoggingSpanExporter
、LoggingMetricExporter
、SystemOutLogRecordExporter
を設定しますlogging-otlp
はOtlpJsonLogging{Signal}Exporter
を設定しますexperimental-otlp/stdout
はOtlpStdout{Signal}Exporter
を設定します(このオプションは実験的で、変更または削除される可能性があります)
[2]: otel.java.exporter.memory_mode=reusable_data
に準拠するエクスポーターは、OtlpGrpc{Signal}Exporter
、OtlpHttp{Signal}Exporter
、OtlpStdout{Signal}Exporter
、PrometheusHttpServer
です。
otlp
スパン、メトリクス、ログエクスポーターのプロパティ。
システムプロパティ | 説明 | デフォルト |
---|---|---|
otel.{signal}.exporter=otlp | {signal}用のOpenTelemetryエクスポーターを選択します。 | |
otel.exporter.otlp.protocol | OTLPトレース、メトリクス、ログリクエストで使用するトランスポートプロトコル。オプションにはgrpc とhttp/protobuf が含まれます。 | grpc [1] |
otel.exporter.otlp.{signal}.protocol | OTLP {signal}リクエストで使用するトランスポートプロトコル。オプションにはgrpc とhttp/protobuf が含まれます。 | grpc [1] |
otel.exporter.otlp.endpoint | すべてのOTLPトレース、メトリクス、ログを送信するエンドポイント。多くの場合、OpenTelemetry Collectorのアドレスです。TLSの使用に基づいてhttp またはhttps のスキームを持つURLでなければなりません。 | プロトコルがgrpc の場合はhttp://localhost:4317 、プロトコルがhttp/protobuf の場合はhttp://localhost:4318 。 |
otel.exporter.otlp.{signal}.endpoint | OTLP {signal}を送信するエンドポイント。多くの場合、OpenTelemetry Collectorのアドレスです。TLSの使用に基づいてhttp またはhttps のスキームを持つURLでなければなりません。プロトコルがhttp/protobuf の場合、バージョンとシグナルをパスに追加する必要があります(例:v1/traces 、v1/metrics 、v1/logs ) | プロトコルがgrpc の場合はhttp://localhost:4317 、プロトコルがhttp/protobuf の場合はhttp://localhost:4318/v1/{signal} 。 |
otel.exporter.otlp.certificate | OTLPトレース、メトリクス、ログサーバーのTLS認証を検証するときに使用する信頼できる証明書を含むファイルのパス。ファイルはPEM形式の1つ以上のX.509証明書を含む必要があります。 | ホストプラットフォームの信頼できるルート証明書が使用されます。 |
otel.exporter.otlp.{signal}.certificate | OTLP {signal}サーバーのTLS認証を検証するときに使用する信頼できる証明書を含むファイルのパス。ファイルはPEM形式の1つ以上のX.509証明書を含む必要があります。 | ホストプラットフォームの信頼できるルート証明書が使用されます |
otel.exporter.otlp.client.key | OTLPトレース、メトリクス、ログクライアントのTLS認証を検証するときに使用するプライベートクライアントキーを含むファイルのパス。ファイルは1つのプライベートキーPKCS8 PEM形式を含む必要があります。 | クライアントキーファイルは使用されません。 |
otel.exporter.otlp.{signal}.client.key | OTLP {signal}クライアントのTLS認証を検証するときに使用するプライベートクライアントキーを含むファイルのパス。ファイルは1つのプライベートキーPKCS8 PEM形式を含む必要があります。 | クライアントキーファイルは使用されません。 |
otel.exporter.otlp.client.certificate | OTLPトレース、メトリクス、ログクライアントのTLS認証を検証するときに使用する信頼できる証明書を含むファイルのパス。ファイルはPEM形式の1つ以上のX.509証明書を含む必要があります。 | チェインファイルは使用されません。 |
otel.exporter.otlp.{signal}.client.certificate | OTLP {signal}サーバーのTLS認証を検証するときに使用する信頼できる証明書を含むファイルのパス。ファイルはPEM形式の1つ以上のX.509証明書を含む必要があります。 | チェインファイルは使用されません。 |
otel.exporter.otlp.headers | OTLPトレース、メトリクス、ログリクエストでリクエストヘッダーとして渡すカンマで区切られたキー値ペア。 | |
otel.exporter.otlp.{signal}.headers | OTLP {signal}リクエストでリクエストヘッダーとして渡すカンマで区切られたキー値ペア。 | |
otel.exporter.otlp.compression | OTLPトレース、メトリクス、ログリクエストで使用する圧縮タイプ。オプションにはgzip が含まれます。 | 圧縮は使用されません。 |
otel.exporter.otlp.{signal}.compression | OTLP {signal}リクエストで使用する圧縮タイプ。オプションにはgzip が含まれます。 | 圧縮は使用されません。 |
otel.exporter.otlp.timeout | 各OTLPトレース、メトリクス、ログバッチの送信に許可される最大待機時間(ミリ秒)。 | 10000 |
otel.exporter.otlp.{signal}.timeout | 各OTLP {signal}バッチの送信に許可される最大待機時間(ミリ秒)。 | 10000 |
otel.exporter.otlp.metrics.temporality.preference | 希望する出力集約時間性。オプションにはDELTA 、LOWMEMORY 、CUMULATIVE が含まれます。CUMULATIVE の場合、すべての計装が累積時間性を持ちます。DELTA の場合、カウンター(同期および非同期)とヒストグラムがデルタ、アップダウンカウンター(同期および非同期)が累積になります。LOWMEMORY の場合、同期カウンターとヒストグラムがデルタ、非同期カウンターとアップダウンカウンター(同期および非同期)が累積になります。 | CUMULATIVE |
otel.exporter.otlp.metrics.default.histogram.aggregation | 希望するデフォルトヒストグラム集約。オプションにはBASE2_EXPONENTIAL_BUCKET_HISTOGRAM とEXPLICIT_BUCKET_HISTOGRAM が含まれます。 | EXPLICIT_BUCKET_HISTOGRAM |
otel.java.exporter.otlp.retry.disabled | false の場合、一時的なエラーが発生したときにリトライします。[2] | false |
注意: テキストプレースホルダー{signal}
は、サポートされているOpenTelemetry Signalを指します。有効な値にはtraces
、metrics
、logs
が含まれます。シグナル固有の設定は汎用バージョンよりも優先されます。
たとえば、otel.exporter.otlp.endpoint
とotel.exporter.otlp.traces.endpoint
の両方を設定した場合、後者が優先されます。
[1]: OpenTelemetry Javaエージェント 2.xとOpenTelemetry Spring Boot starterは、デフォルトでhttp/protobuf
を使用します。
[2]: OTLPは、一時的エラーをリトライストラテジーで処理することを要求します。リトライが有効な場合、リトライ可能なgRPCステータスコードはジッターアルゴリズムを使用した指数バックオフでリトライされます。RetryPolicy
の特定のオプションはプログラムカスタマイゼーションを介してのみカスタマイズできます。
zipkin
スパンエクスポーターのプロパティ。
システムプロパティ | 説明 | デフォルト |
---|---|---|
otel.traces.exporter=zipkin | Zipkinエクスポーターを選択 | |
otel.exporter.zipkin.endpoint | 接続するZipkinエンドポイント。HTTPのみがサポートされます。 | http://localhost:9411/api/v2/spans |
prometheus
メトリクスエクスポーターのプロパティ。
システムプロパティ | 説明 | デフォルト |
---|---|---|
otel.metrics.exporter=prometheus | Prometheusエクスポーターを選択 | |
otel.exporter.prometheus.port | Prometheusメトリクスサーバーをバインドするローカルポート。 | 9464 |
otel.exporter.prometheus.host | Prometheusメトリクスサーバーをバインドするローカルアドレス。 | 0.0.0.0 |
プログラムカスタマイゼーション
プログラムカスタマイゼーションは、サポートされているプロパティをプログラム設定で補完するフックを提供します。
Springスターターを使用している場合は、Springスタータープログラム設定も参照してください。
package otel;
import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdk;
import java.util.Collections;
public class CustomizedAutoConfiguredSdk {
public static OpenTelemetrySdk autoconfiguredSdk() {
return AutoConfiguredOpenTelemetrySdk.builder()
// オプションでTextMapPropagatorをカスタマイズ。
.addPropagatorCustomizer((textMapPropagator, configProperties) -> textMapPropagator)
// オプションでResourceをカスタマイズ。
.addResourceCustomizer((resource, configProperties) -> resource)
// オプションでSamplerをカスタマイズ。
.addSamplerCustomizer((sampler, configProperties) -> sampler)
// オプションでSpanExporterをカスタマイズ。
.addSpanExporterCustomizer((spanExporter, configProperties) -> spanExporter)
// オプションでSpanProcessorをカスタマイズ。
.addSpanProcessorCustomizer((spanProcessor, configProperties) -> spanProcessor)
// オプションで追加のプロパティを提供。
.addPropertiesSupplier(Collections::emptyMap)
// オプションでConfigPropertiesをカスタマイズ。
.addPropertiesCustomizer(configProperties -> Collections.emptyMap())
// オプションでSdkTracerProviderBuilderをカスタマイズ。
.addTracerProviderCustomizer((builder, configProperties) -> builder)
// オプションでSdkMeterProviderBuilderをカスタマイズ。
.addMeterProviderCustomizer((builder, configProperties) -> builder)
// オプションでMetricExporterをカスタマイズ。
.addMetricExporterCustomizer((metricExporter, configProperties) -> metricExporter)
// オプションでMetricReaderをカスタマイズ。
.addMetricReaderCustomizer((metricReader, configProperties) -> metricReader)
// オプションでSdkLoggerProviderBuilderをカスタマイズ。
.addLoggerProviderCustomizer((builder, configProperties) -> builder)
// オプションでLogRecordExporterをカスタマイズ。
.addLogRecordExporterCustomizer((logRecordExporter, configProperties) -> logRecordExporter)
// オプションでLogRecordProcessorをカスタマイズ。
.addLogRecordProcessorCustomizer((processor, configProperties) -> processor)
.build()
.getOpenTelemetrySdk();
}
}
SPI(Service provider interface)
SPIs(アーティファクトio.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:1.50.0
)は、SDKに組み込まれたコンポーネントを超えてSDK自動設定を拡張します。
以下のセクションでは、利用可能なSPIについて説明します。 各SPIセクションには以下が含まれます。
- Javadoc型リファレンスへのリンクを含む簡潔な説明
- 利用可能な組み込みおよび
opentelemetry-java-contrib
実装のテーブル - カスタム実装の簡単なデモンストレーション
ResourceProvider
ResourceProviderは、自動設定されたリソースに貢献します。
SDKに組み込まれ、opentelemetry-java-contrib
でコミュニティによって維持されているResourceProvider
です。
クラス | アーティファクト | 説明 |
---|---|---|
io.opentelemetry.sdk.autoconfigure.internal.EnvironmentResourceProvider | io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:1.50.0 | OTEL_SERVICE_NAME およびOTEL_RESOURCE_ATTRIBUTES 環境変数に基づいてリソース属性を提供します。 |
io.opentelemetry.instrumentation.resources.ContainerResourceProvider | io.opentelemetry.instrumentation:opentelemetry-resources:2.16.0-alpha | コンテナリソース属性を提供します。 |
io.opentelemetry.instrumentation.resources.HostResourceProvider | io.opentelemetry.instrumentation:opentelemetry-resources:2.16.0-alpha | ホストリソース属性を提供します。 |
io.opentelemetry.instrumentation.resources.HostIdResourceProvider | io.opentelemetry.instrumentation:opentelemetry-resources:2.16.0-alpha | ホストIDリソース属性を提供します。 |
io.opentelemetry.instrumentation.resources.ManifestResourceProvider | io.opentelemetry.instrumentation:opentelemetry-resources:2.16.0-alpha | jarマニフェストに基づいてサービスリソース属性を提供します。 |
io.opentelemetry.instrumentation.resources.OsResourceProvider | io.opentelemetry.instrumentation:opentelemetry-resources:2.16.0-alpha | OSリソース属性を提供します。 |
io.opentelemetry.instrumentation.resources.ProcessResourceProvider | io.opentelemetry.instrumentation:opentelemetry-resources:2.16.0-alpha | プロセスリソース属性を提供します。 |
io.opentelemetry.instrumentation.resources.ProcessRuntimeResourceProvider | io.opentelemetry.instrumentation:opentelemetry-resources:2.16.0-alpha | プロセスランタイムリソース属性を提供します。 |
io.opentelemetry.contrib.gcp.resource.GCPResourceProvider | io.opentelemetry.contrib:opentelemetry-gcp-resources:1.46.0-alpha | GCPランタイム環境リソース属性を提供します。 |
io.opentelemetry.contrib.aws.resource.BeanstalkResourceProvider | io.opentelemetry.contrib:opentelemetry-aws-resources:1.46.0-alpha | AWS Elastic Beanstalkランタイム環境リソース属性を提供します。 |
io.opentelemetry.contrib.aws.resource.Ec2ResourceProvider | io.opentelemetry.contrib:opentelemetry-aws-resources:1.46.0-alpha | Amazon EC2ランタイム環境リソース属性を提供します。 |
io.opentelemetry.contrib.aws.resource.EcsResourceProvider | io.opentelemetry.contrib:opentelemetry-aws-resources:1.46.0-alpha | Amazon EC2ランタイム環境リソース属性を提供します。 |
io.opentelemetry.contrib.aws.resource.EksResourceProvider | io.opentelemetry.contrib:opentelemetry-aws-resources:1.46.0-alpha | Amazon EKSランタイム環境リソース属性を提供します。 |
io.opentelemetry.contrib.aws.resource.LambdaResourceProvider | io.opentelemetry.contrib:opentelemetry-aws-resources:1.46.0-alpha | AWS Lambdaランタイム環境リソース属性を提供します。 |
リソース自動設定に参加するには、ResourceProvider
インターフェースを実装してください。
例を挙げましょう。
package otel;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.ResourceProvider;
import io.opentelemetry.sdk.resources.Resource;
public class CustomResourceProvider implements ResourceProvider {
@Override
public Resource createResource(ConfigProperties config) {
// リソースに貢献するために呼び出されるコールバック。
return Resource.builder().put("my.custom.resource.attribute", "abc123").build();
}
@Override
public int order() {
// オプションで呼び出し順序に影響を与える。
return 0;
}
}
AutoConfigurationCustomizerProvider
AutoConfigurationCustomizerProviderインターフェースを実装して、さまざまな自動設定されたSDKコンポーネントをカスタマイズします。 例を挙げましょう。
package otel;
import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizer;
import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider;
import java.util.Collections;
public class CustomizerProvider implements AutoConfigurationCustomizerProvider {
@Override
public void customize(AutoConfigurationCustomizer customizer) {
// オプションでTextMapPropagatorをカスタマイズ。
customizer.addPropagatorCustomizer((textMapPropagator, configProperties) -> textMapPropagator);
// オプションでResourceをカスタマイズ。
customizer.addResourceCustomizer((resource, configProperties) -> resource);
// オプションでSamplerをカスタマイズ。
customizer.addSamplerCustomizer((sampler, configProperties) -> sampler);
// オプションでSpanExporterをカスタマイズ。
customizer.addSpanExporterCustomizer((spanExporter, configProperties) -> spanExporter);
// オプションでSpanProcessorをカスタマイズ。
customizer.addSpanProcessorCustomizer((spanProcessor, configProperties) -> spanProcessor);
// オプションで追加のプロパティを提供。
customizer.addPropertiesSupplier(Collections::emptyMap);
// オプションでConfigPropertiesをカスタマイズ。
customizer.addPropertiesCustomizer(configProperties -> Collections.emptyMap());
// オプションでSdkTracerProviderBuilderをカスタマイズ。
customizer.addTracerProviderCustomizer((builder, configProperties) -> builder);
// オプションでSdkMeterProviderBuilderをカスタマイズ。
customizer.addMeterProviderCustomizer((builder, configProperties) -> builder);
// オプションでMetricExporterをカスタマイズ。
customizer.addMetricExporterCustomizer((metricExporter, configProperties) -> metricExporter);
// オプションでMetricReaderをカスタマイズ。
customizer.addMetricReaderCustomizer((metricReader, configProperties) -> metricReader);
// オプションでSdkLoggerProviderBuilderをカスタマイズ。
customizer.addLoggerProviderCustomizer((builder, configProperties) -> builder);
// オプションでLogRecordExporterをカスタマイズ。
customizer.addLogRecordExporterCustomizer((exporter, configProperties) -> exporter);
// オプションでLogRecordProcessorをカスタマイズ。
customizer.addLogRecordProcessorCustomizer((processor, configProperties) -> processor);
}
@Override
public int order() {
// オプションで呼び出し順序に影響を与える。
return 0;
}
}
ConfigurableSpanExporterProvider
ConfigurableSpanExporterProviderインターフェースを実装して、カスタムスパンエクスポーターが自動設定に参加できるようにします。 例を挙げましょう。
package otel;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.traces.ConfigurableSpanExporterProvider;
import io.opentelemetry.sdk.trace.export.SpanExporter;
public class CustomSpanExporterProvider implements ConfigurableSpanExporterProvider {
@Override
public SpanExporter createExporter(ConfigProperties config) {
// OTEL_TRACES_EXPORTERにgetName()からの値が含まれる場合に呼び出されるコールバック。
return new CustomSpanExporter();
}
@Override
public String getName() {
return "custom-exporter";
}
}
ConfigurableMetricExporterProvider
ConfigurableMetricExporterProviderインターフェースを実装して、カスタムメトリクスエクスポーターが自動設定に参加できるようにします。 例を挙げましょう。
package otel;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.metrics.ConfigurableMetricExporterProvider;
import io.opentelemetry.sdk.metrics.export.MetricExporter;
public class CustomMetricExporterProvider implements ConfigurableMetricExporterProvider {
@Override
public MetricExporter createExporter(ConfigProperties config) {
// OTEL_METRICS_EXPORTERにgetName()からの値が含まれる場合に呼び出されるコールバック。
return new CustomMetricExporter();
}
@Override
public String getName() {
return "custom-exporter";
}
}
ConfigurableLogRecordExporterProvider
ConfigurableLogRecordExporterProviderインターフェースを実装して、カスタムログレコードエクスポーターが自動設定に参加できるようにします。 例を挙げましょう。
package otel;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.logs.ConfigurableLogRecordExporterProvider;
import io.opentelemetry.sdk.logs.export.LogRecordExporter;
public class CustomLogRecordExporterProvider implements ConfigurableLogRecordExporterProvider {
@Override
public LogRecordExporter createExporter(ConfigProperties config) {
// OTEL_LOGS_EXPORTERにgetName()からの値が含まれる場合に呼び出されるコールバック。
return new CustomLogRecordExporter();
}
@Override
public String getName() {
return "custom-exporter";
}
}
ConfigurableSamplerProvider
ConfigurableSamplerProviderインターフェースを実装して、カスタムサンプラーが自動設定に参加できるようにします。 例を挙げましょう。
package otel;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.traces.ConfigurableSamplerProvider;
import io.opentelemetry.sdk.trace.samplers.Sampler;
public class CustomSamplerProvider implements ConfigurableSamplerProvider {
@Override
public Sampler createSampler(ConfigProperties config) {
// OTEL_TRACES_SAMPLERがgetName()からの値に設定されている場合に呼び出されるコールバック。
return new CustomSampler();
}
@Override
public String getName() {
return "custom-sampler";
}
}
ConfigurablePropagatorProvider
ConfigurablePropagatorProviderインターフェースを実装して、カスタムプロパゲーターが自動設定に参加できるようにします。 例を挙げましょう。
package otel;
import io.opentelemetry.context.propagation.TextMapPropagator;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigProperties;
import io.opentelemetry.sdk.autoconfigure.spi.ConfigurablePropagatorProvider;
public class CustomTextMapPropagatorProvider implements ConfigurablePropagatorProvider {
@Override
public TextMapPropagator getPropagator(ConfigProperties config) {
// OTEL_PROPAGATORSにgetName()からの値が含まれる場合に呼び出されるコールバック。
return new CustomTextMapPropagator();
}
@Override
public String getName() {
return "custom-propagator";
}
}
宣言的設定
宣言的設定は現在開発中です。 これは、opentelemetry-configurationと宣言的設定で説明されているYAMLファイルベースの設定を可能にします。
使用するには、io.opentelemetry:opentelemetry-sdk-extension-incubator:1.50.0-alpha
を含め、以下の表で説明されているように設定ファイルのパスを指定します。
システムプロパティ | 目的 | デフォルト |
---|---|---|
otel.experimental.config.file | SDK設定ファイルのパス。 | 未設定 |
設定ファイルが指定された場合、環境変数とシステムプロパティは無視され、プログラムカスタマイゼーションとSPIsはスキップされます。 ファイルの内容のみがSDK設定を決定します。
詳細については、以下のリソースを参照してください。
フィードバック
このページは役に立ちましたか?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!