Інструментування з коробки

Інструментування з коробки доступне для кількох фреймворків:

ФункціяВластивістьСтандартне значення
JDBCotel.instrumentation.jdbc.enabledtrue
Logbackotel.instrumentation.logback-appender.enabledtrue
Logback MDCotel.instrumentation.logback-mdc.enabledtrue
Spring Webotel.instrumentation.spring-web.enabledtrue
Spring Web MVCotel.instrumentation.spring-webmvc.enabledtrue
Spring WebFluxotel.instrumentation.spring-webflux.enabledtrue
Kafkaotel.instrumentation.kafka.enabledtrue
MongoDBotel.instrumentation.mongo.enabledtrue
Micrometerotel.instrumentation.micrometer.enabledfalse
R2DBC (reactive JDBC)otel.instrumentation.r2dbc.enabledtrue

Вибіркове увімкнення інструментувань

Щоб використовувати лише певні інструментування, спочатку вимкніть усі інструментування, встановивши властивість otel.instrumentation.common.default-enabled у значення false. Потім увімкніть інструментування одне за одним.

Наприклад, якщо ви хочете увімкнути лише інструментування JDBC, встановіть otel.instrumentation.jdbc.enabled у значення true.

Загальна конфігурація інструментування

Загальні властивості для всіх інструментувань баз даних:

Системна властивістьТипСтандартне значенняОпис
otel.instrumentation.common.db-statement-sanitizer.enabledBooleantrueУвімкнення санітизації запитів до БД.

Інструментування JDBC

Системна властивістьТипСтандартне значенняОпис
otel.instrumentation.jdbc.statement-sanitizer.enabledBooleantrueУвімкнення санітизації запитів до БД.

Logback

Ви можете увімкнути експериментальні функції за допомогою системних властивостей для захоплення атрибутів:

Системна властивістьТипСтандартне значенняОпис
otel.instrumentation.logback-appender.experimental-log-attributesBooleanfalseУвімкнення захоплення експериментальних атрибутів журналу thread.name та thread.id.
otel.instrumentation.logback-appender.experimental.capture-code-attributesBooleanfalseУвімкнення захоплення атрибутів вихідного коду. Зверніть увагу, що захоплення атрибутів вихідного коду на місцях журналювання може додати навантаження на продуктивність.
otel.instrumentation.logback-appender.experimental.capture-marker-attributeBooleanfalseУвімкнення захоплення маркерів Logback як атрибутів.
otel.instrumentation.logback-appender.experimental.capture-key-value-pair-attributesBooleanfalseУвімкнення захоплення пар ключ-значення Logback як атрибутів.
otel.instrumentation.logback-appender.experimental.capture-logger-context-attributesBooleanfalseУвімкнення захоплення властивостей контексту логера Logback як атрибутів.
otel.instrumentation.logback-appender.experimental.capture-mdc-attributesStringСписок атрибутів MDC, які потрібно захопити, розділений комами. Використовуйте символ підстановки * для захоплення всіх атрибутів.

Альтернативно, ви можете увімкнути ці функції, додавши доповнювач OpenTelemetry Logback у ваш файл logback.xml або logback-spring.xml:

<?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern> %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n </pattern> </encoder> </appender> <appender name="OpenTelemetry" class="io.opentelemetry.instrumentation.logback.appender.v1_0.OpenTelemetryAppender"> <captureExperimentalAttributes>false</captureExperimentalAttributes> <captureCodeAttributes>true</captureCodeAttributes> <captureMarkerAttribute>true</captureMarkerAttribute> <captureKeyValuePairAttributes>true</captureKeyValuePairAttributes> <captureLoggerContext>true</captureLoggerContext> <captureMdcAttributes>*</captureMdcAttributes> </appender> <root level="INFO"> <appender-ref ref="console"/> <appender-ref ref="OpenTelemetry"/> </root> </configuration>

Автоконфігурація Spring Web

