抑制特定仪器

完全禁用代理

系统属性: otel.javaagent.enabled环境变量: OTEL_JAVAAGENT_ENABLED

描述: 将值设置为 false 以完全禁用代理。

仅启用特定仪器

您可以禁用所有默认自动仪器,并选择性地重新启用单个仪器。这可能是为了减少启动开销或更好地控制应用的仪器。

系统属性: otel.instrumentation.common.default-enabled环境变量: OTEL_INSTRUMENTATION_COMMON_DEFAULT_ENABLED

描述: 设置为 false 以禁用代理中的所有仪器。

系统属性: otel.instrumentation.[name].enabled环境变量: OTEL_INSTRUMENTATION_[NAME]_ENABLED

描述: 设置为 true 以单独启用每个所需的仪器。

仅启用手动仪器

您可以通过使用 -Dotel.instrumentation.common.default-enabled=false -Dotel.instrumentation.opentelemetry-api.enabled=true -Dotel.instrumentation.opentelemetry-instrumentation-annotations.enabled=true 来抑制所有自动仪器,但支持使用 @WithSpan 和常规 API 交互进行手动仪器。

抑制特定代理仪器

您可以抑制特定库的代理仪器。

系统属性: otel.instrumentation.[name].enabled环境变量: OTEL_INSTRUMENTATION_[NAME]_ENABLED

描述: 设置为 false 以抑制特定库的代理仪器,其中 [name] 是相应的仪器名称

库/框架仪器名称
其他方法追踪方法
其他追踪注解外部注解
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_ENABLED 设置为 false

抑制控制器和/或视图跨度

某些仪器(例如 Spring Web MVC 仪器)会生成 SpanKind.Internal 跨度来捕获控制器和/或视图执行。可以使用以下配置设置抑制这些跨度,而不会抑制整个仪器(这将禁用仪器对 http.route 的捕获以及父 SpanKind.Server 跨上的关联跨度名称)。

系统属性: otel.instrumentation.common.experimental.controller-telemetry.enabled环境变量: OTEL_INSTRUMENTATION_COMMON_EXPERIMENTAL_CONTROLLER_TELEMETRY_ENABLED

Default: false
描述: 设置为 true 以启用控制器遥测。

系统属性: otel.instrumentation.common.experimental.view-telemetry.enabled环境变量: OTEL_INSTRUMENTATION_COMMON_EXPERIMENTAL_VIEW_TELEMETRY_ENABLED

Default: false
描述: 设置为 true 以启用视图遥测。

仪器跨度抑制行为

此代理仪器的一些库又会使用同样被仪器化的较低级别库。这通常会导致包含重复遥测数据的嵌套跨度。例如

  • Reactor Netty HTTP 客户端仪器生成的跨度会有由 Netty 仪器生成的重复 HTTP 客户端跨度;
  • AWS SDK 仪器生成的 Dynamo DB 跨度会有由其内部 HTTP 客户端库(也已仪器化)生成的子 HTTP 客户端跨度;
  • Tomcat 仪器生成的跨度会有由通用 Servlet API 仪器生成的重复 HTTP 服务器跨度。

Java 代理通过检测和抑制复制遥测数据的嵌套跨度来防止这些情况。可以使用以下配置选项配置抑制行为

系统属性: otel.instrumentation.experimental.span-suppression-strategy环境变量: OTEL_INSTRUMENTATION_EXPERIMENTAL_SPAN_SUPPRESSION_STRATEGY

描述: Java 代理跨度抑制策略。支持以下 3 种策略

  • semconv: 代理将抑制重复的语义约定。这是 Java 代理的默认行为。
  • span-kind: 代理将抑制具有相同 kind 的跨度(除 INTERNAL 外)。
  • none: 代理将不抑制任何内容。我们不建议除调试目的外使用此选项,因为它会生成大量重复的遥测数据

例如,假设我们仪器化了一个数据库客户端,该客户端内部使用 Reactor Netty HTTP 客户端;该客户端又使用 Netty。

使用默认的 semconv 抑制策略将导致 2 个嵌套的 CLIENT 跨度

  • 由数据库客户端仪器生成的具有数据库客户端语义属性的 CLIENT 跨度;
  • 由 Reactor Netty 仪器生成的具有 HTTP 客户端语义属性的 CLIENT 跨度。

Netty 仪器将被抑制,因为它复制了 Reactor Netty HTTP 客户端的仪器。

使用 span-kind 抑制策略将只产生一个跨度

  • 由数据库客户端仪器生成的具有数据库客户端语义属性的 CLIENT 跨度。

Reactor Netty 和 Netty 仪器都将被抑制,因为它们也发出 CLIENT 跨度。

最后,使用 none 抑制策略将产生 3 个跨度

  • 由数据库客户端仪器生成的具有数据库客户端语义属性的 CLIENT 跨度;
  • 由 Reactor Netty 仪器生成的具有 HTTP 客户端语义属性的 CLIENT 跨度;
  • 由 Netty 仪器生成的具有 HTTP 客户端语义属性的 CLIENT 跨度。

最后修改日期:2025 年 12 月 16 日:Java agent library updates for 2.23.0 (#8661) (05be6c20)