Налаштування SDK

Цей стартер Spring підтримує метадані конфігурації, що означає, що ви можете бачити та автоматично заповнювати всі доступні властивості у вашому IDE.

Загальна конфігурація

OpenTelemetry Starter підтримує всі Автоконфігурації 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 за допомогою змінних середовища.

Наприклад, ви можете встановити або перевизначити атрибут ресурсу deployment.environment (не змінюючи service.name або service.namespace) шляхом встановлення стандартної змінної середовища OTEL_RESOURCE_ATTRIBUTES:

export OTEL_RESOURCE_ATTRIBUTES="deployment.environment=prod"

Альтернативно, ви можете використовувати змінну середовища OTEL_RESOURCE_ATTRIBUTES_DEPLOYMENT_ENVIRONMENT для встановлення або перевизначення одного атрибуту ресурсу:

export OTEL_RESOURCE_ATTRIBUTES_DEPLOYMENT_ENVIRONMENT="prod"

Другий варіант підтримує SpEL вирази.

Зверніть увагу, що DEPLOYMENT_ENVIRONMENT перетворюється на deployment.environment за допомогою Relaxed Binding Spring Boot.

Вимкнення OpenTelemetry Starter

Встановіть otel.sdk.disabled в true, щоб вимкнути стартер, наприклад, для тестування:

otel:
  sdk:
    disabled: true

Встановіть otel.disabled в true, щоб вимкнути стартер, наприклад, для тестування:

Примітка: з декларативною конфігурацією, імʼя властивості otel.disabled, а не otel.sdk.disabled.

otel:
  file_format: '1.0'
  disabled: true

Програмна конфігурація

Див. розділ Програмна конфігурація.

Провайдери ресурсів

OpenTelemetry Starter включає ті ж провайдери ресурсів, що і Java агент:

Крім того, OpenTelemetry Starter включає наступні специфічні для 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.name з build-info.properties (див. Назва сервісу)
service.versionbuild.version з build-info.properties

З декларативною конфігурацією, провайдери ресурсів налаштовуються явно як детектори під 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:

  1. Властивість spring otel.service.name або змінна середовища OTEL_SERVICE_NAME (найвищий пріоритет)
  2. service.name у системній/властивості spring otel.resource.attributes або змінна середовища OTEL_RESOURCE_ATTRIBUTES
  3. Властивість spring spring.application.name
  4. build-info.properties
  5. Implementation-Title з META-INF/MANIFEST.MF
  6. Стандартне значення — unknown_service:java (найнижчий пріоритет)

Назва сервісу залежить від того, які детектори ресурсів ви включаєте (див. Провайдери ресурсів):

  1. service.name у otel.resource.attributes (найвищий пріоритет):

    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.name та build-info.properties:

    otel:
      resource:
        detection/development:
          detectors:
            - spring:
    
  4. Стандартне значення — unknown_service:java (найнижчий пріоритет)

Використовуйте наступний фрагмент у вашому файлі pom.xml для генерації файлу build-info.properties:

<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 {
  }
}

Востаннє змінено December 26, 2024: [uk] Ukrainian documentation for OpenTelemetry (cf1a5745)