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

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

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

OpenTelemetry Starter підтримує всі Автоконфігурації SDK (з версії 2.2.0).

Ви можете оновити конфігурацію за допомогою властивостей у файлі application.properties або application.yaml, або за допомогою змінних середовища.

Приклад application.properties:

otel.propagators=tracecontext,b3 otel.resource.attributes.deployment.environment=dev otel.resource.attributes.service.name=cart otel.resource.attributes.service.namespace=shop

Приклад 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"

Перевизначення атрибутів ресурсу

Як зазвичай у 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

System property: otel.sdk.disabledEnvironment variable: OTEL_SDK_DISABLED

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

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

Ви можете використовувати AutoConfigurationCustomizerProvider для програмної конфігурації. Програмна конфігурація рекомендується для складних випадків, які не можна налаштувати за допомогою властивостей.

Виключення точок доступу актуатора з трасування

Наприклад, ви можете налаштувати семплер для виключення точок доступу перевірки справності з трасування:

<dependencies> <dependency> <groupId>io.opentelemetry.contrib</groupId> <artifactId>opentelemetry-samplers</artifactId> <version>1.33.0-alpha</version> </dependency> </dependencies>
dependencies { implementation("io.opentelemetry.contrib:opentelemetry-samplers:1.33.0-alpha") }
package otel; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.contrib.sampler.RuleBasedRoutingSampler; import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider; import io.opentelemetry.semconv.UrlAttributes; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class FilterPaths { @Bean public AutoConfigurationCustomizerProvider otelCustomizer() { return p -> p.addSamplerCustomizer( (fallback, config) -> RuleBasedRoutingSampler.builder(SpanKind.SERVER, fallback) .drop(UrlAttributes.URL_PATH, "^/actuator") .build()); } }

Програмна конфігурація експортера

Ви також можете програмно налаштувати експортери OTLP. Ця конфігурація замінює стандартний експортер OTLP та додає спеціальний заголовок до запитів.

package otel; import io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporter; import io.opentelemetry.sdk.autoconfigure.spi.AutoConfigurationCustomizerProvider; import java.util.Collections; import java.util.Map; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class CustomAuth { @Bean public AutoConfigurationCustomizerProvider otelCustomizer() { return p -> p.addSpanExporterCustomizer( (exporter, config) -> { if (exporter instanceof OtlpHttpSpanExporter) { return ((OtlpHttpSpanExporter) exporter) .toBuilder().setHeaders(this::headers).build(); } return exporter; }); } private Map<String, String> headers() { return Collections.singletonMap("Authorization", "Bearer " + refreshToken()); } private String refreshToken() { // наприклад, зчитування токену з секрету kubernetes return "token"; } }

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

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

Назва сервісу

Використовуючи ці провайдери ресурсів, назва сервісу визначається за наступними правилами пріоритету, відповідно специфікації 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 (найнижчий пріоритет)

Використовуйте наступний фрагмент у вашому файлі 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 (bd70b52d)