Releases: open-telemetry/opentelemetry-java-instrumentation
Version 2.23.0
This release targets the OpenTelemetry SDK 1.57.0.
Note that many artifacts have the -alpha suffix attached to their version number, reflecting that they are still alpha quality and will continue to have breaking changes. Please see the VERSIONING.md for more details.
⚠️ Breaking Changes
- ActiveMQ Classic JMX metrics: rename attributes and metrics to align with semantic conventions (see PR description for specifics) (#14996)
- Library instrumentation: remove previously deprecated methods from telemetry builders (#15324)
- Logback:
captureArgumentsno longer captures message template, usecaptureTemplate(#15423) - Play: disable controller spans by default, re-enable with
otel.instrumentation.common.experimental.controller-telemetry.enabled=true(#15604)
🚫 Deprecations
- Library instrumentation: deprecate
setSpanNameExtractor()andsetStatusExtractor()in favor ofsetSpanNameExtractorCustomizer()andsetStatusExtractorCustomizer()(#15529)
🌟 New javaagent instrumentation
- Apache ElasticJob (#14933)
🌟 New library instrumentation
📈 Enhancements
- Spring starter: add declarative config logging exporter (#14917)
- Failsafe: add support for
RetryPolicy(#15255, #15537) - GraphQL: add option to disable capturing query documents (#15384)
- JMX metrics: allow any classpath resource path in rules (#15413)
- Spring Boot actuator autoconfigure: support Spring Boot 4 (#15433)
- Spring JMS: support Spring Boot 4 (#15434)
- Spring starter: support Spring Boot 4 (#15459)
- Lettuce: support custom
ClientResources(#15470) - Lettuce: add reactor-core compatibility checker (#15472)
- Servlet: propagate context explicitly for async runnables (#15476)
- Servlet: always add
trace_idandspan_idattributes to requests (#15485) - Pekko HTTP: separate route instrumentation from HTTP server instrumentation (#15499)
- MongoDB: emit versioned scope name (#15500)
- Spring WebFlux: support Spring Boot 4 (#15502, #15574)
- Spring WebMVC: support Spring Boot 4 (#15525)
- Spring Cloud Gateway: support Spring Boot 4 (#15540)
- Spring starter: add missing Kafka configuration options (#15592)
- OpenTelemetry API interop: support new GlobalOpenTelemetry methods introduced in 1.57 (#15620)
🛠️ Bug fixes
- Spring Web/WebFlux: restore GraalVM native-image compatibility (#15306)
- Spring Kafka: end span in
afterRecordcallback (#15367) - Spring starter: fix environment variable overrides for array properties in declarative config (#15424)
- Ktor: prevent double
end()calls inKtorServerTelemetry(#15452) - OpenTelemetry API interop: fix null handling in
ExtendedOpenTelemetrydeclarative config (#15478) - Akka HTTP: fix
http.routeattribute capture and span naming (#15504) - Extensions: fix SPI loading for
InstrumenterCustomizerProviderand related classes (#15538) - Sanitize sql statements that may contain unquoted passwords (#15607)
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@123liuziming
@bioplasticlining
@Cirilla-zmh
@copilot-pull-request-reviewer
@cyrille-leclerc
@droidnxs
@gaeljw
@George-C-Odes
@ghareeb-falazi
@GondaliaKaran
@gquintana
@jack-berg
@jaydeluca
@laurit
@marychatte
@obs-gh-abhishekrao
@onurkybsi
@philsttr
@prydin
@robsunday
@steverao
@SylvainJuge
@Tefaier
@thompson-tomo
@ThorbenKuck
@toon-borgers-hs
@trask
@tylerbenson
@zeitlinger
Version 2.22.0
This release targets the OpenTelemetry SDK 1.56.0.
Note that many artifacts have the -alpha suffix attached to their version number, reflecting that they are still alpha quality and will continue to have breaking changes. Please see the VERSIONING.md for more details.
⚠️ Breaking Changes
- AWS SDK 2.x attributes updated to align with semantic conventions (#15028) - The following attributes have been renamed: -
aws.bucket.name(S3) →aws.s3.bucket-aws.queue.url(SQS) →aws.sqs.queue.url-aws.stream.name(Kinesis) →aws.kinesis.stream_name-aws.table.name(DynamoDB) →aws.dynamodb.table_names-aws.dynamodb.provisioned_throughput.read_capacity_units→aws.dynamodb.provisioned_read_capacity(type changed from long to double) -aws.dynamodb.provisioned_throughput.write_capacity_units→aws.dynamodb.provisioned_write_capacity(type changed from long to double) -aws.dynamodb.exclusive_start_table_name→aws.dynamodb.exclusive_start_table-aws.dynamodb.projection_expression→aws.dynamodb.projection-aws.dynamodb.scan_index_forward→aws.dynamodb.scan_forward- The following attribute types have changed: -aws.dynamodb.table_names: string → string[] -aws.dynamodb.consumed_capacity: string → string[] -aws.dynamodb.global_secondary_indexes: string → string[] -aws.dynamodb.local_secondary_indexes: string → string[] -aws.dynamodb.consistent_read: string → boolean -aws.dynamodb.table_count: string → long -aws.dynamodb.limit: string → long -aws.dynamodb.attributes_to_get: string → string[] -aws.dynamodb.segment: string → long -aws.dynamodb.total_segments: string → long -aws.dynamodb.count: string → long -aws.dynamodb.scanned_count: string → long - The following attributes are no longer emitted by default but can be enabled withotel.instrumentation.aws-sdk.experimental-span-attributes=true: -aws.queue.name(SQS) -aws.lambda.function.name(Lambda) -aws.lambda.function.arn(Lambda) - JDBC library data source instrumentation now disabled by default (#15074)
- JMX state metrics unit changed from empty string to
1to align with semantic conventions (#15093) - AWS SDK 1.x attributes updated to align with semantic conventions (#15094) - Only affects users with
otel.instrumentation.aws-sdk.experimental-span-attributes=true- The following attributes have been renamed and are now emitted by default (no experimental flag required): -aws.bucket.name(S3) →aws.s3.bucket-aws.queue.url(SQS) →aws.sqs.queue.url-aws.stream.name(Kinesis) →aws.kinesis.stream_name-aws.table.name(DynamoDB) →aws.dynamodb.table_names - Finatra controller spans now disabled by default to match other controller spans (#15118)
- Netty HTTP request wrapper class renamed from HttpRequestAndChannel to NettyRequest (#15247)
- JSP compile spans now disabled by default to match other view spans (#15261)
🚫 Deprecations
- TracingConsumerInterceptor and TracingProducerInterceptor deprecated in favor of new configurable interceptors (#14929)
- Various builder methods updated to use UnaryOperator instead of Function<X, X> (#15101)
- DbClientCommonAttributesGetter deprecated in favor of DbClientAttributesGetter (#15139)
🌟 New javaagent instrumentation
- Add JFinal instrumentation (#15216)
📈 Enhancements
- Avoid Unsafe usage on Java 23+ (#14855, #15091)
- Update Azure SDK instrumentation so
az.namespacecan be used for sampling (#15068) - Spring Boot Starter: Add cache to reduce environment variable lookups (#15132)
- HTTP instrumentations now emit semantic convention schema URL (#15144)
- Added instrumentation support for AsyncHttpClient version 1.8 (#15195)
- Instrumenter customizer now receives instrumentation type (#15227)
- Added support for Spring Framework 7.0 (#15287, #15299, #15301, #15304, #15311, #15362, #15371)
- Added span status customizer to incubating InstrumenterCustomizer API (#15288)
- Added configuration options for sqlcommenter (#15169)
- GraphQL instrumentation now records data fetcher errors (#15289)
- Add http client url template customizer (#15217)
- Introduce idiomatic
JmxTelemetryAPI for JMX metrics library (#15220) - Add instrumentation for OpenTelemetry API incubator's
ExtendedOpenTelemetry(#15178)
🛠️ Bug fixes
- Fix missing
peer.servicein Netty HTTP spans (#14963) - Fix Couchbase span kind to be
CLIENTinstead ofINTERNAL(#14995) - Link attributes are now bridged to the Java agent when using OpenTelemetry API (#15143)
- Potential race condition in JFR runtime metrics initialization fixed (#15231)
- Regression fixed related to context propagation when using Spring
@EnableAsync(#15249) - Declarative configuration now uses snake_case for distro resource provider attribute name (#15260)
- Logback appender fixed to capture Logstash
StructuredArguments.entries()(#15341) - Fix context propagation in Spring WebFlux 7.0 client reactive callbacks (#15336)
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@bioplasticlining
@breedx-splk
@brunobat
@copilot-pull-request-reviewer
@defields923
@dixanms
@jack-berg
@jaydeluca
@jeanbisutti
@JonasKunz
@kasiditi
@koksay
@Kresshy
@laurit
@LikeTheSalad
@lukaszgryglicki
@mateuszrzeszutek
@mlbiscoc
@mznet
@PaarthB
@pepeshore
@roberttoyonaga
@robsunday
@steverao
@SylvainJuge
@tharsanrp
@trask
@vasireddy99
@wyctxwd1
@zeitlinger
Version 2.21.0
This release targets the OpenTelemetry SDK 1.55.0.
Note that many artifacts have the -alpha suffix attached to their version number, reflecting that they are still alpha quality and will continue to have breaking changes. Please see the VERSIONING.md for more details.
⚠️ Breaking Changes
- Hadoop JMX metrics have been renamed to align with semantic conventions. If you are using Hadoop JMX metrics, you will need to update your dashboards and alerts. (#14411)
- Lettuce 5.1 instrumentation now aligns with other instrumentations and no longer sets the span status description. (#14886)
🚫 Deprecations
- The following Logback appender configuration properties have been renamed for clarity. The old property names have been deprecated and will be removed in a future release: - Java agent:
otel.instrumentation.logback-appender.experimental.capture-logstash-attributes→otel.instrumentation.logback-appender.experimental.capture-logstash-marker-attributes- Spring Boot starterotel.instrumentation.logback-appender.experimental.capture-logstash-markers→otel.instrumentation.logback-appender.experimental.capture-logstash-marker-attributes- Logback appender configuration property:captureLogstashAttributes→captureLogstashMarkerAttributes- Logback appender API:setCaptureLogstashAttributes()→setCaptureLogstashMarkerAttributes()(#14959)
🌟 New javaagent instrumentation
- Add Helidon instrumentation (#13776)
- Add NATS instrumentation (#13999)
- OpenSearch Transport v3.0 Implementation (#14823)
- Add Kafka Connect API instrumentation (#14478)
🌟 New library instrumentation
- Add Helidon Instrumentation (#13776)
- Add NATS instrumentation (#13999)
- Failsafe 3.0 instrumentation introduced (#14057)
📈 Enhancements
- Add experimental sqlcommenter support for JDBC and R2DBC (#13714)
- Align Hadoop JMX metrics with semantic conventions (#14411)
- Introduce experimental API for operation attributes to be passed only to OperationListeners (#14590)
- Add span logging support for declarative configuration (#14591)
- Add span logging support for Spring Boot starter (#14594)
- Support capturing event names in logback, log4j, and jboss-logmanager appenders (#14649)
- Include contrib sampler in java agent, e.g. for filtering health check endpoints (#14677)
- Collect RPC metrics in Apache Dubbo instrumentation (#14690)
- Add experimental option to disable noisy
redis.encodespan events in Lettuce instrumentation (#14750) - Support ListIterator in Kafka consumer instrumentation for Spark Structured Streaming (#14757)
- Exclude wrapper classes in JDBC instrumentation (#14760)
- Support JDBC URL parsing for OceanBase, PolarDB, and Lindorm databases (#14790)
- Support context propagation in Guava AsyncEventBus (#14791)
- Make
db.statementattribute available during sampling in Lettuce instrumentation (#14856) - Add
code.namespaceandcode.functionattributes to Vaadin controller spans (#14882) - Add
code.namespaceandcode.functionattributes to Grails controller spans (#14885) - Support Hibernate 7.2.0.CR1 (#14921)
- Support capturing Logstash StructuredArguments as log record attributes (#14959)
- Add gRPC request/response size metrics (#14342)
🛠️ Bug fixes
- Fix datasource instrumentation to support connection pools like Druid (#14602)
- Fix Java HTTP client instrumentation to properly propagate request cancellation (#14747)
- Fix Reactor Netty HTTP client instrumentation to handle IllegalStateException (#14778)
- Fix executor context propagation when a stateless lambda instance is passed multiple times (#14841)
- Remove span status description from Lettuce 5.1 instrumentation (#14886)
- Fix Spring Boot autoconfiguration ordering for micrometer bridge (#15011)
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@1095071913
@AlixBa
@asarkar
@asweet-confluent
@breedx-splk
@changliu-wk
@copilot-swe-agent
@crossoverJie
@damienburke
@defields923
@ericmm
@ghilainm
@grcevski
@hoteye
@igor-suhorukov
@jack-berg
@jaydeluca
@jiten686
@JonasKunz
@jonatan-ivanov
@laurit
@LikeTheSalad
@LiouChong
@malafeev
@maxxedev
@MrCull
@mznet
@neilfordyce
@nenadnoveljic
@onurkybsi
@patpatpat123
@pepeshore
@philsttr
@robsunday
@SentryMan
@sorobon
@steffan-westcott
@steverao
@survivant
@SylvainJuge
@tjquinno
@trask
@vasantteja
@wl2027
@xiangtianyu
@xuminwlt
@zeitlinger
Version 2.20.1
This is a patch release on the previous 2.20.0 release, fixing the issue(s) below.
🛠️ Bug fixes
- Backport: Update the OpenTelemetry SDK version to 1.54.1 (#14720)
Version 2.20.0
This release targets the OpenTelemetry SDK 1.54.0.
Note that many artifacts have the -alpha suffix attached to their version number, reflecting that they are still alpha quality and will continue to have breaking changes. Please see the VERSIONING.md for more details.
Migration notes
- The configuration option used to enable traces generated by the
dropwizard-viewsinstrumentation has changed fromotel.instrumentation.common.experimental.controller-telemetry.enabledtootel.instrumentation.common.experimental.view-telemetry.enabled(#14475) - Deprecated (and
-alpha) SpanNames class was removed (#14582)
🌟 New javaagent instrumentation
- Add ClickHouse client v2 instrumentation (#14501)
📈 Enhancements
- Add code attributes for log4j1 (#13947)
- Add headers capture feature to Kafka 2.6 interceptors (#14290)
- Support custom exception handling from logger instrumentation (#14493)
- Add call depth check to executor instrumentation (#14546)
- Add Spring starter thread details support (#14449)
- Let AWS Lambda SQS handlers report partial batch failures (#14468)
- Instrument instrumentation suppression API (#14565)
- Declarative config: update file version support (#14593)
- Add
url.templatesupport to Spring 6 RestTemplate (#14612) - Declarative config: add missing resource providers (#14222)
- Declarative config: map common-enabled property (#14589)
🛠️ Bug fixes
- Fix non-lowercase messaging headers capture (#14479)
- Fix JUL logger methods parameter mismatch (#14531)
- Fix a test failure with latest Mongo release (#14642)
🧰 Tooling
- Add constructor to AgentClassLoader for custom parent ClassLoader (#14480)
- Declarative config: make bridge usable by Spring starter and contrib (#14497, #14548)
- Reduce log level for main jar detection (#14528)
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@AlchemyDing
@asarkar
@breedx-splk
@brunobat
@devurandom
@jaydeluca
@jjant
@JonasKunz
@kelunik
@laurit
@maryliag
@Munken
@mznet
@oliver-zhang
@philsttr
@steverao
@SylvainJuge
@tanmaydpatel
@trask
@trasktest
@xiangtianyu
@zeitlinger
Version 2.19.0
This release targets the OpenTelemetry SDK 1.53.0.
Note that many artifacts have the -alpha suffix attached to their version number, reflecting that they are still alpha quality and will continue to have breaking changes. Please see the VERSIONING.md for more details.
📈 Enhancements
- Align WildFly metrics with semantic conventions (#14208)
- Add streaming chat instrumentation for OpenAI SDK (#14271)
- Add OpenAI async client instrumentation support (#14322)
- Add embeddings instrumentation for OpenAI client (#14353)
- Support OpenAI 3.0 (#14423)
🛠️ Bug fixes
- Fix OpenTelemetryDataSource error when refresh configuration (#14255)
- Fix NPE when consuming Kafka messages with null headers (#14332)
- Fix RxJava context propagation for ObservableFromCallable (#14393)
- Avoid test failures on Spring Boot 4-m1 (#14420)
🧰 Tooling
- Add support for extensions in attributesExtractors, contextCustomizers, operationListeners and spanNameExtractor (#13917)
- Add declarative config early initialization and property mapping support (#14184)
- Add consistent exclusion of boot libraries (#14306)
- Build smoke-test-fake-backend Docker image for ARM64 architecture (#14387)
- Implement all JUL Logger methods in PatchLogger (#14409)
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@Algieba4
@anuraaga
@asweet-confluent
@breedx-splk
@charlie-world
@copilot-pull-request-reviewer
@danielgblanco
@iNikem
@jaydeluca
@JonasKunz
@kkz-01
@laurit
@Munken
@mznet
@pepeshore
@PeterF778
@robsunday
@steverao
@SylvainJuge
@trask
@xiangtianyu
@zeitlinger
Version 2.18.1
This is a patch release on the previous 2.18.0 release, fixing the issue(s) below.
🛠️ Bug fixes
- Backport: Shade new
io.opentelemetry.commonpackage in the bootstrap class loader (#14283)
Version 2.18.0
This release targets the OpenTelemetry SDK 1.52.0.
Note that many artifacts have the -alpha suffix attached to their version number, reflecting that they are still alpha quality and will continue to have breaking changes. Please see the VERSIONING.md for more details.
🌟 New javaagent instrumentation
- Add initial instrumentation for OpenAI client (#14221)
🌟 New library instrumentation
- Add initial instrumentation for OpenAI client (#14221)
📈 Enhancements
- Implement stable semantic conventions for
code.*attributes with opt-in support (#13860) - Add span kind configuration support for method instrumentation and declarative tooling (#14014)
- Add support for vendor-specific declarative configuration properties (#14016)
- Add auto-instrumentation support for AWS Secrets Manager SDK v1 (#14027)
- Add
aws.sns.topic.arnsemantic convention support for AWS SNS SDK v1 and v2 (#14035) - Remove
thread.nameattribute from experimental JVM metrics (#14061) - Enhance and align Jetty JMX metrics with OpenTelemetry semantic conventions (#14067)
- Add support for latest spring-cloud-aws versions (#14207)
- Add JDBC parameter capture support for
PreparedStatement.setObject()method (#14219) - Add
aws.lambda.resource.mapping.idand experimental Lambda attributes for AWS Lambda SDK (#14229) - Clear context class loader from OpenTelemetry internal threads to prevent leaks (#14241)
🛠️ Bug fixes
- Fix JDBC URL parser StringIndexOutOfBoundsException with malformed connection strings (#14151)
- Fix empty units in JMX state metrics definitions (#14194)
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@anuraaga
@atoulme
@breedx-splk
@codefromthecrypt
@garethedwards-tass
@jack-berg
@jadolgl
@jaydeluca
@jhayes2-chwy
@JonasKunz
@laurit
@lukeina2z
@mznet
@PeterF778
@robsunday
@steverao
@stevesea
@SylvainJuge
@trask
@wl2027
@zeitlinger
Version 2.17.1
This is a patch release on the previous 2.17.0 release, fixing the issue(s) below.
- Backport: Fix invalid jmx state metrics empty unit (#14195)
Version 2.17.0
This release targets the OpenTelemetry SDK 1.51.0.
Note that many artifacts have the -alpha suffix attached to their version number, reflecting that they are still alpha quality and will continue to have breaking changes. Please see the VERSIONING.md for more details.
Migration notes
- Changes have been made to Tomcat metric definitions provided by JMX Metric Insight component
- metric
http.server.tomcat.errorCount-->tomcat.error.count- attribute:
name-->tomcat.request.processor.name - type: Gauge --> Counter
- attribute:
- metric
http.server.tomcat.requestCount-->tomcat.request.count- attribute:
name-->tomcat.request.processor.name - type: Gauge --> Counter
- attribute:
- metric
http.server.tomcat.maxTime-->tomcat.request.duration.max- attribute:
name-->tomcat.request.processor.name - unit:
ms-->s
- attribute:
- metric
http.server.tomcat.processingTime-->tomcat.request.duration.sum- attribute:
name-->tomcat.request.processor.name - unit:
ms-->s
- attribute:
- metric
http.server.tomcat.traffic-->tomcat.network.io- attribute:
name-->tomcat.request.processor.name,direction-->network.io.direction
- attribute:
- metric
http.server.tomcat.sessions.activeSessions-->tomcat.session.active.count- attribute:
context-->tomcat.context
- attribute:
- metric
http.server.tomcat.threadssplit into two metrics:tomcat.thread.countandtomcat.thread.busy.count- attribute:
name-->tomcat.thread.pool.name,stateremoved
- attribute:
- metric
📈 Enhancements
- JMX metrics: require explicit unit in yaml (#13796)
- Remove deprecated methods from runtime-telemetry (#13885)
- ClickHouse JDBC URL support (#13884)
- Support Vert.x HTTP client version 5.0 (#13903)
- Add metric
jvm.file_descriptor.countto jvm runtime experimental metrics (#13904) - Add support for Vert.x SQL client version 5.0 (#13914)
- JMX Metric Insights - improved Tomcat metrics alignment to semconv and added new Tomcat metrics
tomcat.session.active.limitandtomcat.thread.limit(#13650) - Apply method instrumentation only to methods (#13949)
- Apply external annotation instrumentation only to methods (#13948)
- Log start of spring boot starter (#13882)
- Update the OpenTelemetry SDK version to 1.51.0 (#13992)
- Capture finatra code function name (#13939)
- AWS SDK v2 Secrets Manager auto-instrumentation support (#14001)
- AWS SDK v1 Step Functions auto-instrumentation support (#14003)
- Add auto-instrumentation support for AWS Step Functions SDK v2 (#14028)
- Skip propagating context into mysql jdbc cleanup thread (#14060)
🛠️ Bug fixes
- Fix instrumentation failure when constructor has @WithSpan annotation (#13929)
- Fix structured concurrency support on jdk 25 (#13936)
- Fix Spring boot starter fails to load when an OpenTelemetry Bean is supplied (#13972)
- Fix UCP instrumentation scope name (#14029)
- Preload ThreadLocalRandom to avoid java.lang.ClassCircularityError: java/util/concurrent/ThreadLocalRandom (#14030)
🙇 Thank you
This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:
@breedx-splk
@brunobat
@copilot-pull-request-reviewer
@github-advanced-security
@jack-berg
@jackshirazi
@jaydeluca
@jeanbisutti
@john-hyun-eb
@john9x
@JonasKunz
@laurit
@lukeina2z
@PeterF778
@prdoyle
@robsunday
@schmikei
@steverao
@SylvainJuge
@trask
@wl2027
@zeitlinger