SDK 設定
この Spring スターターは設定メタデータをサポートしており、IDE で利用可能なすべてのプロパティを確認・自動補完できます。
一般的な設定
OpenTelemetry スターターは、すべての SDK 自動設定をサポートしています(2.2.0 以降)。
application.properties ファイルや application.yaml ファイルのプロパティ、または環境変数を使用して設定を更新できます。
application.yaml の例:
otel:
propagators:
- tracecontext
- b3
resource:
attributes:
deployment.environment: dev
service:
name: cart
namespace: shop
環境変数の例:
export OTEL_PROPAGATORS="tracecontext,b3"
export OTEL_RESOURCE_ATTRIBUTES="deployment.environment=dev,service.name=cart,service.namespace=shop"
SDK レベルの設定(リソース、プロパゲーター、エクスポーター)は、application.yaml 内で標準の宣言的設定スキーマを直接使用します。
システムプロパティや環境変数でも値をオーバーライドできます。
環境変数によるオーバーライドを参照してください。
otel:
file_format: '1.0'
resource:
attributes:
- name: deployment.environment
value: dev
- name: service.name
value: cart
- name: service.namespace
value: shop
propagator:
composite:
- tracecontext:
- b3:
リソース属性のオーバーライド
Spring Boot では通常どおり、application.properties ファイルや application.yaml ファイルのプロパティを環境変数でオーバーライドできます。
たとえば、標準の OTEL_RESOURCE_ATTRIBUTES 環境変数を設定することで、リソース属性 deployment.environment を設定またはオーバーライドできます(service.name や service.namespace は変更しません)。
export OTEL_RESOURCE_ATTRIBUTES="deployment.environment=prod"
また、OTEL_RESOURCE_ATTRIBUTES_DEPLOYMENT_ENVIRONMENT 環境変数を使用して、単一のリソース属性を設定またはオーバーライドすることもできます。
export OTEL_RESOURCE_ATTRIBUTES_DEPLOYMENT_ENVIRONMENT="prod"
2番目のオプションは SpEL 式をサポートしています。
DEPLOYMENT_ENVIRONMENT は、Spring Boot の Relaxed Binding によって deployment.environment に変換されることに注意してください。
OpenTelemetry スターターの無効化
テスト目的などでスターターを無効にするには、otel.sdk.disabled を true に設定します。
otel:
sdk:
disabled: true
テスト目的などでスターターを無効にするには、otel.disabled を true に設定します。
注意:宣言的設定では、プロパティ名は otel.sdk.disabled ではなく otel.disabled です。
otel:
file_format: '1.0'
disabled: true
プログラムによる設定
プログラムによる設定を参照してください。
リソースプロバイダー
OpenTelemetry スターターには、Java エージェントと同じリソースプロバイダーが含まれています。
さらに、OpenTelemetry スターターには以下の Spring Boot 固有のリソースプロバイダーが含まれています。
ディストリビューションリソースプロバイダー
FQN:
io.opentelemetry.instrumentation.spring.autoconfigure.resources.DistroVersionResourceProvider
| 属性 | 値 |
|---|---|
telemetry.distro.name | opentelemetry-spring-boot-starter |
telemetry.distro.version | スターターのバージョン |
Spring リソースプロバイダー
FQN:
io.opentelemetry.instrumentation.spring.autoconfigure.resources.SpringResourceProvider
| 属性 | 値 |
|---|---|
service.name | spring.application.name または build-info.properties の build.name(サービス名を参照) |
service.version | build-info.properties の build.version |
宣言的設定では、リソースプロバイダーは resource.detection/development.detectors 配下のディテクターとして明示的に設定します。
リストに含まれたディテクターのみが有効になり、SPI による自動検出は行われません。
otel:
resource:
detection/development:
detectors:
- container: # container.id
- host: # host.name, host.arch
- host_id: # host.id
- os: # os.type, os.description
- process: # process.pid, process.executable.path, process.command_line
- process_runtime: # process.runtime.name/version/description
- service: # service.name, service.instance.id
- spring: # service.name (from spring.application.name), service.version (from build-info)
属性 telemetry.distro.name と telemetry.distro.version は、トラブルシューティングのためにスターターによって常に自動的に追加されます。
サービス名
これらのリソースプロバイダーを使用した場合、サービス名は OpenTelemetry の仕様に従い、以下の優先順位ルールで決定されます。
otel.service.nameSpring プロパティまたはOTEL_SERVICE_NAME環境変数(最も優先度が高い)otel.resource.attributesシステム/Spring プロパティまたはOTEL_RESOURCE_ATTRIBUTES環境変数のservice.namespring.application.nameSpring プロパティbuild-info.properties- META-INF/MANIFEST.MF の
Implementation-Title - デフォルト値は
unknown_service:java(最も優先度が低い)
サービス名は、含めるリソースディテクターによって決まります(リソースプロバイダーを参照)。
otel.resource.attributesのservice.name(最も優先度が高い):otel: resource: attributes: - name: service.name value: my-spring-appserviceディテクター — 含まれている場合、OTEL_SERVICE_NAMEから自動検出します:otel: resource: detection/development: detectors: - service:springディテクター — 含まれている場合、spring.application.nameとbuild-info.propertiesから検出します:otel: resource: detection/development: detectors: - spring:デフォルト値は
unknown_service:java(最も優先度が低い)
build-info.properties ファイルを生成するには、pom.xml ファイルで以下のスニペットを使用してください。
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>build-info</goal>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
springBoot {
buildInfo {
}
}
フィードバック
このページは役に立ちましたか?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!