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

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

ФункціяВластивістьСтандартно
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:
    logback-appender:
      enabled: false

У декларативній конфігурації, увімкнення/вимкнення інструментування використовує централізовані списки в otel.distribution.spring_starter.instrumentation. Назва інструментування використовує _ (snake_case), а не - (kebab-case).

ФункціяНазваСтандартно
JDBCjdbcувімкнено
Logbacklogback_appenderувімкнено
Logback MDClogback_mdcувімкнено
Spring Webspring_webувімкнено
Spring Web MVCspring_webmvcувімкнено
Spring WebFluxspring_webfluxувімкнено
Kafkakafkaувімкнено
MongoDBmongoувімкнено
Micrometermicrometerвимкнено
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-attributesBooleanfalseУвімкнення захоплення експериментальних атрибутів журналу thread.name та thread.id.
experimental.capture-code-attributesBooleanfalseУвімкнення захоплення атрибутів вихідного коду. Зверніть увагу, що захоплення атрибутів вихідного коду на місцях журналювання може додати накладні витрати на продуктивність.
experimental.capture-marker-attributeBooleanfalseУвімкнення захоплення маркерів Logback як атрибутів.
experimental.capture-key-value-pair-attributesBooleanfalseУвімкнення захоплення пар ключ-значення Logback як атрибутів.
experimental.capture-logger-context-attributesBooleanfalseУвімкнення захоплення властивостей контексту логера Logback як атрибутів.
experimental.capture-mdc-attributesStringСписок атрибутів 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: '*'
PropertyTypeDefaultDescription
experimental_log_attributes/developmentBooleanfalseУвімкнення захоплення експериментальних атрибутів журналу thread.name та thread.id.
capture_code_attributes/developmentBooleanfalseУвімкнення захоплення атрибутів вихідного коду. Зверніть увагу, що захоплення атрибутів вихідного коду на місцях журналювання може додати накладні витрати на продуктивність.
capture_marker_attribute/developmentBooleanfalseУвімкнення захоплення маркерів Logback як атрибутів.
capture_key_value_pair_attributes/developmentBooleanfalseУвімкнення захоплення пар ключ-значення Logback як атрибутів.
capture_logger_context_attributes/developmentBooleanfalseУвімкнення захоплення властивостей контексту логера Logback як атрибутів.
capture_mdc_attributes/developmentStringСписок атрибутів 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

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