すぐに使える計装

いくつかのフレームワークに対して、すぐに使える計装が利用可能です。

機能プロパティデフォルト値
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に設定してすべての計装をオフにします。 その後、計装を1つずつ有効にします。

たとえば、JDBC計装のみを有効にしたい場合は、otel.instrumentation.jdbc.enabledtrueに設定します。

共通計装設定

すべてのデータベース計装に共通のプロパティ。

システムプロパティデフォルト説明
otel.instrumentation.common.db-statement-sanitizer.enabledBooleantrueDBステートメントのサニタイズを有効にします。

JDBC計装

システムプロパティデフォルト説明
otel.instrumentation.jdbc.statement-sanitizer.enabledBooleantrueDBステートメントのサニタイズを有効にします。

Logback

システムプロパティで実験的機能を有効にして、属性をキャプチャできます。

システムプロパティデフォルト説明
otel.instrumentation.logback-appender.experimental-log-attributesBooleanfalse実験的なログ属性thread.namethread.idのキャプチャを有効にします。
otel.instrumentation.logback-appender.experimental.capture-code-attributesBooleanfalseソースコード属性のキャプチャを有効にします。ログサイトでソースコード属性をキャプチャすると、パフォーマンスのオーバーヘッドが発生する可能性があることに注意してください。
otel.instrumentation.logback-appender.experimental.capture-marker-attributeBooleanfalseLogbackマーカーを属性としてキャプチャすることを有効にします。
otel.instrumentation.logback-appender.experimental.capture-key-value-pair-attributesBooleanfalseLogbackキーバリューペアを属性としてキャプチャすることを有効にします。
otel.instrumentation.logback-appender.experimental.capture-logger-context-attributesBooleanfalseLogbackロガーコンテキストプロパティを属性としてキャプチャすることを有効にします。
otel.instrumentation.logback-appender.experimental.capture-mdc-attributesStringキャプチャするMDC属性のカンマ区切りリスト。すべての属性をキャプチャするにはワイルドカード文字*を使用します。

または、logback.xmlまたはlogback-spring.xmlファイルにOpenTelemetry Logbackアペンダーを追加することで、これらの機能を有効にできます。

<?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自動設定

opentelemetry-spring-web-3.1で定義されたRestTemplateトレースインターセプターの自動設定を提供します。 この自動設定は、RestTemplateビーンポストプロセッサーを適用することで、Spring RestTemplateビーンを使用して送信されるすべてのリクエストを計装します。 この機能はSpring Webバージョン3.1以降でサポートされています。OpenTelemetryRestTemplateインターセプターの詳細については、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自動設定

この機能は、アプリケーションコンテキストにテレメトリ生成サーブレットFilterビーンを追加することで、Spring WebMVCコントローラーの計装を自動設定します。 フィルターは、リクエストの実行をサーバースパンで装飾し、HTTPリクエストで受信した場合は受信トレーシングコンテキストを伝搬します。 OpenTelemetry Spring WebMVC計装の詳細については、opentelemetry-spring-webmvc-5.3計装ライブラリを参照してください。

Javaエージェントと同様に、以下のエンティティのキャプチャを設定できます。

Spring WebFlux自動設定

opentelemetry-spring-webflux-5.3で定義されたOpenTelemetry WebClient ExchangeFilterの自動設定を提供します。 この自動設定は、ビーンポストプロセッサーを適用することで、SpringのWebClientとWebClient Builderビーンを使用して送信されるすべての送信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("http://localhost:8080").build();
  }
}

Kafka計装

Kafkaクライアント計装の自動設定を提供します。

システムプロパティデフォルト説明
otel.instrumentation.kafka.experimental-span-attributesBooleanfalse実験的なスパン属性のキャプチャを有効にします。

Micrometer計装

MicrometerからOpenTelemetryへのブリッジの自動設定を提供します。

MongoDB計装

MongoDBクライアント計装の自動設定を提供します。

システムプロパティデフォルト説明
otel.instrumentation.mongo.statement-sanitizer.enabledBooleantrueDBステートメントのサニタイズを有効にします。

R2DBC計装

OpenTelemetry R2DBC計装の自動設定を提供します。

システムプロパティデフォルト説明
otel.instrumentation.r2dbc.statement-sanitizer.enabledBooleantrueDBステートメントのサニタイズを有効にします。