Програмна конфігурація
Ви можете використовувати AutoConfigurationCustomizerProvider для програмної конфігурації. Програмна конфігурація рекомендується для розширених випадків використання, які не можна налаштувати за допомогою властивостей.
AutoConfigurationCustomizerProvider не працює з декларативною конфігурацією. Для декларативної конфігурації використовуйте DeclarativeConfigurationCustomizerProvider — див. розділ Розширення API для агента для деталей та прикладів.
Виключення точок доступу actuator з трасування
Як приклад, ви можете налаштувати механізм вибірки, щоб виключити точки перевірки стану з трасування:
<dependencies>
<dependency>
<groupId>io.opentelemetry.contrib</groupId>
<artifactId>opentelemetry-samplers</artifactId>
<version>1.54.0-alpha</version>
</dependency>
</dependencies>
dependencies {
implementation("io.opentelemetry.contrib:opentelemetry-samplers:1.54.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";
}
}
Відгук
Чи це було корисним?
Дякуємо. Ми цінуємо ваші відгуки!
Будь ласка, дайте нам знати як ми можемо покращити цю сторінку. Ми цінуємо ваші відгуки!