CnOps 智能运维与可观测社区
首页开源项目实践文章视频课程常见问答开发者工具STAROps 专题
导航菜单
首页开源项目实践文章视频课程常见问答开发者工具STAROps 专题

CnOps 智能运维与可观测社区

愿景

CnOps 智能运维与可观测社区是一个以"智能运维与可观测"为核心的开放、包容、分享的技术社区,旨在聚集运维专家、开发者和爱好者,共同探讨、学习和分享可观测最佳实践与最新技术,与众多技术社区合作互动,共同探讨交叉领域的技术挑战,推动可观测领域的创新与进步。

内容社区

  • 实践文章
  • 视频课程
  • 开源项目
  • 常见问答
  • 开发者工具

友情链接

  • Prometheus
  • Grafana Lab
  • OpenTelemetry
  • LoongCollector

关注我们

阿里云云原生公众号阿里云云原生
阿里云可观测公众号阿里云可观测

Copyright © 2026 CnOps 社区. All rights reserved.

首页/开源项目/OpenTelemetry/禁用特定插桩
文档目录
文档开始手动插桩使用插桩库导出器资源采样什么是 OpenTelemetry?
API 参考文档示例
PHP 零代码插桩
快速开始配置Java 代理声明式配置支持的库禁用特定插桩注解使用 API 扩展插桩功能
应用服务器配置扩展性能
支持库列表

OpenTelemetry

禁用特定插桩

将值设置为 false 可完全禁用代理。 你可以禁用所有默认的自动插桩,并有选择地重新启用单个插桩。 这可能有助于减少启动开销,或更好地控制要应用哪些插桩。 设置为 false 以禁用代理中的所有插桩。 设置为 true 以单独启用每个所需的插桩。 某些插桩依赖于其他插桩才能正常工作。 在选择性启用插桩时,务必同时启用其传递依赖项。 确定这种依赖关系需要用户自行研究。...

