Releases: open-telemetry/opentelemetry-java-instrumentation
Version 2.24.0
This release targets the OpenTelemetry SDK 1.58.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
- Remove support for previously deprecated property
otel.instrumentation.logback-appender.experimental.capture-logstash-attributes(#15722) - Remove deprecated methods from HTTP library instrumentations (#15802)
🚫 Deprecations
- JMX Metrics: Deprecated
addClassPathRulesandaddCustomRulesmethods inJmxTelemetryBuilder, and moved non-public classes to an internal package (#15658) - Deprecated
setMessagingReceiveInstrumentationEnabledin favor ofsetMessagingReceiveTelemetryEnabledto match config property name (#15668) - Deprecated database client attribute getter methods
getDbSystem()andgetResponseStatus()in favor ofgetDbSystemName()andgetResponseStatusCode()to align with stable semantic conventions (#15696) - Deprecated
setCapturedRequestParameters()in Servlet library instrumentation in favor ofExperimental.setCapturedRequestParameters()as request parameter capture is experimental (#15826) - Deprecated
getHttpClient(),setHttpClientTransport(), andsetSslContextFactory()in Jetty client instrumentation in favor of new builder-style methodsnewHttpClient(),newHttpClient(SslContextFactory), andnewHttpClient(HttpClientTransport, SslContextFactory)(#15827) - Deprecate Netty experimental method that is still in public API (#15828)
- Deprecated
newHttpClient()in favor ofwrap()in Java HTTP Client instrumentation for consistency with naming conventions across library instrumentations (#15829) - Deprecated
new*methods in favor ofcreate*methods across multiple instrumentation libraries for consistency (e.g.,newHttpClient()→createHttpClient(),newInterceptor()→createInterceptor()) (#15832) - Deprecated methods in
SqlStatementInfoandMultiQueryin favor of methods using stable semantic convention terminology:getFullStatement()→getQueryText(),getOperation()→getOperationName(), andgetStatements()→getQueryTexts()(#15833) - Deprecated database getter methods in favor of methods using stable semantic convention terminology:
getResponseStatusCode()→getDbResponseStatusCode(),getBatchSize()→getDbOperationBatchSize(), andgetQueryParameters()→getDbQueryParameters()(#15859)
📈 Enhancements
- Spring Boot starter: add support for
otel.instrumentation.logback-appender.experimental.capture-template(#15649) - Spring Boot Starter: Support Spring Boot 4 RestClient (#15684)
- Improve support for experimental declarative configuration (#15656, #15688, #15697, #15698, #15704, #15707, #15713, #15714, #15722, #15727, #15732, #15733, #15734, #15735, #15740, #15741, #15742, #15752, #15756, #15787, #15791, #15792, #15841, #15856)
- AWS Bedrock: support model IDs with regional prefixes (e.g.,
us.,global.) for inference profiles (#15751) - Redis: Improve sanitization for ACL command (#15797)
- Ktor and Netty library instrumentations: Add
setSpanNameExtractorCustomizer(#15825) - Support more of stable database semconv under opt-in flag (#15836, #15854)
- Move
SpanStatusExtractor.extract()beforeOperationListener.onEnd()inInstrumenter(#15844)
🛠️ Bug fixes
- Servlet library instrumentation: fix capturing
enduser.id(#15858) - Fix agent startup failing on read-only filesystem (#15682)
🙇 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
@gaeljw
@igreenfield
@jack-berg
@jaydeluca
@jkwatson
@JonasKunz
@laurit
@mznet
@novoslavik
@philsttr
@robsunday
@steverao
@SylvainJuge
@toon-borgers-hs
@trask
@yairogen
@zeitlinger
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)