开箱即用的仪表化

开箱即用式集成支持多种框架

功能属性默认值
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 (响应式 JDBC)otel.instrumentation.r2dbc.enabledtrue

选择性地开启集成

要仅使用特定的集成,请先通过将 otel.instrumentation.common.default-enabled 属性设置为 false 来关闭所有集成。然后,逐个开启集成。

例如,如果您只想启用 JDBC 集成,请将 otel.instrumentation.jdbc.enabled 设置为 true

常见集成配置

所有数据库集成的通用属性

系统属性类型默认值描述
otel.instrumentation.common.db-statement-sanitizer.enabled布尔值true启用数据库语句清理。

JDBC 集成

系统属性类型默认值描述
otel.instrumentation.jdbc.statement-sanitizer.enabled布尔值true启用数据库语句清理。

Logback

您可以通过系统属性启用实验性功能来捕获属性

系统属性类型默认值描述
otel.instrumentation.logback-appender.experimental-log-attributes布尔值false启用捕获实验性日志属性 thread.namethread.id
otel.instrumentation.logback-appender.experimental.capture-code-attributes布尔值false启用捕获 源代码属性。请注意,在日志记录点捕获源代码属性可能会增加性能开销。
otel.instrumentation.logback-appender.experimental.capture-marker-attribute布尔值false启用将 Logback 标记捕获为属性。
otel.instrumentation.logback-appender.experimental.capture-key-value-pair-attributes布尔值false启用将 Logback 键值对捕获为属性。
otel.instrumentation.logback-appender.experimental.capture-logger-context-attributes布尔值false启用将 Logback 日志记录器上下文属性捕获为属性。
otel.instrumentation.logback-appender.experimental.capture-mdc-attributes字符串要捕获的 MDC 属性的逗号分隔列表。使用通配符 * 来捕获所有属性。

或者,您可以通过在 logback.xmllogback-spring.xml 文件中添加 OpenTelemetry Logback appender 来启用这些功能

<?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 中定义。此自动配置通过应用 RestTemplate bean 后置处理器来集成使用 Spring RestTemplate beans 发送的所有请求。此功能支持 spring web 版本 3.1+。要了解有关 OpenTelemetry RestTemplate 拦截器的更多信息,请参阅 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("https://: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("https://:8080").build();
  }
}

与 Java Agent 一样,您可以配置以下实体的捕获

Spring Web MVC 自动配置

此功能通过向应用程序上下文添加一个 遥测生成 Servlet Filter bean 来自动配置 Spring WebMVC 控制器的集成。该过滤器通过服务器 span 装饰请求执行,如果传入的跟踪上下文在 HTTP 请求中接收到,则会传播该上下文。要了解有关 OpenTelemetry Spring WebMVC 集成的更多信息,请参阅 opentelemetry-spring-webmvc-5.3 集成库

与 Java Agent 一样,您可以配置以下实体的捕获

Spring WebFlux 自动配置

opentelemetry-spring-webflux-5.3 中定义的 OpenTelemetry WebClient ExchangeFilter 提供自动配置。此自动配置通过应用 bean 后置处理器来集成使用 Spring 的 WebClient 和 WebClient Builder beans 发送的所有出站 HTTP 请求。此功能支持 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("https://:8080").build();
  }
}

Kafka 集成

提供 Kafka 客户端集成的自动配置。

系统属性类型默认值描述
otel.instrumentation.kafka.experimental-span-attributes布尔值false启用捕获实验性 span 属性。

Micrometer 集成

提供 Micrometer 到 OpenTelemetry 的桥接自动配置。

MongoDB 集成

提供 MongoDB 客户端集成的自动配置。

系统属性类型默认值描述
otel.instrumentation.mongo.statement-sanitizer.enabled布尔值true启用数据库语句清理。

R2DBC 集成

提供 OpenTelemetry R2DBC 集成的自动配置。

系统属性类型默认值描述
otel.instrumentation.r2dbc.statement-sanitizer.enabled布尔值true启用数据库语句清理。

最后修改于 2024 年 11 月 19 日:Add Logback MDC to the starter (#5636) (0b22ed7b)