Suppression d'instrumentation spécifique

Désactivation complète de l’agent

System property: otel.javaagent.enabledEnvironment variable: OTEL_JAVAAGENT_ENABLED

Description: Définissez la valeur à false pour désactiver complètement l'agent.

Activer uniquement une instrumentation spécifique

Vous pouvez désactiver toute l’instrumentation automatique par défaut et réactiver sélectivement les instrumentations individuelles. Cela peut être souhaitable pour réduire la surcharge au démarrage ou pour avoir plus de contrôle sur l’instrumentation appliquée.

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

Description: Définissez à false pour désactiver toute l'instrumentation dans l'agent.

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

Description: Définissez à true pour activer chaque instrumentation souhaitée individuellement.

Activer uniquement l’instrumentation manuelle

Vous pouvez supprimer toutes les instrumentations automatiques mais avoir le support pour l’instrumentation manuelle avec @WithSpan et les interactions API normales en utilisant -Dotel.instrumentation.common.default-enabled=false -Dotel.instrumentation.opentelemetry-api.enabled=true -Dotel.instrumentation.opentelemetry-instrumentation-annotations.enabled=true

Suppression de l’instrumentation spécifique de l’agent

Vous pouvez supprimer l’instrumentation de l’agent pour des bibliothèques spécifiques.

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

Description: Définissez à false pour supprimer l'instrumentation de l'agent pour des bibliothèques spécifiques, où [name] est le nom d'instrumentation correspondant :

Bibliothèque/FrameworkNom de l’instrumentation
Traces de méthodes supplémentairesmethods
Annotations supplémentaires des tracesexternal-annotations
Akka Actorakka-actor
Akka HTTPakka-http
Apache Axis2axis2
Apache Camelcamel
Apache Cassandracassandra
Apache CXFcxf
Apache DBCPapache-dbcp
Apache Dubboapache-dubbo
Apache Geodegeode
Apache HttpAsyncClientapache-httpasyncclient
Apache HttpClientapache-httpclient
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 clientelasticsearch-transport
Elasticsearch REST clientelasticsearch-rest
Finaglefinagle-http
Google Guavaguava
Google HTTP clientgoogle-http-client
Google Web Toolkitgwt
Grailsgrails
GraphQL Javagraphql-java
GRPCgrpc
Hibernatehibernate
Hibernate Reactivehibernate-reactive
HikariCPhikaricp
InfluxDBinfluxdb
Java HTTP Clientjava-http-client
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
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
Netflix Hystrixhystrix
Nettynetty
OkHttpokhttp
OpenLibertyliberty
Annotations de l’extension OpenTelemetryopentelemetry-extension-annotations
Annotations de l’instrumentation OpenTelemetryopentelemetry-instrumentation-annotations
OpenTelemetry APIopentelemetry-api
Oracle UCPoracle-ucp
OSHI (Operating System and Hardware Information)oshi
Play Frameworkplay
Play WS HTTP Clientplay-ws
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 Corespring-core
Spring Dataspring-data
Spring JMSspring-jms
Spring Integrationspring-integration
Spring Kafkaspring-kafka
Spring RabbitMQspring-rabbit
Spring RMIspring-rmi
Spring Schedulingspring-scheduling
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

Note: Lors de l’utilisation de variables d’environnement, les tirets (-) doivent être convertis en tirets bas (_). Par exemple, pour supprimer les traces de la bibliothèque akka-actor, définissez OTEL_INSTRUMENTATION_AKKA_ACTOR_ENABLED à false.

Suppression des spans de contrôleur et/ou de vue

Certaines instrumentations (par exemple, l’instrumentation Spring Web MVC) produisent des spans SpanKind.Internal pour capturer l’exécution du contrôleur et/ou de la vue. Ces spans peuvent être supprimés en utilisant les paramètres de configuration ci-dessous, sans supprimer l’instrumentation entière ce qui désactiverait également la capture par l’instrumentation de http.route et le nom de span associé sur le span parent SpanKind.Server.

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

Default: false
Description: Définissez à true pour activer la télémétrie du contrôleur.

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

Default: false
Description: Définissez à true pour activer la télémétrie de la vue.

Comportement de l’instrumentation dans la suppression de span

Certaines bibliothèques que cet agent instrumente utilisent à leur tour des bibliothèques de niveau inférieur, qui sont également instrumentées. Cela entraînerait normalement des spans imbriqués contenant des données de télémétrie en double. Par exemple :

  • Les spans produits par l’instrumentation du client HTTP Reactor Netty auraient des spans de client HTTP en double produits par l’instrumentation Netty ;
  • Les spans Dynamo DB produits par l’instrumentation du SDK AWS auraient des spans de client HTTP enfants produits par sa bibliothèque de client HTTP interne (qui est également instrumentée) ;
  • Les spans produits par l’instrumentation Tomcat auraient des spans de serveur HTTP en double produits par l’instrumentation générique de l’API Servlet.

L’agent Java empêche ces situations en détectant et en supprimant les spans imbriqués qui dupliquent les données de télémétrie. Le comportement de suppression peut être configuré en utilisant l’option de configuration suivante :

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

Description: La stratégie de suppression de span de l'agent Java. Les 3 stratégies suivantes sont supportées :

  • semconv : L'agent supprimera les conventions sémantiques en double. C'est le comportement par défaut de l'agent Java.
  • span-kind : L'agent supprimera les spans de même type (sauf INTERNAL).
  • none : L'agent ne supprimera rien du tout. Nous ne recommandons pas d'utiliser cette option pour autre chose que le débogage, car elle génère beaucoup de données de télémétrie en double.

Par exemple, supposons que nous instrumentons un client de base de données qui utilise en interne le client HTTP Reactor Netty ; qui à son tour utilise Netty.

L’utilisation de la stratégie de suppression semconv par défaut entraînerait 2 spans CLIENT imbriqués :

  • Span CLIENT avec des attributs sémantiques de client de base de données émis par l’instrumentation du client de base de données ;
  • Span CLIENT avec des attributs sémantiques de client HTTP émis par l’instrumentation Reactor Netty.

L’instrumentation Netty serait supprimée, car elle duplique l’instrumentation du client HTTP Reactor Netty.

L’utilisation de la stratégie de suppression span-kind n’entraînerait qu’un seul span :

  • Span CLIENT avec des attributs sémantiques de client de base de données émis par l’instrumentation du client de base de données.

Les instrumentations Reactor Netty et Netty seraient supprimées, car elles émettent également des spans CLIENT.

Enfin, l’utilisation de la stratégie de suppression none entraînerait 3 spans :

  • Span CLIENT avec des attributs sémantiques de client de base de données émis par l’instrumentation du client de base de données ;
  • Span CLIENT avec des attributs sémantiques de client HTTP émis par l’instrumentation Reactor Netty ;
  • Span CLIENT avec des attributs sémantiques de client HTTP émis par l’instrumentation Netty.

Dernière modification August 4, 2025: [fr] Translation of Zero Code Java docs (#7389) (a409f82a)