Забезпечує автоконфігурацію для перехоплювача трасування RestTemplate, визначеного в opentelemetry-spring-web-3.1. Ця автоконфігурація інструментує всі запити, що надсилаються за допомогою Spring RestTemplate бінів, застосовуючи постпроцесор бінів RestTemplate. Ця функція підтримується для версій spring web 3.1+. Щоб дізнатися більше про перехоплювач RestTemplate OpenTelemetry, дивіться opentelemetry-spring-web-3.1.

Підтримуються наступні способи створення RestTemplate:

package otel; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestTemplate; @Configuration public class RestTemplateConfig { @Bean public RestTemplate restTemplate() { return new RestTemplate(); } }
package otel; import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; @RestController public class RestTemplateController { private final RestTemplate restTemplate; public RestTemplateController(RestTemplateBuilder restTemplateBuilder) { restTemplate = restTemplateBuilder.rootUri("http://localhost:8080").build(); } }

Підтримуються наступні способи створення RestClient:

package otel; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestClient; @Configuration public class RestClientConfig { @Bean public RestClient restClient() { return RestClient.create(); } }
package otel; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestClient; @RestController public class RestClientController { private final RestClient restClient; public RestClientController(RestClient.Builder restClientBuilder) { restClient = restClientBuilder.baseUrl("http://localhost:8080").build(); } }

Як і у випадку з Java агентом, ви можете налаштувати захоплення наступних сутностей:

Автоконфігурація Spring Web MVC

Ця функція автоконфігурує інструментування для контролерів Spring WebMVC, додаючи фільтр, що створює телеметрію бін до контексту застосунку. Фільтр декорує виконання запиту серверним спаном, передаючи вхідний контекст трасування, якщо він отриманий у HTTP запиті. Щоб дізнатися більше про інструментування Spring WebMVC OpenTelemetry, дивіться бібліотеку інструментування opentelemetry-spring-webmvc-5.3.

Як і у випадку з Java агентом, ви можете налаштувати захоплення наступних сутностей:

Автоконфігурація Spring WebFlux

Забезпечує автоконфігурації для фільтра обміну WebClient OpenTelemetry, визначеного в opentelemetry-spring-webflux-5.3. Ця автоконфігурація інструментує всі вихідні HTTP запити, що надсилаються за допомогою бінів WebClient та WebClient Builder Spring, застосовуючи постпроцесор бінів. Ця функція підтримується для версій spring webflux 5.0+. Для деталей дивіться opentelemetry-spring-webflux-5.3.

Підтримуються наступні способи створення WebClient:

package otel; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.reactive.function.client.WebClient; @Configuration public class WebClientConfig { @Bean public WebClient webClient() { return WebClient.create(); } }
package otel; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.reactive.function.client.WebClient; @RestController public class WebClientController { private final WebClient webClient; public WebClientController(WebClient.Builder webClientBuilder) { webClient = webClientBuilder.baseUrl("http://localhost:8080").build(); } }

Інструментування Kafka

Забезпечує автоконфігурацію для інструментування клієнта Kafka.

Системна властивістьТипСтандартне значенняОпис
otel.instrumentation.kafka.experimental-span-attributesBooleanfalseУвімкнення захоплення експериментальних атрибутів спанів.

Інструментування Micrometer

Забезпечує автоконфігурацію для мосту Micrometer до OpenTelemetry.

Інструментування MongoDB

Забезпечує автоконфігурацію для інструментування клієнта MongoDB.

Системна властивістьТипСтандартне значенняОпис
otel.instrumentation.mongo.statement-sanitizer.enabledBooleantrueУвімкнення санітизації запитів до БД.

Інструментування R2DBC

Забезпечує автоконфігурацію для інструментування OpenTelemetry R2DBC.

Системна властивістьТипСтандартне значенняОпис
otel.instrumentation.r2dbc.statement-sanitizer.enabledBooleantrueУвімкнення санітизації запитів до БД.