Інструментування з коробки
Інструментування з коробки доступне для кількох фреймворків:
| Функція | Властивість | Стандартно |
|---|---|---|
| JDBC | otel.instrumentation.jdbc.enabled | true |
| Logback | otel.instrumentation.logback-appender.enabled | true |
| Logback MDC | otel.instrumentation.logback-mdc.enabled | true |
| Spring Web | otel.instrumentation.spring-web.enabled | true |
| Spring Web MVC | otel.instrumentation.spring-webmvc.enabled | true |
| Spring WebFlux | otel.instrumentation.spring-webflux.enabled | true |
| Kafka | otel.instrumentation.kafka.enabled | true |
| MongoDB | otel.instrumentation.mongo.enabled | true |
| Micrometer | otel.instrumentation.micrometer.enabled | false |
| R2DBC (reactive JDBC) | otel.instrumentation.r2dbc.enabled | true |
Щоб вимкнути конкретне інструментування:
otel:
instrumentation:
logback-appender:
enabled: false
У декларативній конфігурації, увімкнення/вимкнення інструментування
використовує централізовані списки в otel.distribution.spring_starter.instrumentation. Назва інструментування
використовує _ (snake_case), а не - (kebab-case).
| Функція | Назва | Стандартно |
|---|---|---|
| JDBC | jdbc | увімкнено |
| Logback | logback_appender | увімкнено |
| Logback MDC | logback_mdc | увімкнено |
| Spring Web | spring_web | увімкнено |
| Spring Web MVC | spring_webmvc | увімкнено |
| Spring WebFlux | spring_webflux | увімкнено |
| Kafka | kafka | увімкнено |
| MongoDB | mongo | увімкнено |
| Micrometer | micrometer | вимкнено |
| R2DBC (reactive JDBC) | r2dbc | увімкнено |
Для вимкнення конкретного інструментування:
otel:
distribution:
spring_starter:
instrumentation:
disabled:
- logback_appender
Вибіркове увімкнення інструментувань
Щоб використовувати лише певні інструментування, спочатку вимкніть усі інструментування, а потім увімкніть інструментування одне за одним:
otel:
instrumentation:
common:
default-enabled: false
jdbc:
enabled: true
У декларативній конфігурації, встановіть default_enabled у значення false та перелічіть інструментування, які ви хочете увімкнути, у enabled:
otel:
distribution:
spring_starter:
instrumentation:
default_enabled: false
enabled:
- jdbc
Загальна конфігурація інструментування
Загальні властивості для всіх інструментувань баз даних:
Увімкнення санітизації запитів до БД для всіх інструментувань баз даних:
otel:
instrumentation:
common:
db-statement-sanitizer:
enabled: true # стандартно: true
Увімкнення санітизації запитів до БД для всіх інструментувань баз даних:
otel:
instrumentation/development:
java:
common:
database:
statement_sanitizer:
enabled: true
Інструментування JDBC
Увімкнення санітизації запитів до БД для JDBC:
otel:
instrumentation:
jdbc:
statement-sanitizer:
enabled: true # стандартно: true
Увімкнення санітизації запитів до БД для JDBC:
otel:
instrumentation/development:
java:
jdbc:
statement_sanitizer:
enabled: true
Logback
Ви можете увімкнути експериментальні функції за допомогою системних властивостей для захоплення атрибутів:
| Властивість | Тип | Значення за замовчуванням | Опис |
|---|---|---|---|
experimental-log-attributes | Boolean | false | Увімкнення захоплення експериментальних атрибутів журналу thread.name та thread.id. |
experimental.capture-code-attributes | Boolean | false | Увімкнення захоплення атрибутів вихідного коду. Зверніть увагу, що захоплення атрибутів вихідного коду на місцях журналювання може додати накладні витрати на продуктивність. |
experimental.capture-marker-attribute | Boolean | false | Увімкнення захоплення маркерів Logback як атрибутів. |
experimental.capture-key-value-pair-attributes | Boolean | false | Увімкнення захоплення пар ключ-значення Logback як атрибутів. |
experimental.capture-logger-context-attributes | Boolean | false | Увімкнення захоплення властивостей контексту логера Logback як атрибутів. |
experimental.capture-mdc-attributes | String | Список атрибутів MDC для захоплення, розділених комами. Використовуйте символ підстановки *, щоб захопити всі атрибути. |
otel:
instrumentation:
logback-appender:
experimental-log-attributes: false
experimental:
capture-code-attributes: false
capture-marker-attribute: false
capture-key-value-pair-attributes: false
capture-logger-context-attributes: false
capture-mdc-attributes: '*'
| Property | Type | Default | Description |
|---|---|---|---|
experimental_log_attributes/development | Boolean | false | Увімкнення захоплення експериментальних атрибутів журналу thread.name та thread.id. |
capture_code_attributes/development | Boolean | false | Увімкнення захоплення атрибутів вихідного коду. Зверніть увагу, що захоплення атрибутів вихідного коду на місцях журналювання може додати накладні витрати на продуктивність. |
capture_marker_attribute/development | Boolean | false | Увімкнення захоплення маркерів Logback як атрибутів. |
capture_key_value_pair_attributes/development | Boolean | false | Увімкнення захоплення пар ключ-значення Logback як атрибутів. |
capture_logger_context_attributes/development | Boolean | false | Увімкнення захоплення властивостей контексту логера Logback як атрибутів. |
capture_mdc_attributes/development | String | Список атрибутів MDC для захоплення, розділених комами. Використовуйте символ підстановки *, щоб захопити всі атрибути. |
otel:
instrumentation/development:
java:
logback_appender:
experimental_log_attributes/development: false
capture_code_attributes/development: false
capture_marker_attribute/development: false
capture_key_value_pair_attributes/development: false
capture_logger_context_attributes/development: false
capture_mdc_attributes/development: '*'
Альтернативно, ви можете увімкнути ці функції, додавши доповнювач 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.
Вмикає захоплення експериментальних атрибутів відрізків для Kafka:
otel:
instrumentation:
kafka:
experimental-span-attributes: false # стандартно: false
Вмикає захоплення експериментальних атрибутів відрізків для Kafka:
otel:
instrumentation/development:
java:
kafka:
experimental_span_attributes/development: false
Інструментування Micrometer
Забезпечує автоконфігурацію для мосту Micrometer до OpenTelemetry.
Інструментування MongoDB
Забезпечує автоконфігурацію для інструментування клієнта MongoDB.
Вмикає санітизацію запитів до БД для MongoDB:
otel:
instrumentation:
mongo:
statement-sanitizer:
enabled: true # стандартно: true
Вмикає санітизацію запитів до БД для MongoDB:
otel:
instrumentation/development:
java:
mongo:
statement_sanitizer:
enabled: true
Інструментування R2DBC
Забезпечує автоконфігурацію для інструментування OpenTelemetry R2DBC.
Вмикає санітизацію запитів до БД для R2DBC:
otel:
instrumentation:
r2dbc:
statement-sanitizer:
enabled: true # стандартно: true
Вмикає санітизацію запитів до БД для R2DBC:
otel:
instrumentation/development:
java:
r2dbc:
statement_sanitizer:
enabled: true
Відгук
Чи це було корисним?
Дякуємо. Ми цінуємо ваші відгуки!
Будь ласка, дайте нам знати як ми можемо покращити цю сторінку. Ми цінуємо ваші відгуки!