特定の計装の抑制

エージェントを完全に無効にする

System property: otel.javaagent.enabledEnvironment variable: OTEL_JAVAAGENT_ENABLED

Description: 値を false に設定すると、エージェントが完全に無効になります。

特定の計装のみを有効にする

すべてのデフォルトの自動計装を無効にし、個々の計装を選択的に再有効化できます。 これは、起動時のオーバーヘッドを削減したい場合や、どの計装を適用するかをより細かく制御したい場合に便利です。

System property: otel.instrumentation.common.default-enabledEnvironment variable: OTEL_INSTRUMENTATION_COMMON_DEFAULT_ENABLED

Description: false に設定すると、エージェント内のすべての計装が無効になります。

System property: otel.instrumentation.[name].enabledEnvironment variable: OTEL_INSTRUMENTATION_[NAME]_ENABLED

Description: true に設定すると、目的の計装を個別に有効にできます。

手動計装のみを有効にする

すべての自動計装を抑制しつつ、@WithSpan や通常の API 操作による手動計装をサポートするには、-Dotel.instrumentation.common.default-enabled=false -Dotel.instrumentation.opentelemetry-api.enabled=true -Dotel.instrumentation.opentelemetry-instrumentation-annotations.enabled=true を使用します。

特定のエージェント計装の抑制

特定のライブラリに対するエージェント計装を抑制できます。

System property: otel.instrumentation.[name].enabledEnvironment variable: OTEL_INSTRUMENTATION_[NAME]_ENABLED

Description: false に設定すると、特定のライブラリに対するエージェント計装を抑制できます。 [name] は対応する計装名です。

