抑制特定仪器
完全禁用代理
系统属性: 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 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 ElasticJob | apache-elasticjob |
| Apache Geode | geode |
| Apache HttpAsyncClient | apache-httpasyncclient |
| Apache HttpClient | apache-httpclient |
| Apache Iceberg | iceberg |
| 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 |
| Failsafe | failsafe |
| Finagle | finagle-http |
| Google Guava | guava |
| Google HTTP client | google-http-client |
| Google Web Toolkit | gwt |
| Grails | grails |
| GraphQL Java | graphql-java |
| GRPC | grpc |
| Helidon | helidon |
| 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 |
| JFinal | jfinal |
| 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 |
| NATS Client | nats |
| Netflix Hystrix | hystrix |
| Netty | netty |
| OkHttp | okhttp |
| OpenLiberty | liberty |
| OpenAI | openai |
| OpenSearch Java | opensearch-java |
| 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。
抑制控制器和/或视图跨度
某些仪器(例如 Spring Web MVC 仪器)会生成 SpanKind.Internal 跨度来捕获控制器和/或视图执行。可以使用以下配置设置抑制这些跨度,而不会抑制整个仪器(这将禁用仪器对 http.route 的捕获以及父 SpanKind.Server 跨上的关联跨度名称)。
系统属性: otel.instrumentation.common.experimental.controller-telemetry.enabled
环境变量: OTEL_INSTRUMENTATION_COMMON_EXPERIMENTAL_CONTROLLER_TELEMETRY_ENABLEDDefault: false
描述: 设置为 true 以启用控制器遥测。
系统属性: otel.instrumentation.common.experimental.view-telemetry.enabled
环境变量: OTEL_INSTRUMENTATION_COMMON_EXPERIMENTAL_VIEW_TELEMETRY_ENABLEDDefault: 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跨度。