完全禁用代理 {#disabling-the-agent-entirely}

将值设置为 false 可完全禁用代理。

仅启用特定插桩 {#enable-only-specific-instrumentation}

你可以禁用所有默认的自动插桩,并有选择地重新启用单个插桩。
这可能有助于减少启动开销,或更好地控制要应用哪些插桩。

设置为 false 以禁用代理中的所有插桩。

设置为 true 以单独启用每个所需的插桩。

某些插桩依赖于其他插桩才能正常工作。
在选择性启用插桩时,务必同时启用其传递依赖项。
确定这种依赖关系需要用户自行研究。
这被视为高级用法,不推荐大多数用户使用。

仅启用手动插桩 {#enable-manual-instrumentation-only}

你可以通过使用
-Dotel.instrumentation.common.default-enabled=false -Dotel.instrumentation.opentelemetry-api.enabled=true -Dotel.instrumentation.opentelemetry-instrumentation-annotations.enabled=true
来禁用所有自动插桩,但保留对带有 @WithSpan 的手动插桩和正常 API 交互的支持。

禁用特定代理插桩 {#suppressing-specific-agent-instrumentation}

你可以禁用代理对特定库的插桩。

设置为 false 以禁用代理对特定库的插桩,其中 [name] 是相应的插桩名称:

库 / 框架 插桩名称
Additional methods tracing methods
Additional tracing annotations external-annotations
Activej HTTP activej-http
Avaje Jex avaje-jex
Akka Actor akka-actor
Akka HTTP akka-http
Alibaba Druid alibaba-druid
Apache Axis2 axis2
Apache Camel camel
Apache Cassandra cassandra
Apache CXF cxf
Apache DBCP apache-dbcp
Apache Dubbo apache-dubbo
Apache Geode geode
Apache HttpAsyncClient apache-httpasyncclient
Apache HttpClient apache-httpclient
Apache Kafka kafka
Apache MyFaces jsf-myfaces
Apache Pekko Actor pekko-actor
Apache Pekko HTTP pekko-http
Apache Pulsar pulsar
Apache RocketMQ rocketmq-client
Apache Shenyu apache-shenyu
Apache Struts 2 struts
Apache Tapestry tapestry
Apache Tomcat tomcat
Apache Wicket wicket
Armeria armeria
AsyncHttpClient (AHC) async-http-client
AWS Lambda aws-lambda
AWS SDK aws-sdk
Azure SDK azure-core
Clickhouse Client clickhouse
Couchbase couchbase
C3P0 c3p0
Dropwizard Views dropwizard-views
Dropwizard Metrics dropwizard-metrics
Eclipse Grizzly grizzly
Eclipse Jersey jersey
Eclipse Jetty jetty
Eclipse Jetty HTTP Client jetty-httpclient
Eclipse Metro metro
Eclipse Mojarra jsf-mojarra
Eclipse Vert.x HttpClient vertx-http-client
Eclipse Vert.x Kafka Client vertx-kafka-client
Eclipse Vert.x Redis Client vertx-redis-client
Eclipse Vert.x RxJava vertx-rx-java
Eclipse Vert.x SQL Client vertx-sql-client
Eclipse Vert.x Web vertx-web
Elasticsearch API client elasticsearch-api-client
Elasticsearch client elasticsearch-transport
Elasticsearch REST client elasticsearch-rest
Finagle finagle-http
Google Guava guava
Google HTTP client google-http-client
Google Web Toolkit gwt
Grails grails
GraphQL Java graphql-java
GRPC grpc
Hibernate hibernate
Hibernate Reactive hibernate-reactive
HikariCP hikaricp
InfluxDB influxdb
Java HTTP Client java-http-client
Java HTTP Server java-http-server
Java HttpURLConnection http-url-connection
Java JDBC jdbc
Java JDBC DataSource jdbc-datasource
Java RMI rmi
Java Runtime runtime-telemetry
Java Servlet servlet
java.util.concurrent executors
java.util.logging java-util-logging
Javalin javalin
JAX-RS (Client) jaxrs-client
JAX-RS (Server) jaxrs
JAX-WS jaxws
JBoss Logging Appender jboss-logmanager-appender
JBoss Logging MDC jboss-logmanager-mdc
JMS jms
Jodd HTTP jodd-http
JSP jsp
K8s Client kubernetes-client
Ktor ktor
kotlinx.coroutines kotlinx-coroutines
Log4j Appender log4j-appender
Log4j MDC (1.x) log4j-mdc
Log4j Context Data (2.x) log4j-context-data
Logback Appender logback-appender
Logback MDC logback-mdc
Micrometer micrometer
MongoDB mongo
MyBatis mybatis
Netflix Hystrix hystrix
Netty netty
OkHttp okhttp
OpenLiberty liberty
OpenAI openai
OpenSearch REST opensearch-rest
OpenTelemetry Extension Annotations opentelemetry-extension-annotations
OpenTelemetry Instrumentation Annotations opentelemetry-instrumentation-annotations
OpenTelemetry API opentelemetry-api
Oracle UCP oracle-ucp
OSHI (Operating System and Hardware Information) oshi
Payara payara
Play Framework play
Play WS HTTP Client play-ws
Powerjob powerjob
Quarkus quarkus
Quartz quartz
R2DBC r2dbc
RabbitMQ Client rabbitmq
Ratpack ratpack
ReactiveX RxJava rxjava
Reactor reactor
Reactor Kafka reactor-kafka
Reactor Netty reactor-netty
Redis Jedis jedis
Redis Lettuce lettuce
Rediscala rediscala
Redisson redisson
Restlet restlet
Scala ForkJoinPool scala-fork-join
Spark Web Framework spark
Spring Batch spring-batch
Spring Boot Actuator Autoconfigure spring-boot-actuator-autoconfigure
Spring Cloud AWS spring-cloud-aws
Spring Cloud Gateway spring-cloud-gateway
Spring Core spring-core
Spring Data spring-data
Spring JMS spring-jms
Spring Integration spring-integration
Spring Kafka spring-kafka
Spring Pulsar spring-pulsar
Spring RabbitMQ spring-rabbit
Spring RMI spring-rmi
Spring Scheduling spring-scheduling
Spring Security Config spring-security-config
Spring Web spring-web
Spring WebFlux spring-webflux
Spring Web MVC spring-webmvc
Spring Web Services spring-ws
Spymemcached spymemcached
Tomcat JDBC tomcat-jdbc
Twilio SDK twilio
Twitter Finatra finatra
Undertow undertow
Vaadin vaadin
Vibur DBCP vibur-dbcp
XXL-JOB xxl-job
ZIO zio

注意: 使用环境变量时,破折号(-)应转换为下划线(_)。
例如,要禁用来自 akka-actor 库的跟踪,请将 OTEL_INSTRUMENTATION_AKKA_ACTOR_ENABLED 设置为 false。

禁用控制器视图 Span {#suppressing-controller-andor-view-spans}

某些插桩(例如 Spring Web MVC 插桩)会生成 SpanKind.Internal Span 来捕获控制器、视图的执行情况。
可以使用以下配置设置来禁用这些 Span,而无需禁用整个插桩,
禁用整个插桩还会取消该插桩对父级 SpanKind.Server Span 上 http.route 和相关 Span 名称的捕获。

设置为 true 以启用控制器遥测。

设置为 true 以启用视图遥测。

插桩 Span 禁用行为 {#instrumentation-span-suppression-behavior}

此代理所插桩的某些库会转而使用更低级别的库,而这些更低级别的库也会被插桩。
这通常会导致嵌套的 Span 包含重复的遥测数据。例如:

  • Reactor Netty HTTP 客户端插桩产生的 Span 会与 Netty 插桩产生的 HTTP 客户端 Span 重复;
  • AWS SDK 插桩产生的 Dynamo DB Span 会包含由其内部 HTTP 客户端库(该库也会被插桩)产生的子 HTTP 客户端 Span;
  • Tomcat 插桩产生的 Span 会与通用 Servlet API 插桩产生的 HTTP 服务器 Span 重复。

Java 代理通过检测并禁用包含重复遥测数据的嵌套 Span 来防止这些情况。
可以使用以下配置选项配置禁用行为:

Java 代理的 Span 禁用策略。支持以下 3 种策略:

  • semconv:代理将禁用重复的语义约定。这是 Java 代理的默认行为。
  • span-kind:代理将禁用相同类型的 Span(除了 INTERNAL)。
  • none:代理将根本不禁用任何内容。我们不建议使用此选项进行除调试以外的任何其他用途,因为它会生成大量重复的遥测数据。

例如,假设我们对一个数据库客户端进行插桩,该客户端在内部使用 Reactor Netty HTTP 客户端;
而 Reactor Netty HTTP 客户端又会使用 Netty。

使用默认的 semconv 禁用策略将导致 2 个嵌套的 CLIENT Span:

  • 由数据库客户端插桩发出的具有数据库客户端语义属性的 CLIENT Span;
  • 由 Reactor Netty 插桩发出的具有 HTTP 客户端语义属性的 CLIENT Span;

Netty 插桩会被禁用,因为它会重复 Reactor Netty HTTP 客户端插桩。

使用 span-kind 禁用策略将仅产生 1 个 CLIENT Span:

  • 由数据库客户端插桩发出的具有数据库客户端语义属性的 CLIENT Span;

Reactor Netty 和 Netty 插桩都会被禁用,因为它们也会发出 CLIENT Span。

最后,使用 none 禁用策略将产生 3 个 CLIENT Span:

  • 由数据库客户端插桩发出的具有数据库客户端语义属性的 CLIENT Span;
  • 由 Reactor Netty 插桩发出的具有 HTTP 客户端语义属性的 CLIENT Span;
  • 由 Netty 插桩发出的具有 HTTP 客户端语义属性的 CLIENT Span;

文章大纲