ライブラリ/フレームワーク計装名
Additional methods tracingmethods
Additional tracing annotationsexternal-annotations
Activej HTTPactivej-http
Avaje Jexavaje-jex
Akka Actorakka-actor
Akka HTTPakka-http
Alibaba Druidalibaba-druid
Apache Axis2axis2
Apache Camelcamel
Apache Cassandracassandra
Apache CXFcxf
Apache DBCPapache-dbcp
Apache Dubboapache-dubbo
Apache ElasticJobapache-elasticjob
Apache Geodegeode
Apache HttpAsyncClientapache-httpasyncclient
Apache HttpClientapache-httpclient
Apache Icebergiceberg
Apache Kafkakafka
Apache MyFacesjsf-myfaces
Apache Pekko Actorpekko-actor
Apache Pekko HTTPpekko-http
Apache Pulsarpulsar
Apache RocketMQrocketmq-client
Apache Shenyuapache-shenyu
Apache Struts 2struts
Apache Tapestrytapestry
Apache Tomcattomcat
Apache Wicketwicket
Armeriaarmeria
AsyncHttpClient (AHC)async-http-client
AWS Lambdaaws-lambda
AWS SDKaws-sdk
Azure SDKazure-core
Clickhouse Clientclickhouse
Couchbasecouchbase
C3P0c3p0
Dropwizard Viewsdropwizard-views
Dropwizard Metricsdropwizard-metrics
Eclipse Grizzlygrizzly
Eclipse Jerseyjersey
Eclipse Jettyjetty
Eclipse Jetty HTTP Clientjetty-httpclient
Eclipse Metrometro
Eclipse Mojarrajsf-mojarra
Eclipse Vert.x HttpClientvertx-http-client
Eclipse Vert.x Kafka Clientvertx-kafka-client
Eclipse Vert.x Redis Clientvertx-redis-client
Eclipse Vert.x RxJavavertx-rx-java
Eclipse Vert.x SQL Clientvertx-sql-client
Eclipse Vert.x Webvertx-web
Elasticsearch API clientelasticsearch-api-client
Elasticsearch clientelasticsearch-transport
Elasticsearch REST clientelasticsearch-rest
Failsafefailsafe
Finaglefinagle-http
Google Guavaguava
Google HTTP clientgoogle-http-client
Google Web Toolkitgwt
Grailsgrails
GraphQL Javagraphql-java
GRPCgrpc
Helidonhelidon
Hibernatehibernate
Hibernate Reactivehibernate-reactive
HikariCPhikaricp
InfluxDBinfluxdb
Java HTTP Clientjava-http-client
Java HTTP Serverjava-http-server
Java HttpURLConnectionhttp-url-connection
Java JDBCjdbc
Java JDBC DataSourcejdbc-datasource
Java RMIrmi
Java Runtimeruntime-telemetry
Java Servletservlet
java.util.concurrentexecutors
java.util.loggingjava-util-logging
Javalinjavalin
JAX-RS (Client)jaxrs-client
JAX-RS (Server)jaxrs
JAX-WSjaxws
JBoss Logging Appenderjboss-logmanager-appender
JBoss Logging MDCjboss-logmanager-mdc
JFinaljfinal
JMSjms
Jodd HTTPjodd-http
JSPjsp
K8s Clientkubernetes-client
Ktorktor
kotlinx.coroutineskotlinx-coroutines
Log4j Appenderlog4j-appender
Log4j MDC (1.x)log4j-mdc
Log4j Context Data (2.x)log4j-context-data
Logback Appenderlogback-appender
Logback MDClogback-mdc
Micrometermicrometer
MongoDBmongo
MyBatismybatis
NATS Clientnats
Netflix Hystrixhystrix
Nettynetty
OkHttpokhttp
OpenLibertyliberty
OpenAIopenai
OpenSearch Javaopensearch-java
OpenSearch RESTopensearch-rest
OpenTelemetry Extension Annotationsopentelemetry-extension-annotations
OpenTelemetry Instrumentation Annotationsopentelemetry-instrumentation-annotations
OpenTelemetry APIopentelemetry-api
Oracle UCPoracle-ucp
OSHI (Operating System and Hardware Information)oshi
Payarapayara
Play Frameworkplay
Play WS HTTP Clientplay-ws
Powerjobpowerjob
Quarkusquarkus
Quartzquartz
R2DBCr2dbc
RabbitMQ Clientrabbitmq
Ratpackratpack
ReactiveX RxJavarxjava
Reactorreactor
Reactor Kafkareactor-kafka
Reactor Nettyreactor-netty
Redis Jedisjedis
Redis Lettucelettuce
Rediscalarediscala
Redissonredisson
Restletrestlet
Scala ForkJoinPoolscala-fork-join
Spark Web Frameworkspark
Spring Batchspring-batch
Spring Boot Actuator Autoconfigurespring-boot-actuator-autoconfigure
Spring Cloud AWSspring-cloud-aws
Spring Cloud Gatewayspring-cloud-gateway
Spring Corespring-core
Spring Dataspring-data
Spring JMSspring-jms
Spring Integrationspring-integration
Spring Kafkaspring-kafka
Spring Pulsarspring-pulsar
Spring RabbitMQspring-rabbit
Spring RMIspring-rmi
Spring Schedulingspring-scheduling
Spring Security Configspring-security-config
Spring Webspring-web
Spring WebFluxspring-webflux
Spring Web MVCspring-webmvc
Spring Web Servicesspring-ws
Spymemcachedspymemcached
Tomcat JDBCtomcat-jdbc
Twilio SDKtwilio
Twitter Finatrafinatra
Undertowundertow
Vaadinvaadin
Vibur DBCPvibur-dbcp
XXL-JOBxxl-job
ZIOzio

注意: 環境変数を使用する場合、ダッシュ(-)はアンダースコア(_)に変換する必要があります。 たとえば、akka-actor ライブラリからのトレースを抑制するには、OTEL_INSTRUMENTATION_AKKA_ACTOR_ENABLEDfalse に設定します。

コントローラーやビュースパンの抑制

