Skip to content

Releases: open-telemetry/opentelemetry-java-instrumentation

Version 2.21.0

18 Oct 01:27
018b80b

Choose a tag to compare

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-attributesotel.instrumentation.logback-appender.experimental.capture-logstash-marker-attributes - Spring Boot starterotel.instrumentation.logback-appender.experimental.capture-logstash-markersotel.instrumentation.logback-appender.experimental.capture-logstash-marker-attributes - Logback appender configuration property: captureLogstashAttributescaptureLogstashMarkerAttributes - 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

📈 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.encode span 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.statement attribute available during sampling in Lettuce instrumentation (#14856)
  • Add code.namespace and code.function attributes to Vaadin controller spans (#14882)
  • Add code.namespace and code.function attributes 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

22 Sep 16:15
7eab988

Choose a tag to compare

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

14 Sep 21:09
7f20f78

Choose a tag to compare

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-views instrumentation has changed from otel.instrumentation.common.experimental.controller-telemetry.enabled to otel.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.template support 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

17 Aug 00:44
4a4ed7d

Choose a tag to compare

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

21 Jul 18:41
083d863

Choose a tag to compare

This is a patch release on the previous 2.18.0 release, fixing the issue(s) below.

🛠️ Bug fixes

  • Backport: Shade new io.opentelemetry.common package in the bootstrap class loader (#14283)

Version 2.18.0

18 Jul 02:26
ba69cd7

Choose a tag to compare

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.arn semantic convention support for AWS SNS SDK v1 and v2 (#14035)
  • Remove thread.name attribute 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.id and 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

09 Jul 19:57
1fc95c4

Choose a tag to compare

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

20 Jun 06:57
v2.17.0
8b91a02

Choose a tag to compare

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
    • metric http.server.tomcat.requestCount --> tomcat.request.count
      • attribute: name --> tomcat.request.processor.name
      • type: Gauge --> Counter
    • metric http.server.tomcat.maxTime --> tomcat.request.duration.max
      • attribute: name --> tomcat.request.processor.name
      • unit: ms --> s
    • metric http.server.tomcat.processingTime --> tomcat.request.duration.sum
      • attribute: name --> tomcat.request.processor.name
      • unit: ms --> s
    • metric http.server.tomcat.traffic --> tomcat.network.io
      • attribute: name --> tomcat.request.processor.name, direction --> network.io.direction
    • metric http.server.tomcat.sessions.activeSessions --> tomcat.session.active.count
      • attribute: context --> tomcat.context
    • metric http.server.tomcat.threads split into two metrics: tomcat.thread.count and tomcat.thread.busy.count
      • attribute: name --> tomcat.thread.pool.name, state removed

📈 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.count to 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.limit and tomcat.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

Version 2.16.0

16 May 00:32
d53c0e9

Choose a tag to compare

This release targets the OpenTelemetry SDK 1.50.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 operation name from graphql span name (#13794)
  • Remove deprecated property for disabling kafka metrics (#13803)

🌟 New javaagent instrumentation

  • Add Avaje Jex Instrumentation (#13733)

📈 Enhancements

  • Add Gen AI support for additional models (#13682)
  • Add JVM metrics to JMX instrumentation (#13392)
  • Add jvm.file_descriptor.count metric to JMX instrumentation (#13722)
  • Optimize lettuce argument splitter regex (#13736)
  • Re-enable Agent Detection on z/OS (#13730)
  • Add GC cause as an opt-in attribute on jvm GC related metric (#13750)
  • Implement stable semconv for db connection pool metrics (#13785)
  • Add Cloud foundry resource provider (#13782)
  • Add instrumentation for opensearch-rest-3.0 (#13823)
  • Run tests with jdk24 and 25-ea (#13824)
  • Propagate context into CompletableFuture returned from aws2 async client methods (#13810)
  • Added opt-in instrumentation for transaction commit/rollback in jdbc (#13709)
  • Added experimental opt-in JDBC db.query.parameter.<key> span attributes (#13719)
  • Add tools support to bedrock InvokeModel instrumentation (#13832)

🛠️ Bug fixes

  • Fix instrumentation for ibm https url connection connect (#13728)
  • Don't wrap null ResultSet in jdbc library instrumentation (#13758)
  • Fix NPE in netty 3.8 instrumentation (#13801)
  • Fix ending server span with servlet async request (#13830)

🧰 Tooling

  • Allow advice to define custom mappings (#13751)

🙇 Thank you

This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:

@123liuziming
@AlixBa
@anuraaga
@benjamin-confino
@breedx-splk
@codefromthecrypt
@ezhang6811
@jack-berg
@jannewulf
@jaydeluca
@jeanbisutti
@JonasKunz
@laurit
@lily-es
@navidcs
@robsunday
@ryanrupp
@schmikei
@SentryMan
@steverao
@stillya
@SylvainJuge
@tinnapat
@trask
@zeitlinger
@zhenlin-pay2

Version 2.15.0

10 Apr 22:36
fc64eba

Choose a tag to compare

This release targets the OpenTelemetry SDK 1.49.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

  • Delete deprecated java http client classes (#13527)
  • Support latest version of kafka client library (#13544)
  • Implement genai events for bedrock (streaming) (#13507)
  • JMX metrics support unit conversion (#13448)
  • Rename experimental method, use Telemetry instead of Metrics (#13574)
  • End metric description with dot (#13559)
  • Add initial gen_ai instrumentation of bedrock InvokeModel (#13547)
  • Delete deprecated library instrumentation methods (#13575)
  • Add experimental http client url.template attribute (#13581)
  • Add error.type for JDBC under otel.semconv-stability.opt-in flag (#13331)
  • Add azure resource provider (#13627)
  • Remove aws.endpoint attribute from SQS instrumentation (#13620)
  • Avoid conflicts with user-defined Apache Dubbo filters with default order (#13625)
  • Support filtering negative values from JMX metrics (#13589)
  • Instrument bedrock InvokeModelWithResponseStream (#13607)
  • Use context instead of request attributes for servlet async instrumentation (#13493)
  • Improve handling of quoted table names (#13612)

🛠️ Bug fixes

  • Fix aws timeseries requests misdetected as dynamodb (#13579)
  • Fix pekko route naming (#13491)
  • Fix route handling when local root span wasn't created by instrumentation api (#13588)
  • The HostIdResourceProvider should instantiate an HostIdResource, not an HostResource (#13628)
  • Fix OpenTelemetryPreparedStatement and the returned ResultSet.getStatement() do not match (#13646)
  • Fix Spring boot starter dependency resolution failure with Gradle and Java 11 (#13384)
  • Fix extremely large DB statements may cause memory leak (#13353)

🙇 Thank you

This release was possible thanks to the following contributors who shared their brilliant ideas and awesome pull requests:

@123liuziming
@alexgenon
@anuraaga
@breedx-splk
@codefromthecrypt
@crossoverJie
@cyrille-leclerc
@hannahchan
@jack-berg
@jaydeluca
@jeanbisutti
@JonasKunz
@laurit
@MarcusDunn
@masonedmison
@railsharipov
@robsunday
@samwright
@shaokeyibb
@steverao
@SylvainJuge
@trask
@victor-noel-pfx
@zeitlinger