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.nameservice.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.disabledtrue に設定します。

otel:
  sdk:
    disabled: true

テスト目的などでスターターを無効にするには、otel.disabledtrue に設定します。

注意:宣言的設定では、プロパティ名は 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.nameopentelemetry-spring-boot-starter
telemetry.distro.versionスターターのバージョン

Spring リソースプロバイダー

FQN: io.opentelemetry.instrumentation.spring.autoconfigure.resources.SpringResourceProvider

属性
service.namespring.application.name または build-info.propertiesbuild.nameサービス名を参照)
service.versionbuild-info.propertiesbuild.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.nametelemetry.distro.version は、トラブルシューティングのためにスターターによって常に自動的に追加されます。

サービス名

これらのリソースプロバイダーを使用した場合、サービス名は OpenTelemetry の仕様に従い、以下の優先順位ルールで決定されます。

  1. otel.service.name Spring プロパティまたは OTEL_SERVICE_NAME 環境変数(最も優先度が高い)
  2. otel.resource.attributes システム/Spring プロパティまたは OTEL_RESOURCE_ATTRIBUTES 環境変数の service.name
  3. spring.application.name Spring プロパティ
  4. build-info.properties
  5. META-INF/MANIFEST.MF の Implementation-Title
  6. デフォルト値は unknown_service:java(最も優先度が低い)

サービス名は、含めるリソースディテクターによって決まります(リソースプロバイダーを参照)。

  1. otel.resource.attributesservice.name(最も優先度が高い):

    otel:
      resource:
        attributes:
          - name: service.name
            value: my-spring-app
    
  2. service ディテクター — 含まれている場合、OTEL_SERVICE_NAME から自動検出します:

    otel:
      resource:
        detection/development:
          detectors:
            - service:
    
  3. spring ディテクター — 含まれている場合、spring.application.namebuild-info.properties から検出します:

    otel:
      resource:
        detection/development:
          detectors:
            - spring:
    
  4. デフォルト値は 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 {
  }
}