一部の計装(たとえば Spring Web MVC 計装)は、コントローラーやビューの実行をキャプチャするために SpanKind.Internal スパンを生成します。 これらのスパンは、以下の設定を使用して抑制できます。 計装全体を抑制すると、http.route のキャプチャや、親の SpanKind.Server スパンに関連付けられたスパン名も無効になりますが、この設定ではそれらを維持したまま抑制できます。

System property: otel.instrumentation.common.experimental.controller-telemetry.enabledEnvironment variable: OTEL_INSTRUMENTATION_COMMON_EXPERIMENTAL_CONTROLLER_TELEMETRY_ENABLED

Default: false
Description: true に設定すると、コントローラーテレメトリーが有効になります。

System property: otel.instrumentation.common.experimental.view-telemetry.enabledEnvironment variable: OTEL_INSTRUMENTATION_COMMON_EXPERIMENTAL_VIEW_TELEMETRY_ENABLED

Default: false
Description: true に設定すると、ビューテレメトリーが有効になります。

計装のスパン抑制動作

このエージェントが計装するライブラリの中には、同様に計装される低レベルのライブラリを使用するものがあります。 通常、これにより重複するテレメトリーデータを含むネストされたスパンが生成されます。 たとえば、次のようなケースがあります。

  • Reactor Netty HTTP クライアント計装によって生成されたスパンに、Netty 計装によって生成された重複する HTTP クライアントスパンが含まれる。
  • AWS SDK 計装によって生成された Dynamo DB スパンに、内部 HTTP クライアントライブラリ(同様に計装されている)によって生成された子 HTTP クライアントスパンが含まれる。
  • Tomcat 計装によって生成されたスパンに、汎用の Servlet API 計装によって生成された重複する HTTP サーバースパンが含まれる。

Java エージェントは、テレメトリーデータを重複させるネストされたスパンを検出し抑制することで、これらの状況を防ぎます。 抑制の動作は、以下の設定オプションで構成できます。

System property: otel.instrumentation.experimental.span-suppression-strategyEnvironment variable: OTEL_INSTRUMENTATION_EXPERIMENTAL_SPAN_SUPPRESSION_STRATEGY

Description: Java エージェントのスパン抑制戦略です。 以下の 3 つの戦略がサポートされています。

  • semconv: エージェントは重複するセマンティック規約を抑制します。 これは Java エージェントのデフォルトの動作です。
  • span-kind: エージェントは同じ種類のスパン(INTERNAL を除く)を抑制します。
  • none: エージェントは何も抑制しません。 このオプションはデバッグ目的以外での使用は推奨しません。大量の重複テレメトリーデータが生成されます

たとえば、内部で Reactor Netty HTTP クライアントを使用するデータベースクライアントを計装し、さらにその Reactor Netty が Netty を使用しているとします。

デフォルトの semconv 抑制戦略を使用すると、2 つのネストされた CLIENT スパンが生成されます。

  • データベースクライアント計装によって出力された、データベースクライアントのセマンティック属性を持つ CLIENT スパン。
  • Reactor Netty 計装によって出力された、HTTP クライアントのセマンティック属性を持つ CLIENT スパン。

Netty 計装は、Reactor Netty HTTP クライアント計装と重複するため抑制されます。

抑制戦略 span-kind を使用すると、スパンは 1 つだけになります。

  • データベースクライアント計装によって出力された、データベースクライアントのセマンティック属性を持つ CLIENT スパン。

Reactor Netty と Netty の両方の計装は、同じく CLIENT スパンを出力するため抑制されます。

最後に、抑制戦略 none を使用すると、3 つのスパンが生成されます。

  • データベースクライアント計装によって出力された、データベースクライアントのセマンティック属性を持つ CLIENT スパン。
  • Reactor Netty 計装によって出力された、HTTP クライアントのセマンティック属性を持つ CLIENT スパン。
  • Netty 計装によって出力された、HTTP クライアントのセマンティック属性を持つ CLIENT スパン。