- Ktor 3 instrumentation (#12562)
- Ktor 3 instrumentation (#12562)
- Spring Boot Starter Scheduling instrumentation scope name changed from
io.opentelemetry.spring-scheduling-3.1
toio.opentelemetry.spring-boot-autoconfigure
to reflect the module's name. - Default flush timeout for aws lambda javaagent instrumentation changed from 1 second to 10 seconds to match the flush timeout used in the aws lambda library instrumentation. (#12576)
- Delegate loading of java package to platform loader (#12505)
- Set up virtual field transforms before otel sdk is initialized (#12444)
- Update azure-core-tracing-opentelemetry version and improve HTTP suppression to back off when Azure SDK tracing is disabled. (#12489)
- Ktor2 http client uses low level instrumentation (#12530)
- Add logback mdc instrumentation to spring boot starter (#12515)
- Run class load listener only once (#12565)
- Remove duplicate byte buddy classes to reduce agent jar file size (#12571)
- Support additional JVM arg syntax in service name resource detector (#12544)
- Fix derby directory connection string parser (#12479)
- Improve whitespace handling in oracle jdbc url parser (#12512)
- Fix SpanKey bridging for unbridgeable span (#12511)
- Fix lettuce instrumentation and tests to pass against latest version (#12552)
- Fix Kafka initialization occasionally failed due to concurrent injection of OpenTelemetryMetricsReporter (#12583)
- Allow JMX Insight reuse for remote connections (#12178)
- Add opentelemetry-semconv-incubating to bom-alpha (#12266)
- Bridge more incubating api (#12230)
- Jetty HttpClient 12: propagate context to all response listeners (#12326)
- Add Pekko Scheduler context propagation (#12359)
- Add Akka Scheduler context propagation (#12373)
- Add instrumentation for spring-cloud-aws SqsListener annotation (#12314)
- Align SpringConfigProperties with DefaultConfigProperties (#12398)
- Clear context propagation virtual field (#12397)
- The opt-in experimental attribute
aws.requestId
was renamed toaws.request_id
(to match the semantic conventions) and it is now emitted by default. (#12352) - Ability to set Logback argument capture with a property in Spring Boot Starter (#12442)
- Support experimental declarative configuration (#12265)
- Spring Boot Starter: Add auto configuration for spring scheduling instrumentation (#12438)
- Extract
APIGatewayProxyRequestEvent
headers for context propagation in AWS Lambda instrumentation (#12440) - Support JMX state metrics (#12369)
- Allow method instrumentation module to trace methods in boot loader (#12454)
- Fix gc duration metric in runtime-telemetry-java17 (#12256)
- Fix vert.x route containing duplicate segments when RoutingContext.next is used (#12260)
- Fixes for latest mongo version (#12331)
- Fix context propagation for ratpack request body stream (#12330)
- Fix lambda instrumentation to forceFlush logs also (#12341)
- Can't add custom AttributeExtractor to Apache HttpClient 5 library instrumentation (#12394)
- Disable logback capture arguments by default (#12445)
- Add support for missing list properties in spring starter (#12434)
- The unit on the opt-in Java 17 JFR-based metrics was updated from milliseconds to seconds
to conform with the semantic conventions.
If you are using the Java agent, this only affects you if you are opting in via
otel.instrumentation.runtime-telemetry-java17.enable-all=true
. (#12084, #12244)
- Update Pulsar instrumentation to work with next Pulsar release (#11648)
- Capture
network.peer.address
in OkHttp 3.0 instrumentation (#12012) - Add support for CXF 4.0 JAX-WS (#12077)
- Add rules for capturing Apache Camel metrics exposed by JMX MBeans (#11901)
- Make RocketMQ span status extractor delegate to the default extractor (#12183)
- Bridge log body any value (#12204)
- Add declarative config support for resource providers (#12144)
- Fix Javaagent doesn't work with
java.net.spi.InetAddressResolverProvider
(#11987) - Fix Oracle UCP 11 metrics not emitted (#12052)
- Fix wrong database info captured while using Apache ShardingSphere (#12066)
- Fix RabbitMQ NullPointerException (#12109)
- Fix possible
NullPointerException
in Play instrumentation (#12121) - Fix error span status for successful requests in Ktor (#12161)
- Make OpenTelemetryHandlerMappingFilter handle exceptions from
ServletRequestPathUtils.parseAndCache()
(#12221) - Fix tracing CoroutineCrudRepository.findById (#12131)
- Fix capturing context in log4j library instrumentation with async logger (#12176)
- Backport: Update the OpenTelemetry SDK version to 1.41.0 (#12071)
- Add span baggage processor (#11697)
- Improve tomcat version detection (#11936)
- Improve akka route handling with java dsl (#11926)
- Ignore Alibaba fastjson ASMClassLoader (#11954)
- Use
aws-lambda-java-serialization
library, which is available by default, while deserializing input and serializing output (#11868) - Logback appender: map timestamp in nanoseconds if possible (#11974)
- Save ILoggingEvent.getArgumentArray() arguments from Logback (#11865)
- Update Java 17-based metrics to stable semconv (#11914)
- Add Pulsar Consumer metrics (#11891)
- Fix missing throw statement in RestClientWrapper (#11893)
- Fix ClickHouse tracing when database name not included in connection string (#11852)
- Fix class cast exception, noop meter does not implement incubating API (#11934)
- Closing a kafka producer/consumer should not disable metrics from other consumers/producers (#11975)
- Fix ending span in Ktor plugin (#11726)
- Fix netty memory leak (#12003)
- Backport: Update the OpenTelemetry SDK version to 1.40.0 (#11879)
The Spring Boot Starter (opentelemetry-spring-boot-starter
) is now stable.
- The
opentelemetry-spring-boot
andopentelemetry-spring-boot-3
artifacts have been merged into a single artifact namedopentelemetry-spring-boot-autoconfigure
which supports both Spring Boot 2 and Spring Boot 3 - Two experimental HTTP metrics have been renamed:
http.server.request.size
→http.server.request.body.size
,http.server.response.size
→http.server.response.body.size
- Support HTTP client instrumentation configuration in Spring starter (#11620)
- Influxdb client: don't fill
db.statement
for create/drop database and write operations (#11557) - Support
otel.instrumentation.common.default-enabled
in the Spring starter (#11746) - Support Jetty HTTP client 12 (#11519)
- Add Pulsar
messaging.producer.duration
metric (#11591) - Improve instrumentation suppression behavior (#11640)
- Propagate OpenTelemetry context through custom AWS client context for Lambda direct calls (#11675)
- Spring Native support for
@WithSpan
(#11757) - Support HTTP server instrumentation config properties in the Spring starter (#11667)
- Fix
http.server.active_requests
metric with async requests (#11638)
- Backport: Undertow, run response customizer on all ServerConnection implementations (#11548)
- Backport: Improve security manager support (#11606)
- Backport: Update the OpenTelemetry SDK version to 1.39.0 (#11603)
- Backport: Avoid NullPointerException when JMS destination is not available (#11577)
- Backport: Fix Spring Kafka instrumentation closing the trace too early (#11592)
- Backport: Fix gRPC instrumentation adding duplicates to metadata instead of overwriting (#11604)
- Backport: Fix request header capture corrupting tomcat request (#11607)
- Add support for Informix connection string parsing in JDBC instrumentation (#11542)
- Generate an SBOM for the javaagent artifact (#11075)
- Extract sql operation even when the sanitizer is disabled (#11472)
- Improve security manager support (#11466)
- Generate Log4j2Plugin.dat for OpenTelemetryAppender (#11503)
- Stop kotlin coroutine dispatcher from propagating context (#11500)
- Handle Vert.x sub routes (#11535)
- Undertow: run response customizer on all ServerConnection implementations (#11539)
- Allow configuring MDC key names for trace_id, span_id, trace_flags (#11329)
- Apply async end strategy to all kotlin coroutine flows (#11583)
- Fix container.id issue in some crio scenarios (#11382)
- Fix Finagle http client context propagation (#11400)
- Fix sporadically failing finagle test (#11441)
- Fix request header capture corrupting tomcat request (#11469)
- Fix Ktor server instrumentation when Ktor client library is not present (#11454)
- Fix gRPC instrumentation adding duplicates to metadata instead of overwriting (#11308)
- Avoid NullPointerException when JMS destination is not available (#11570)
- Fix Spring Kafka instrumentation closing the trace too early (#11471)
- Backport: Fix the logic to get container.id resource attribute (#11333)
- Backport: Update the OpenTelemetry SDK version to 1.38.0 (#11386)
- Backport: Fix a bug in undertow instrumentation related to HTTP/2 (#11387)
- Backport: Fix container.id issue in some crio scenarios (#11405)
- Instrument ConnectionSource in Akka/Pekko HTTP Servers (#11103)
- Use constant span name when using Spring AMQP AnonymousQueues (#11141)
- Add support for
RestClient
in Spring starter (#11038) - Add support for WebFlux server in Spring starter (#11185)
- Add async operation end strategy for Kotlin coroutines flow (#11168)
- Add automatic JDBC instrumentation to the Spring starter (#11258)
- Add
StructuredTaskScope
instrumentation (#11202) - Allow reading OTel context from reactor ContextView (#11235)
- Add spring starter r2dbc support (#11221)
- Enable instrumentation of Spring EJB clients (#11104)
- Support
otel.instrumentation.kafka.experimental-span-attributes
in Spring starter (#11263) - Remove incubating semconv dependency from library instrumentation (#11324)
- Add extension functions for Ktor plugins (#10963)
- Add dedicated flag for R2DBC statement sanitizer (#11384)
- Allow library instrumentations to override span name (#11355)
- Don't sanitize PostgreSQL parameter markers (#11388)
- Make statement sanitizer configurable for Spring Boot (#11350)
- Fix GraphQL instrumentation to work with latest version (#11142)
- Fix jmx-metrics on WildFly (#11151)
- End gRPC server span in onComplete instead of close (#11170)
- Fix a bug in undertow instrumentation related to HTTP/2 (#11361)
- Armeria http client reports wrong protocol version (#11334)
- Use daemon thread for scheduling in jmx-metrics BeanFinder (#11337)
- Backport: elasticsearch-java 7.17.20 has native instrumentation (#11098)
- Update the OpenTelemetry SDK version to 1.37.0 (#11118)
- Backport: graphql-java-22.0 support (#11171)
- Handle async requests in spring mvc library instrumentation (#10868)
- Support statement sanitizer enabled flag in lettuce 5.1 instrumentation (#10922)
- Remove AWS Active Tracing span linking (#10930)
- Make spring boot honor the standard environment variables for maps (#11000)
- Pulsar: use span links when receive telemetry is enabled (#10650)
- Rename
messaging.kafka.destination.partition
tomessaging.destination.partition.id
(#11086) - Support
service.instance.id
in spring starter (#11071) - Add library instrumentation for RestTemplateBuilder (#11054)
- Add cloud resource providers in spring starter (#11014)
- Fix disabling virtual thread context propagation (#10881)
- Fix virtual thread instrumentation for jdk 21 ea versions (#10887)
- Fix spring kafka interceptor wrappers not delegating some methods (#10935)
- AWS Lambda Runtime legacy internal handlers need to be ignored from being instrumented and so traced … (#10942)
- Metro: ignore UnsupportedOperationException when updating span name (#10996)
- Fix jedis plugin for 2.7.2 (#10982)
- Fix idle in druid instrumentation (#11079)
- Backport: Capture
http.route
for akka-http (#10777) - Update the OpenTelemetry SDK version to 1.36.0 (#10866)
- Remove deprecated spring properties (#10454)
- Add cloud resource detectors in javaagent, but keep them disabled by default (#10754)
- Add support for XXL-JOB (#10421)
- Don't fill network peer for cassandra SniEndPoint (#10573)
- Spring boot starter: add service.version detection, improve service.name detection (#10457)
- Always create a JMS consumer span (#10604)
- Ability to disable the automatic Logback appender addition (#10629)
- Allow excluding all methods of a class (#10753)
- Preserve attribute type for logback key value pairs (#10781)
- Add instrumentation for graphql 20 that does not use deprecated methods (#10779)
- Capture http.route for pekko-http (#10799)
- Normalize SQL IN(?, ?, ...) statements to "in(?)" to reduce cardinality of db.statement attribute (#10564)
- Capture
db.operation
for CREATE/DROP/ALTER SQL statement (#10020) - Ignore AWS Lambda Runtime internal handlers (#10736)
- Spring use SDK autoconfig (#10453)
- Add manifest resource detector (#10621)
- Add instrumentation for jetty 12 (#10575)
- add host.id resource provider (#10627)
- Spring starter includes annotation dependency (#10613)
- Don't fail spring application startup if sdk is disabled (#10602)
- Fix shading aws propagator (#10669)
- Disable http and rpc metrics when advice can not be applied (#10671)
- Fix native tests (#10685)
- Fix tomcat instrumentation when user includes wrong servlet api (#10757)
- Override xray trace header instead of appending (#10766)
- Fix spring boot starter failing without logback (#10802)
- Fix spring kafka context leak when batch listener is retried (#10741)
- Fix the logic to get container.id resource attribute (#10737)
- Configure kafka metrics reporter as class (#10855)
- Disable context propagation when virtual thread is switched to the carrier thread (#10854)
- The deprecated Jaeger exporter has been removed (#10524)
- Backport: Set route only on the SERVER span (#10580)
- Update the OpenTelemetry SDK version to 1.35.0 (#10524)
- Deprecated config properties have been removed in favor of the new names:
otel.instrumentation.kafka.client-propagation.enabled
->otel.instrumentation.kafka.producer-propagation.enabled
otel.instrumentation.netty.always-create-connect-span
->otel.instrumentation.netty.connection-telemetry.enabled
otel.instrumentation.http.capture-headers.client.request
->otel.instrumentation.http.client.capture-request-headers
otel.instrumentation.http.capture-headers.client.response
->otel.instrumentation.http.client.capture-response-headers
otel.instrumentation.http.capture-headers.server.request
->otel.instrumentation.http.server.capture-request-headers
otel.instrumentation.http.capture-headers.server.response
->otel.instrumentation.http.server.capture-response-headers
otel.instrumentation.http.client.emit-experimental-metrics
->otel.instrumentation.http.client.emit-experimental-telemetry
otel.instrumentation.http.server.emit-experimental-metrics
->otel.instrumentation.http.server.emit-experimental-telemetry
(#10349)
- The deprecated Jaeger exporter has been removed (#10241)
- Actuator instrumentation has been disabled by default.
You can enable using
OTEL_INSTRUMENTATION_SPRING_BOOT_ACTUATOR_AUTOCONFIGURE_ENABLED=true
or-Dotel.instrumentation.spring-boot-actuator-autoconfigure.enabled=true
. (#10394) - Spring starter: removed support for the deprecated @io.opentelemetry.extension.annotations.WithSpan annotation. Use @io.opentelemetry.instrumentation.annotations.WithSpan annotation instead. (#10530)
- Apache HttpClient 5 instrumentation (#10100)
- Spring starter: add distro version resource attribute (#10276)
- Add context propagation for rector schedulers (#10311)
- Spring starter: automatic addition of the OTel Logback appender (#10306)
- Spring starter: add resource detectors (#10277)
- Allow closing the observables for System and Process metrics gathered by OSHI (#10364)
- Spring starter: Allow to configure the OTel Logback appender from system properties (#10355)
- Spring starter: re-use sdk logic for configuring otlp exporters
(#10292)
- All available spring starter properties (including the new properties) can be found here
- You can also use auto-completion in your IDE to see the available properties in
application.properties
orapplication.yml
- Spring starter: add SystemOutLogRecordExporter (#10420)
- Spring starter: use duration parser of config properties (#10512)
- Spring starter: support
otel.propagators
(#10408) - Set route only on the SERVER span (#10290)
- Convert Apache HttpClient 4.3 library instrumentation to "low-level" HTTP instrumentation (#10253)
- Fix log replay of the Log4j 2 appender (#10243)
- Fix Netty addListener instrumentation (#10254)
- Fix Calling shutdown() multiple times warning in spring starter (#10222)
- Correctly fix NPE in servlet AsyncListener (#10250)
- add @ConditionalOnMissingBean to LoggingMetricExporter (#10283)
- Make Netty Instrumentation HttpServerRequestTracingHandler propagate "Channel Inactive" event to downstream according to parent contract (#10303)
- Improve rediscala instrumentation to address sporadic test failure (#10301)
- Undertow: restore attached context only when it is for different trace (#10336)
- Reactor kafka wrapper delegates to wrong method (#10333)
- Spring starter: add missing LoggingMetricExporterAutoConfiguration to spring factories (#10282)
- Spring starter: Fix MapConverter does not get initialized if some exporters are turned off (#10346)
- Update azure-core-tracing-opentelemetry version and fix double-collection for synchronous HTTP requests (#10350)
- Allow OSGI dynamic import for
io.opentelemetry
package when matching (#10385) - Use direct peer address in
client.address
when X-Forwarded-For is not present (#10370) - Netty: don't expose tracing handler in handlers map (#10410)
- Wrap request to avoid modifying attributes of the original request (#10389)
- Fix JarAnalyzer warnings on Payara (#10458)
- Return wrapped connection from
Statement.getConnection()
(#10554) - Spring starter: Fix
otel.propagators
(#10559) - Populate
server.address
andserver.port
in Cassandra instrumentation (#10357)
- Allow multiple invokedynamic InstrumentationModules to share classloaders (#10015)
- Backport: update jackson packages to v2.16.1 (#10198, #10199)
- Backport: implement forEach support for aws sqs tracing list (#10195)
- Backport: Bridge metric advice in OpenTelemetry API 1.32 (#10026)
- Update the OpenTelemetry SDK version to 1.34.1 (#10320)
- Backport: Handle authority from request when HttpHost is null (#10204)
- Backport: Null check for nullable response object in aws sdk 1.1 instrumentation (#10029)
- Backport: Make Netty Instrumentation HttpServerRequestTracingHandler propagate "Channel Inactive" event to downstream according to parent contract (#10303)
- Backport: Fix Netty addListener instrumentation (#10254)
- Backport: Update azure-core-tracing-opentelemetry version and fix sync suppression (#10350)
The 2.0.0 release contains significant breaking changes that will most likely affect all users, please be sure to read the breaking changes below carefully.
Note: 1.32.x will be security patched for at least 6 months in case some of the changes below are too disruptive to adopt right away.
- The default OTLP protocol has been changed from
grpc
tohttp/protobuf
in order to align with the specification. You can switch to thegrpc
protocol usingOTEL_EXPORTER_OTLP_PROTOCOL=grpc
or-Dotel.exporter.otlp.protocol=grpc
. - Micrometer metric bridge has been disabled by default. You can enable it using
OTEL_INSTRUMENTATION_MICROMETER_ENABLED=true
or-Dotel.instrumentation.micrometer.enabled=true
. - The OTLP logs exporter is now enabled by default. You can disable it using
OTEL_LOGS_EXPORTER=none
or-Dotel.logs.exporter=none
. - Controller spans are now disabled by default. You can enable them using
OTEL_INSTRUMENTATION_COMMON_EXPERIMENTAL_CONTROLLER_TELEMETRY_ENABLED=true
or-Dotel.instrumentation.common.experimental.controller-telemetry.enabled=true
. - View spans are now disabled by default. You can enable them using
OTEL_INSTRUMENTATION_COMMON_EXPERIMENTAL_VIEW_TELEMETRY_ENABLED=true
or-Dotel.instrumentation.common.experimental.view-telemetry.enabled=true
. ⚠️ ⚠️ Stable HTTP semantic conventions are now emitted⚠️ ⚠️ - TOO MANY CHANGES TO LIST HERE, be sure to review the full list of changes.
- Stable JVM semantic conventions are now emitted.
- Memory metrics
process.runtime.jvm.memory.usage
renamed tojvm.memory.used
process.runtime.jvm.memory.committed
renamed tojvm.memory.committed
process.runtime.jvm.memory.limit
renamed tojvm.memory.limit
process.runtime.jvm.memory.usage_after_last_gc
renamed tojvm.memory.used_after_last_gc
process.runtime.jvm.memory.init
renamed tojvm.memory.init
(still experimental)- Metric attributes
type
renamed tojvm.memory.type
pool
renamed tojvm.memory.pool.name
- Garbage collection metrics
process.runtime.jvm.gc.duration
renamed tojvm.gc.duration
- Metric attributes
name
renamed tojvm.gc.name
action
renamed tojvm.gc.action
- Thread metrics
process.runtime.jvm.threads.count
renamed tojvm.threads.count
- Metric attributes
daemon
renamed tojvm.thread.daemon
- Classes metrics
process.runtime.jvm.classes.loaded
renamed tojvm.classes.loaded
process.runtime.jvm.classes.unloaded
renamed tojvm.classes.unloaded
process.runtime.jvm.classes.current_loaded
renamed tojvm.classes.count
- CPU metrics
process.runtime.jvm.cpu.utilization
renamed tojvm.cpu.recent_utilization
process.runtime.jvm.system.cpu.load_1m
renamed tojvm.system.cpu.load_1m
(still experimental)process.runtime.jvm.system.cpu.utilization
renamed tojvm.system.cpu.utilization
(still experimental)
- Buffer metrics
process.runtime.jvm.buffer.limit
renamed tojvm.buffer.memory.limit
(still experimental)process.runtime.jvm.buffer.count
renamed tojvm.buffer.count
(still experimental)process.runtime.jvm.buffer.usage
renamed tojvm.buffer.memory.usage
(still experimental)- Metric attributes
pool
renamed tojvm.buffer.pool.name
- Memory metrics
- Lettuce CONNECT spans are now disabled by default. You can enable them using
OTEL_INSTRUMENTATION_LETTUCE_CONNECTION_TELEMETRY_ENABLED=true
or-Dotel.instrumentation.lettuce.connection-telemetry.enabled=true
. - The configuration property
otel.instrumentation.log4j-appender.experimental.capture-context-data-attributes
has been renamed tootel.instrumentation.log4j-appender.experimental.capture-mdc-attributes
. - MDC attribute prefixes (
log4j.mdc.
andlogback.mdc.*
) have been removed. - The artifact
instrumentation-api-semconv
has been renamed toinstrumentation-api-incubator
. - HTTP classes have been moved from
instrumentation-api-incubator
toinstrumentation-api
and as a result are now stable.
- Vert.x redis client (#9838)
- Reduce reactor stack trace depth (#9923)
- Implement
error.type
inspring-webflux
andreactor-netty
instrumentations (#9967) - Bridge metric advice in OpenTelemetry API 1.32 (#10026)
- Capture http.route for akka-http (#10039)
- Rename
telemetry.auto.version
totelemetry.distro.version
and addtelemetry.distro.name
(#9065) - Implement forEach support for aws sqs tracing list (#10062)
- Add http client response attributes to aws sqs process spans (#10074)
- Add support for
OTEL_RESOURCE_ATTRIBUTES
,OTEL_SERVICE_NAME
,OTEL_EXPORTER_OTLP_HEADERS
, andOTEL_EXPORTER_OTLP_PROTOCOL
for spring boot starter (#9950) - Add elasticsearch-api-client as instrumentation name to elasticsearch-api-client-7.16 (#10102)
- Add instrumentation for druid connection pool (#9935)
- Remove deprecated rocketmq setting (#10125)
- JMX metrics for Tomcat with 'Tomcat' JMX domain (#10115)
- Capture the SNS topic ARN under the 'messaging.destination.name' span attribute. (#10096)
- Add network attributes to rabbitmq process spans (#10210)
- Add UserExcludedClassloadersConfigurer (#10134)
- Apply both server attributes & network attributes to Lettuce 5.1 (#10197)
- Fix aws propagator presence check in spring boot starter (#9924)
- Capture authority from apache httpclient request when HttpHost is null (#9990)
- Fix NoSuchBeanDefinitionException with the JDBC driver configuration in spring boot starter (#9978)
- Null check for nullable response object in aws sdk 1.1 instrumentation (#10029)
- Fix using opentelemetry-spring-boot with Java 8 and Gradle (#10066)
- Fix transforming Java record types (#10052)
- Fix warnings from the spring boot starter (#10086)
- Resolve
ParameterNameDiscoverer
Bean Conflict inspring-boot-autoconfigure
(#10105)
- Old server/client socket getter methods deprecated (#9716)
- Allow enabling receive telemetry in kafka library instrumentation (#9693)
- Add JdbcTelemetry and JdbcTelemetryBuilder (#9685)
- Rename http.resend_count to http.request.resend_count (#9700)
- Define
url.scheme
in terms of logical operation in HTTP server semconv (when opting in to new semconv) (#9698) - Generate only consumer span for sqs receive message (#9652)
- Replace
(client|server).socket.(address|port)
attributes withnetwork.(peer|local).(address|port)
(when opting in to new semconv) (#9676) - Add capability for invokedynamic InstrumentationModules to inject proxies (#9565)
- Make
network.transport
andnetwork.type
opt-in (when opting in to new semconv) (#9719) - Factor in
X-Forwarded-Host
/Forwarded
when capturingserver.address
andserver.port
(when opting in to new semconv) (#9721) - Move class that should've been internal to internal package (#9725)
- Only set
server.port
whenserver.address
is set (when opting in to new semconv) (#9737) - Add messaging conventions to sqs spans (#9712)
- Make the JDBC driver config work with the OTel starter (#9625)
- Don't normalize the '-' character in HTTP header names when opting in to new semconv (#9735)
- Add instrumentation for jaxws metro 3.0+ (#9705)
- Change
user_agent.original
from recommended to opt-in on HTTP client spans (#9776) - Change the precedence between
:authority
andHost
headers (#9774) - Move capturing enduser.id attribute behind a flag (#9751, #9788)
- Remove conditional requirement on
network.peer.address
andnetwork.peer.port
(when opting in to new semconv) (#9775) - Change
client.port
from recommended to opt-in on HTTP server spans (when opting in to new semconv) (#9786) - Make
url.scheme
opt in for HTTP client metrics and makeserver.port
required (when opting in to new semconv) (#9784) - Change
http.request.body.size
andhttp.response.body.size
attributes from recommended to opt-in (when opting in to new semconv) (#9799) - Capture
http.route
in spring-cloud-gateway (#9597) - Always set messaging operation (#9791)
- Change
network.protocol.name
from opt-in to conditionally required (when opting in to new semconv) (#9797) - Support specifying
spring.application.name
in thebootstrap.properties
,bootstrap.yml
andbootstrap.yaml
(#9801) - Add process spans to aws-1 sqs instrumentation (#9796)
- Implement capturing message headers for aws1 sqs spans (#9824)
- Add process spans to aws2 sqs instrumentation (#9778)
- Add
service.name
to MDC (#9647) - Capture enduser attributes in Spring Security (#9777)
- Capture message id in aws1 sqs instrumentation (#9841)
- Implement capturing message headers for aws2 sqs spans (#9842)
- Move kafka metrics to separate instrumentation module (#9862)
- Capture logback logger context properties (#9553)
- Stable JVM semconv implementation: classes (#9821)
- Stable JVM semconv implementation: threads (#9839)
- Stable JVM semconv implementation: GC (#9890)
- Bridge incubator metrics apis (#9884)
- Ability to instrument logs before OTel injection into OTel appenders (#9798)
- Suppress instrumentation based on suppress Context key (#9739)
- Stable JVM semconv implementation: the rest (#9896)
- Fix armeria server instrumentation for http2 (#9723)
- Guard against null list from aws SQS lib (#9710)
- Fix parsing port from mariadb jdbc url (#9863)
- Improve disableShadowRelocate (#9715)
- Allow injection of helper bytecode as resources (#9752)
- Rewrite @Advice.Enter for indy advice (#9887)
- Apache Pekko (#9527)
- Add instrumentation for vert.x sql client withTransaction method (#9462)
- Improve hibernate reactive instrumentation (#9486)
- Support application.yaml files in SpringBootServiceNameDetector (#9515)
- Add Spring Boot service version finder / ResourceProvider (#9480)
- Split hibernate reactive instrumentation (#9531)
- Rework reactor netty context tracking (#9286)
- Improve spring data reactive instrumentation (#9561)
- Support akka http latest version (#9573)
- Enhance AWS SDK Instrumentation with Detailed HTTP Error Information (#9448)
- Update HTTP metrics' descriptions (#9635)
- Remove server.socket.address from HTTP/RPC metrics (#9633)
- Remove 0 bucket from stable HTTP metrics (#9631)
- Suppress nested http client spans in aws2 instrumentation (#9634)
- Implement spec changes for grpc server span error status (#9641)
- Improve vertx-sql client context propagation (#9640)
- Add url.scheme to HTTP client metrics (#9642)
- Add support for newVirtualThreadPerTaskExecutor (#9616)
- Implement error.type attribute in HTTP semconv (#9466)
- Emit package events (#9301)
- Added Automatic-Module-Name header to MANIFEST.MF in instrumentation libraries (#9140)
- Support paths in
peer.service
mappings (#9061) - Compile ktor library instrumentation for earlier kotlin version (#9661)
- Fix NPE happening when .headersWhen() is used (reactor-netty) (#9511)
- Spring webflux: add user spans as children of the controller span (#9572)
- Make netty ChannelPipeline removeLast return user handler (#9584)
- Experimental HTTP server metrics have been split out from
HttpServerMetrics
into a separate classHttpServerExperimentalMetrics
(#9259) HttpClientResend
has been renamed toHttpClientResendCount
,HttpRouteHolder
has been renamed toHttpServerRoute
(#9280)- The previously deprecated
otel.javaagent.experimental.extensions
configuration was removed (it is replaced byotel.javaagent.extensions
) (#9378)
- Add instrumentation for hibernate reactive (#9304)
- Don't log stack trace for expected exceptions in AWS SDK instrumentation (#9279)
- Add support for the AWS Secrets Manager JDBC URLs (#9335)
- More support for upcoming semantic convention changes (#9346 #9345, #9320, #9355, #9381, #9441)
- Unwrap Runnable in ThreadPoolExecutor before/after methods (#9326)
- Add javaagent to instrumentation bom (#9026)
- Add support for multiple headers in AlternateUrlSchemeProvider (#9389)
- Skip PreparedStatement wrappers (#9399)
- Disable Elasticsearch instrumentation for ES clients 8.10+ (#9337)
- Disable elasticsearch-rest-7.0 instrumentation when elasticsearch-java 8.10+ is present (#9450)
- Use attributes advice for HTTP & RPC metrics (#9440)
- Update Messaging semantic conventions to 1.21.0 (#9408)
- Add semconv to alpha bom (#9425)
- Ensure .class files aren't present in the resources library MR jar (#9245)
- Fixed getDefinedPackage lookup for OpenJ9 (8) (#9272)
- Ignore aws sdk v2 presign requests (#9275)
- Add logging timestamp for log4j1 appender instrument (#9309)
- Fix VerifyError with kotlin @WithSpan instrumentation (#9313)
- Fix serializing key to string in Lettuce instrumentation (#9347)
- Auto-instrumentation with JMX not working without a trigger (#9362)
- Return default DbInfo when connection is null (#9413)
- Fix instrumentation for reactor kafka 1.3.21 (#9445)
NetClientAttributesExtractor
andNetServerAttributesExtractor
have been deprecated (#9165, #9156)HttpClientAttributesGetter
now extendsNetClientAttributesGetter
andHttpServerAttributesGetter
extendsNetServerAttributesGetter
(#9015, #9088)- A couple of Spring starter configuration options have been renamed to match Java agent options:
otel.springboot.httpclients.enabled
->otel.instrumentation.spring-webmvc.enabled
orotel.instrumentation.spring-webmvc.enabled
depending on the underlying http clientotel.springboot.aspects.enabled
->otel.instrumentation.annotations.enabled
(#8950)
- Previously deprecated suppression key
executor
was removed from executors module, the new suppression key isexecutors
(#9064)
- Ktor (#9149)
- Elasticsearch rest client (#8911)
- Include OpenTelemetry logging appenders in the Spring Starter (#8945)
- Support RPC metrics under "stable" http semconv opt-in (#8948)
- Support the
http.request.method_original
attribute under "stable" semconv opt-in (#8779) - Make
server.socket.*
attributes on the HTTP server side opt-in (#8747) - Fill additional db.* attributes on DataSource#getConnection() (#8966)
- Lettuce instrumentation - optimization to avoid extra toString() (#8984)
- Allow overriding span name in spring web library instrumentation (#8933)
- Implement HTTP resend spec for Reactor Netty (excl CONNECT spans) (#8111)
- Set
process.runtime.jvm.system.cpu.load_1m
metric unit to{run_queue_item}
(#8777) - Update elasticsearch instrumentation to work with latest version (#9066)
- Reactor Netty: emit actual HTTP client spans on connection errors (#9063)
- Rename
http.*.duration
tohttp.*.request.duration
under "stable" semconv opt-in (#9089) - Snippet inject support for non-empty head tags (#8736)
- Update network.protocol.version
2.0
->2
and3.0
->3
(#9145) - @WithSpan support for kotlin coroutines (#8870)
- Fix incompatibility between quarkus resteasy reactive and vertx-web instrumentations (#8998)
- Fix
IllegalArgumentException
inMetroServerSpanNaming
(#9075) - Fix rector netty instrumentation under concurrency (#9081)
- Improve grpc cancellation propagation (#8957)
- Add missing timestamp for jboss logmanager instrumentation (#9159)
- Handle kafka
METRIC_REPORTER_CLASSES_CONFIG
being set to a List (#9155) - Fix NullPointerException with Pulsar and SSL (#9166)
- Netty 4.1: handle closing connection before the request completes (#9157)
- Micrometer bridge: use app's thread context class loader for callbacks into app (#9000)
- Fix context propagation in Executor#execute() for non-capturing lambdas (#9179)
- Ensure reactor netty spans are ended in the order they were started (#9203)
- Rename HTTP configuration settings
(#8758)
otel.instrumentation.http.capture-headers.client.request
→otel.instrumentation.http.client.capture-request-headers
otel.instrumentation.http.capture-headers.client.response
→otel.instrumentation.http.client.capture-response-headers
otel.instrumentation.http.capture-headers.server.request
→otel.instrumentation.http.server.capture-request-headers
otel.instrumentation.http.capture-headers.server.response
→otel.instrumentation.http.server.capture-response-headers
- Support latest armeria release (#8745)
- Support latest mongo release (#8785)
- Remove
server.{address,port}
from HTTP server metrics (#8771) - aws-sdk-2.2.: Support injection into SQS.SendMessageBatch message attributes (#8798)
- Log4j and Logback appenders opt-in to using GlobalOpenTelemetry (#8791)
- aws-sdk-2.2: SNS.Publish support with experimental messaging propagator flag (#8830)
- support for adding baggage to log4j 2 ContextData (#8810)
- Micrometer bridge: interpret no SLO config as no buckets advice (#8856)
- Instrumentation for Elasticsearch 8+ (#8799)
- Add support for schemaUrls auto-computed from
AttributesExtrator
s (#8864) - Initialize appenders in the spring boot starter (#8888)
- Support reactor-netty 1.0.34+ (#8922)
- Rename messaging operation "send" to "publish" per spec (#8929)
- Extract query arguments without regex on lettuce 6 (#8932)
- Fix logging timestamp (#8761)
- Minor fixes to the
server.*
attributes extrator (#8772) - Fix context leak on call to AmazonS3.generatePresignedUrl (#8815)
- Fix exception when pulsar has multiple service addresses (#8816)
- Fix NPE in aws instrumentation on duplicate TracingExecutionInterceptor (#8896)
- (micrometer) don't add . to empty unit with prometheus naming conventions (#8872)
- Set server span name for aborted requests in quarkus resteasy native (#8891)
- Fix instrumentation of Azure SDK EventHubs library (#8916)
- Fix http attributes of AWS SDK V2 instrumentation (#8931)
- Jersey 3.0 instrumentation suppression keys have changed from
jaxrs-2.0
tojaxrs-3.0
, and fromjersey-2.0
tojersey-3.0
(#8486) - The
opentelemetry-runtime-metrics
artifact has been renamed and split intoopentelemetry-runtime-telemetry-java8
andopentelemetry-runtime-telemetry-java17
(#8165, #8715) InetSocketAddressNetServerAttributesGetter
andInetSocketAddressNetClientAttributesGetter
have been deprecated (#8341, #8591)- The new HTTP and network semantic conventions can be opted into using either the system
property
otel.semconv-stability.opt-in
or the environment variableOTEL_SEMCONV_STABILITY_OPT_IN
, which support two values:http
- emit the new, stable HTTP and networking attributes, and stop emitting the old experimental HTTP and networking attributes that the instrumentation emitted previously.http/dup
- emit both the old and the stable HTTP and networking attributes, allowing for a more seamless transition.- The default behavior (in the absence of one of these values) is to continue emitting
the same HTTP and network semantic conventions that were emitted in
1.26.0
. - Note: this option will be removed later this year after the new HTTP and network semantic conventions are marked stable, at which time the Java instrumentation version will be bumped from 1.x to 2.0, and the old HTTP and network semantic conventions will no longer be supported.
- Use histogram advice in the Micrometer bridge (#8334)
- Disable by default gauge-based histograms in the Micrometer bridge (#8360)
- Specify ...jvm.gc.duration buckets using advice API (#8436)
- Make spanKindExtractor configurable in Ktor instrumentations (#8255)
- aws-sdk-2.2: Support non-X-Ray propagation for SQS (#8405)
- Implement HTTP resend spec for OkHttp 3 (#7652)
- Use jakarta.servlet.error.exception request attribute on jetty11 (#8503)
- Provide spring-boot-autoconfigure configuration metadata (#8516)
- Read AWS lambda tracing info from
com.amazonaws.xray.traceHeader
system property (#8368) - Skip not decorator check for classes in boot loader (#8594)
- Change context propagation debug failures from error to warn (#8601)
- JavaScript Snippet Injection Support Servlet 5 (#8569)
- Faster type matching (#8525)
- Explicitly disable the logging exporter by default to override the upcoming SDK autoconfigure module change in 1.27.0 and preserve existing behavior (#8647)
- Support otel.sdk.disabled in the spring boot starter (#8602)
- Add OTLP log exporter to the OpenTelemetry Spring Starter (#8493)
- Suppress Spring Actuator instrumentation when micrometer instrumentation is suppressed (#8677)
- Replace "1" with the appropriate units and don't fall back to "1" if the unit is unknown (#8668)
- Added setOpenTelemetry method to log4j appender (#8231)
- Fix using logback mdc instrumentation along with SocketAppender (#8498)
- Fix failure when kafka metrics reporter is set to an empty string (#8523)
- Remove extra space from kubernetes client span name (#8540)
- Fix jetty context leak (#8552)
- Filter out scalar Mono/Flux instances (#8571)
- End netty client span when channel is closed (#8605)
- Unregistering jmx gc metrics on close (#8650)
- Fix snippet injection ClassCastException (#8701)
- Only instrument the actual Spring
TaskScheduler
implementations (#8676)
java.util.concurrent
executors instrumentation suppression key has changed fromexecutor
toexecutors
(#8451)
- Add instrumentation for vertx-sql-client (#8311)
- Make net.transport an optional attribute (#8279)
- Introduce
@AddingSpanAttributes
annotation (#7787) - JavaScript snippet injection (#7650)
- Map
peer.service
also fromnet.sock.peer.name
(#7888) - Set up EarlyInitAgentConfig even earlier (#8413)
- Fix nested http.route (#8282)
- Fix undertow instrumentation with http pipelining (#8400)
- Fix http pipelining on Grizzly (#8411)
- Fix http pipelining on Netty 4.1 server (#8412)
- Allow transforming classes with missing field types (#8393)
- Fix reactor flux retry context leak (#8456)
- Introduce new incubating
InstrumenterBuilder
methods (#8392)
- Fix apache pulsar instrumentation missing from the Java agent (#8378)
- Apache Pulsar instrumentation name is changed from
io.opentelemetry.apache-pulsar-2.8
toio.opentelemetry.pulsar-2.8
and Apache Camel instrumentation name is changed fromio.opentelemetry.apache-camel-2.20
toio.opentelemetry.camel-2.20
(#8195) - Mojarra instrumentation suppression key has changed from
mojarra
tojsf-mojarra
and MyFaces instrumentation suppression key has changed frommyfaces
tojsf-myfaces
(#7811)
- R2DBC (#7977)
- Add JFR streaming metrics gatherer (#7886)
- Add library instrumentation for java http client (#8138)
- Move X-Ray Env Variable propagation to span link instead of parent (#7970)
- Reduce memory usage for ClassLoaderHasClassesNamedMatcher (#7866)
- Remove password from db.user parsed from JDBC url (#8106)
- Ignore appd agent classes (#8065)
- Add http client metrics to apache http library instrumentation (#8128)
- Instrument additional pulsar receive methods (#8171)
- Support latest Hibernate 6 version (#8189)
- Support spring boot service name detector when spring boot application is packaged in one jar (#8101)
- Support parsing Spring boot service name when more than one yaml is defined (#8006)
- Add option to capture logback key value pairs (#8074)
- Bridge agent logs into application's slf4j logger (#7339, #8228)
- Better container ID parsing (#8206)
- Pulsar batch receive instrumentation (#8173)
- Improve compatibility with SecurityManager (#7983)
- Instrument akka-http bindAndHandle (#8174)
- Spring scheduling: run error handler with the same context as task (#8220)
- Switch from http.flavor to net.protocol.* (#8131, #8244)
- Support latest Armeria release (#8247)
- Populate
process.command_args
for Java 9+ and improveprocess.command_line
for Java 8 (#8130)
- Fix TracingCqlSession ClassCastException (#8041)
- Kafka: avoid registering duplicate metrics reporter (#8099)
- Prefix baggage key not value when adding it to logback mdc (#8066)
- Fix error when using shardingsphere (#8110)
- Fix order of cxf handlers to enable symmetric tracing around jaxws handler chain (#8160)
- Fix javaagent armeria server instrumentation (#8281)
- Add HttpServerResponseCustomizer support for various servers (#8094, #8095, #8265, #8264, #8273, #8263, #8274, #8272)
- Add
removeJarVersionNumbers
build setting (#8116) - Add
disableShadowRelocate
build setting (#8117)
- Add Apache Pulsar client instrumentation (#5926, #7999, #7943, #8007)
- Add Jodd-Http instrumentation (#7868)
- Implement
messaging.kafka.*
attributes spec (#7824, #7860) - Make RxJava2 instrumentation Android-friendly (#7895)
- Support more semantic convention for RocketMQ trace (#7871)
- Instrumenting cassandra executeReactive method (#6441)
- Make the OpenTelemetry Logback appender work with GraalVM native images (#7989)
- Add baggage to Logback MDC; controlled by a configuration flag (#7892)
- Make the Spring Boot autoconfigure module work with Spring Boot 3 (#8028, #8051)
- Handle JMX MBean attributes with embedded dots (#7841)
- Fix
ClassCastException
when using-Dotel.jmx.target.system=tomcat
(#7884) - Fix NPE in the AWS SDK 2 instrumentation when request instrumentation is suppressed (#7953)
- Fix Kotlin coroutine context propagation (#7879)
- Fix the JAX-RS annotation instrumentation on Open Liberty (#7890)
- Fix an
AbstractMethodError
in the Logback instrumentation (#7967) - Fix NPE in the RabbitMQ instrumentation (#8021)
- Fix JMX metrics usage examples (#7877)
- Remove deprecated
instrumentation-api-semconv
code (#7838) - Look up helper class bytes when they are needed (#7839)
- Run smoke tests using Open Liberty 21.0.0.12 and 22.0.0.12 (#7878, #7857)
- Add additional groovy script classloaders to ignore list. (#7460)
- Make AggregationTemporality configurable for
OtlpInMemoryMetricExporter
in theagent-for-testing
module (#7904) - Upgrade to gradle 8.0.2 (#7910, 7978)
- Replace the test-sets plugin with Gradle test suites (#7930, #7933, #7932, #7931, #7929, #7946, #7945, #7944, #7943, #7942, #7928, #7951)
- Add a utility for tracking HTTP resends (#7986)
- Remove deprecated
messaging.url
attribute from messaging getter (#8008) - Add protocol name&version to net attribute getters (#7994)
- Test http client captured headers (#7993)
- Improve compatibility with other agents (#7916)
- Share timer class used by messaging instrumentations (#8009)
- Convert groovy tests to java (#7976, #7975, #7912)
- Check that extracting extension jar doesn't escape designated directory (#7908)
- Assert user agent when it is present in HTTP client tests (#7918)
- Update the OpenTelemetry SDK version to 1.24.0 (#8027)
- Provide ability to add HTTP server response headers, with Tomcat implementation (#7990)
- HTTP span names are now
"{http.method} {http.route}"
instead of just"{http.route}"
, reflecting the recent change in the HTTP semantic conventions (#7730) - Added the base version into library package names to make room for other base versions
without breaking backwards compatibility in the future once these artifacts are declared stable
(#7608,
#7752,
#7764)
io.opentelemetry.instrumentation.spring.web.SpringWebTelemetry
→io.opentelemetry.instrumentation.spring.web.v3_1.SpringWebTelemetry
io.opentelemetry.instrumentation.spring.webflux.SpringWebfluxTelemetry
→io.opentelemetry.instrumentation.spring.webflux.v5_0.SpringWebfluxTelemetry
io.opentelemetry.instrumentation.spring.integration.SpringIntegrationTelemetry
→io.opentelemetry.instrumentation.spring.integration.v4_1.SpringIntegrationTelemetry
io.opentelemetry.instrumentation.logback.v1_0.OpenTelemetryAppender
→io.opentelemetry.instrumentation.logback.mdc.v1_0.OpenTelemetryAppender
io.opentelemetry.instrumentation.apachedbcp.ApacheDbcpTelemetry
→io.opentelemetry.instrumentation.apachedbcp.v2_0.ApacheDbcpTelemetry
io.opentelemetry.instrumentation.c3p0.C3p0Telemetry
→io.opentelemetry.instrumentation.c3p0.v0_9.C3p0Telemetry
io.opentelemetry.instrumentation.graphql.GraphQLTelemetry
→io.opentelemetry.instrumentation.graphql.v12_0.GraphQLTelemetry
io.opentelemetry.instrumentation.guava.GuavaAsyncOperationEndStrategy
→io.opentelemetry.instrumentation.guava.v10_0.GuavaAsyncOperationEndStrategy
io.opentelemetry.instrumentation.hikaricp.HikariTelemetry
→io.opentelemetry.instrumentation.hikaricp.v3_0.HikariTelemetry
io.opentelemetry.instrumentation.kafkaclients.KafkaTelemetry
→io.opentelemetry.instrumentation.kafkaclients.v2_6.KafkaTelemetry
io.opentelemetry.instrumentation.oracleucp.OracleUcpTelemetry
→io.opentelemetry.instrumentation.oracleucp.v11_2.OracleUcpTelemetry
io.opentelemetry.instrumentation.ratpack.RatpackTelemetry
→io.opentelemetry.instrumentation.ratpack.v1_7.RatpackTelemetry
io.opentelemetry.instrumentation.reactor.ContextPropagationOperator
→io.opentelemetry.instrumentation.reactor.v3_1.ContextPropagationOperator
io.opentelemetry.instrumentation.viburdbcp.ViburTelemetry
→io.opentelemetry.instrumentation.viburdbcp.v11_0.ViburTelemetry
- Several instrumentation scope names have been fixed
(#7632)
io.opentelemetry.cxf-jaxrs-3.2
→io.opentelemetry.jaxrs-2.0-cxf-3.2
io.opentelemetry.jersey-2.0
→io.opentelemetry.jaxrs-2.0-jersey-2.0
orio.opentelemetry.jaxrs-3.0-jersey-3.0
as appropriateio.opentelemetry.resteasy-3.0
→io.opentelemetry.jaxrs-2.0-resteasy-3.0
io.opentelemetry.resteasy-3.1
→io.opentelemetry.jaxrs-2.0-resteasy-3.1
io.opentelemetry.resteasy-6.0
→io.opentelemetry.jaxrs-3.0-resteasy-6.0
io.opentelemetry.jws-1.1
→io.opentelemetry.jaxws-jws-api-1.1
io.opentelemetry.vertx-kafka-client-3.5
→io.opentelemetry.vertx-kafka-client-3.6
io.opentelemetry.hibernate-4.3
→io.opentelemetry.hibernate-procedure-call-4.3
- All methods in all
*Getter
classes ininstrumentation-api-semconv
have been renamed to use theget*()
naming scheme (#7619) - Return interfaces instead of concrete implementations in
instrumentation-api-semconv
(#7658)
- Support Spring Web 6 in library instrumentation (#7551)
- Add gRPC request metadata instrumentation (#7011)
- Pass context to content length http metrics meters (#7506)
- Update SQL span name for procedures (#7557)
- Ratpack services OpenTelemetry (#7477)
- Ignore janino classloader (#7710)
- Improve type resolution cache for classes in java package (#7714)
- End netty client span before callbacks (#7737)
- Support slf4j to log4j2 (#7656)
- Add
net.host.port
to thehttp.server.active_requests
metric (#7757) - Allow JDBC library instrumentation to use a custom OpenTelemetry instance to be more DI (e.g. Spring Boot) friendly (#7697)
- Dubbo: don't create spans for calls inside the same jvm (#7761)
- Bridge OpenTelemetry metrics batch API (#7762)
- Support Spring Boot 3 in autoconfigure module (#7784)
- Change Spring Scheduling to not capture span for one-time jobs (only repeated jobs) (#7760)
- Add instrumentation for hibernate 6 (#7773)
- Put
http.route
attribute ontohttp.server.duration
on Play framework request processing (#7801) - Add Jakarta JSF 3.0+ instrumentation (#7786)
- Capture
net.sock.peer.addr
more reliably in grpc client instrumentation (#7742)
- Fix potential startup failure (#7567)
- Fix NoClassDefFoundError happening when snakeyaml is used on a custom JRE (#7598)
- Fix inconsistent handling of
net.peer.port
in HTTP instrumentations (#7618) - Fix concurrency issue in OpenTelemetryDriver (#7628)
- Fix ClassCastException with redisson batch with atomic write option (#7743)
- Ensure kafka configuration remains serializable (#7754, #7789)
- Fix potential startup failure (#7567)
- Add resource injection for getResourceAsStream (#7476)
- GRPC: Adds peer socket address when the client call is ready (#7451)
- Make OpenTelemetryAppender.Builder public (#7521)
- Disable internal TaskScheduler spans in Spring Kafka instrumentation (#7553)
- Support Spring Web MVC in library instrumentation (#7552)
- Instrument JMS 3.0 (Jakarta) (#7418)
- Shade
application.io.opentelemetry
in agent extension class loader (#7519) - Use new reactor contextWrite when available (from reactor 3.4.0) (#7538)
- Make config file available in early agent initialization phase (#7550)
- Support Spring JMS 6.0 (#7438)
- Preserve original exception in jetty http client wrappers (#7455)
- Propagate original exception through kafka wrapper (#7452)
- Fix class file load error when using spring-guice together with spring-web instrumentation (#7447)
- Fix NPE in servlet AsyncListener on OpenLiberty (#7498)
- Muzzle logs should be logged using the io.opentelemetry.* logger name (#7446)
- Remove deprecated HTTP semconv code (#7259)
- Rocketmq 5: set context for async callback (#7238)
- HTTP semconv: filter out default peer/host ports (#7258)
- Allow multiple YAML configuration files for JMX rules (#7284)
- OpenTelemetryDriver better support for native images (#7089)
- Support Spring Kafka 3 (#7271)
- Add instrumentation for opentelemetry-extension-kotlin (#7341)
- Populate
messaging.kafka.message.offset
in all kafka instrumentations (#7374) - More flexible cgroupv2 container id parsing (and podman support) (#7361)
- Instrument spring-web 6 & spring-webmvc 6 (#7366)
- Change log4j MapMessage attribute names (#7397)
- Don't call Thread#setContextClassLoader() (#7391)
- Webflux instrumentation doesn't capture
http.status_code
in some cases (#7251) - Clean WeakConcurrentMap from background thread (#6240)
- Update gwt rpc span from INTERNAL to SERVER (#7342)
- JMXMetricInsight should log nothing at INFO level (#7367)
- Fix NullPointerException when uri is null (#7387)
- Agent context storage wrapper should not override other wrappers (#7355)
- Do not install GC metrics when GarbageCollectionNotificationInfo is not available (#7405)
- Fix connection pool timeouts unit (#7404)
- Allow disabling muzzle checks for specific methods (#7289)
- Fix the boms (#7252)
- Update SDK version from 1.19.0 to 1.20.1 (#7223)
Instrumentation annotations module is declared stable in this release
(io.opentelemetry.instrumentation:opentelemetry-instrumentation-annotations:1.20.0
).
- Renamed configuration property
otel.instrumentation.kafka.client-propagation.enabled
tootel.instrumentation.kafka.producer-propagation.enabled
and update code so that it only affects producer propagation (#6957) - Deprecated RocketMQ configuration property
otel.instrumentation.rocketmq-client.propagation
(#6958) - Deprecated
HttpServerAttributesExtractor#create(HttpServerAttributesGetter)
andHttpServerAttributesExtractor#builder(HttpServerAttributesGetter)
(#7020) - Renamed annotation instrumentation property name for the recent
opentelemetry-instrumentation-annotations
package fromotel.instrumentation.opentelemetry-annotations.exclude-methods
tootel.instrumentation.opentelemetry-instrumentation-annotations.exclude-methods
(#7196)
- Add meter version to runtime metrics (#6874)
- Auto-detect service name based on the jar name (#6817)
- okhttp: run our interceptor before other interceptors (#6997)
- Implement producer part of RocketMQ new client instrumentation (#6884)
- Ignore presto-jdbc shaded okhttp3 connection pool. (#7031)
- Record memory usage after garbage collection (#6963)
- Ignore trino shaded okhttp pool (#7114)
- Ignore Nashorn's class loader for performance reasons (#7116)
- Add gRPC library configuration for additionalServerExtractors (#7155)
- Implement consumer part of rocketmq new client instrumentation (#7019)
- Support cgroup v2 (#7167)
- Replace
runtime.jvm.gc.time
/runtime.jvm.gc.count
metrics withprocess.runtime.jvm.gc.duration
histogram (#6964)
- End reactor-netty HTTP client span properly on
Mono#timeout()
(#6891) - Capture net.host.name for netty (#6892)
- 6929 - fixing unit for runtime.jvm.gc.count (#6930)
- fix spring-webflux cast to PathPattern throws ClassCastException (#6872)
- Fix metric units (#6931)
- Fix RocketMQ ClassCastException on hook conflict (#6940)
- Handle UnsupportedClassVersionError in ServiceLoader on jdk9 (#7090)
- Avoid NPE when DirectWithAttributesChannel class is not available (#7133)
- Revert removing the mavenCentral repo from the muzzle check plugin (#6937)
- Make java.sql classes available to the agent and extensions (#7038)
- Bring back two public methods in
opentelemetry-instrumentation-api-semconv
that were mistakenly removed in v1.19.1 without a deprecation cycle (#7020)
- Capture
net.host.name
on netty SERVER spans (#6892)
- Deprecated
HttpServerAttributesGetter.serverName()
, and removedhttp.host
andhttp.server_name
attributes (#6709) - Removed previously deprecated configuration flags (see previous release notes for deprecations) (#6771)
- The restlet-1 instrumentation name has changed from
restlet-1.0
torestlet-1.1
(#6106)
- Netty 4.1 (#6820)
- Move in resource providers from core repo (#6574)
- Propagate client span context in doOnRequest (#6621)
- Update attribute key of rocketmq's message tag to use name from semantic conventions
(
messaging.rocketmq.message_tag
) (#6677) - Avoid muzzle matcher warning for the spring-boot-actuator-autoconfigure instrumentation (#6695)
- Add marker attribute for Log4j 2 (#6680)
- Add marker attribute for Logback (#6652)
- Add daemon attribute to process.runtime.jvm.threads.count (#6635)
- Link JMS receive span with the producer span (#6804)
- Link RabbitMQ receive span with the producer span (#6808)
- Run context customizers before span start instead of after (#6634)
- Strip sensitive data from the url (#6417)
- Extract
net.peer.{name,port}
on start for CLIENT spans (#6828)
- Fix scheduled job experimental attributes property (#6633)
- Fix AutoConfigurationCustomizer.addPropertiesSupplier not taking into account configuration-file (#6697)
- Fix Dubbo NPE and trace propagation issue (#6640)
- Fix directory separator in ProcessResource attributes (#6716)
- Fix instrumentation for tomcat 10.1.0 (#6766)
- Fix instrumentation name for jaxrs-2.0-annotations (#6770)
- Fix instrumentation for vert.x 4.3.4 (#6809)
- Fix Restlet v2
Message#getAttributes
calls (#6796) - Guard against null HttpContext (#6792)
The opentelemetry-instrumentation-api
artifact is declared stable in this release.
- There were a few late-breaking changes in
opentelemetry-instrumentation-api
, prior to it being declared stable:InstrumenterBuilder.addAttributesExtractors(AttributesExtractor...)
was removed, use insteadaddAttributesExtractors(AttributesExtractor)
oraddAttributesExtractors(Iterable<AttributesExtractor>)
SpanLinksExtractor.extractFromRequest()
was removed, use instead manual extractionErrorCauseExtractor.jdk()
was renamed toErrorCauseExtractor.getDefault()
ClassNames
utility was removed with no direct replacement
- The deprecated
io.opentelemetry.instrumentation.api.config.Config
and related classes have been removed (#6501) - Net attributes getters were updated to reflect latest specification changes (#6503)
- The deprecated
Ordered
interface was removed from theopentelemetry-javaagent-extension-api
, use instead theOrdered
interface fromopentelemetry-sdk-extension-autoconfigure-spi
(#6589)
- Add Spring Boot service name guesser / ResourceProvider (#6516)
- Move micrometer shim library instrumentation back (#6538)
- Add grpc status code to metrics attrs (#6556)
- Add mongo sanitization configuration (#6541)
- Add kafka client metrics to the javaagent instrumentation (#6533)
- Add experimental span attribute job.system (#6586)
- Add code attributes for Logback (#6591)
- Reactor instrumentation: do not make root context current (#6593)
- Fix default-enabled config (#6491)
- Fix new jdbc javaagent config (#6492)
- Fix jaxrs async instrumentation race (#6523)
- Fix spring webmvc instrumentation name (#6557)
- Fix spring boot
@WithSpan
handling (#6619)
- The
@WithSpan
and@SpanAttribute
annotations has been moved from theio.opentelemetry:opentelemetry-extension-annotations
artifact to theio.opentelemetry.instrumentation:opentelemetry-instrumentation-annotations
in order to live and evolve alongside the instrumentation itself. The instrumentation will continue to support the old artifact for backwards compatibility, but new annotation-based features will only be built out and supported with the new annotation artifact. InstrumenterBuilder.newInstrumenter()
is renamed toInstrumenterBuilder.buildInstrumenter()
(#6363)io.opentelemetry.instrumentation.api.config.Config
is deprecated (#6360)HttpCommonAttributesGetter.requestContentLengthUncompressed()
andresponseContentLengthUncompressed
are deprecated (#6383)- Ktor 2.0 instrumentation name is changed from
io.opentelemetry.ktor-1.0
toio.opentelemetry.ktor-2.0
(#6452) io.opentelemetry.opentelemetry-annotations-1.0
instrumentation name is changed toio.opentelemetry.opentelemetry-instrumentation-annotations-1.16
(#6450)- Liberty instrumentation names are changed from
io.opentelemetry.liberty
andio.opentelemetry.liberty-dispatcher
toio.opentelemetry.liberty-20.0
andio.opentelemetry.liberty-dispatcher-20.0
(#6456) - The 2-arg variant of HttpCommonAttributesGeter#statusCode() is deprecated (#6466)
- The
opentelemetry-spring-starter
artifact has been renamed toopentelemetry-spring-boot-starter
, theopentelemetry-zipkin-exporter-starter
artifact has been renamed toopentelemetry-zipkin-spring-boot-starter
, and theopentelemetry-zipkin-exporter-starter
artifact has been renamed toopentelemetry-zipkin-spring-boot-starter
(#6453) - Update net semantic convention changes based on recent specification changes:
net.peer.ip
renamed tonet.sock.peer.addr
,net.host.ip
renamed tonet.sock.host.addr
,net.peer.name
renamed tonet.sock.peer.name
for socket-level instrumentation, andNetClientAttributesGetter.peerIp()
,NetServerAttributesGetter.peerIp()
, andNetServerAttributesGetter.peerPort()
are deprecated (#6268)
- Move buffer pool metrics out of experimental (#6370)
- Add code attributes to several instrumentations (#6365)
- Add http.client|server.request|response.size metrics (#6376)
- Add Kafka instrumentation to the Spring Boot starter (#6371)
- Extract HTTP request & response content length from headers (#6415)
- Support DataDirect and Tibco Jdbc URLs (#6420)
- Set http.route in spring-autoconfigure webmvc instrumentation (#6414)
- Grizzly: capture all matching request & response headers (#6463)
- Capture messaging header value as span attribute (#6454)
- Add JDBC-specific sanitizer property (#6472)
- Fix duplicate spans for Quarkus gRPC server (#6356)
- Update Kafka library instrumentation to support version 3.0.0 and later (#6457)
- Mongodb: avoid duplicate tracing (#6465)
- Fix netty instrumentation NoSuchElementException (#6469)
- Config has been replaced by ConfigProperties in Javaagent extensions SPIs
- The deprecated TimeExtractor has been removed
- The
opentelemetry-instrumentation-api-annotation-support
artifact has been renamed toopentelemetry-instrumentation-annotation-support
- The
opentelemetry-annotations
instrumentation suppression key has been renamed toopentelemetry-extension-annotations
- The 'otel.javaagent.experimental.use-noop-api' flag has been removed, as this capability is now
available via the
otel.experimental.sdk.enabled
flag
- C3P0 connection pool metrics (#6174)
- JVM buffer pool metrics (#6177)
- Kafka client metrics (#6138)
- dropwizard-metrics to OpenTelemetry metrics bridge (#6259)
- C3P0 connection pool metrics (#6174)
- JVM buffer pool metrics (#6177)
- Kafka client metrics (#6138)
- Add metrics & micrometer support to spring-boot-autoconfigure (#6270)
- Spring Kafka library instrumentation (#6283)
- Update GraphQL instrumentation to match spec (#6179)
- Make rpc.grpc.status_code required (#6184)
- Always pass Context when recording HttpServerMetrics (#6223)
- Capture enduser.id in servlet instrumentation (#6225)
- Support metric view configuration file in the Javaagent (#6228)
- Aws sdk2 sqs context propagation (#6199)
- More Spring JMS support (#6308)
- Hikaricp: Avoid registering duplicate metrics (#6325)
- Fix liberty net.peer.port (#6274)
- The
opentelemetry-jboss-logmanager-1.1
artifact has been renamed toopentelemetry-jboss-logmanager-appender-1.1
- The play instrumentation name has changed from
play
toplay-mvc
(#6106) - The vertx-http-client instrumentation name has changed from
vertx-client
tovertx-http-client
(#6106) - The metric
process.runtime.java.memory.max
has been renamed toprocess.runtime.java.memory.limit
(#6161)
- JVM classes metrics (#6069)
- JVM threads metrics (#6070)
- Vibur DBCP connection pool metrics (#6092)
- tomcat-jdbc connection pool metrics (#6102)
- JVM cpu metrics (#6107)
- Oracle UCP connection pool metrics (#6099)
- Apache DBCP2 datasource metrics (#6175)
- Add instrumentation for JAX-RS 3.0 (#6136)
- JVM classes metrics (#6069)
- JVM threads metrics (#6070)
- Vibur DBCP connection pool metrics (#6092)
- tomcat-jdbc connection pool metrics (#6102)
- JVM cpu metrics (#6107)
- Oracle UCP connection pool metrics (#6099)
- Apache DBCP2 datasource metrics (#6175)
- Enable grizzly instrumentation by default (#6049)
- Instrumentation for redisson 3.17.2+ (#6096)
- Instrumentation for jboss-logmanager getMdcCopy() (#6112)
- Allow specifying a comma separated list of extensions (#6137)
- Fix redisson ClassCastException (#6054)
- Fix debug logging (#6085)
- HttpURLConnection instrumentation can capture wrong http.method (#6053)
- fix bug: get return type in a wrong way for method instrumentation (#6118)
- Show correct runnable name in spring scheduling actuator (#6140)
- Fix ClassCastException in JDBC instrumentation (#6088)
- Remove TimeExtractor and use internal API for setting start/end timestamps (#6051)
- Change SpanStatusExtractor to use a builder that can set status description (#6035)
- Make gRPC metadata available to AttributeExtractors (#6125)
- The
opentelemetry-log4j-appender-2.16
artifact has been renamed toopentelemetry-log4j-appender-2.17
- The
opentelemetry-log4j-context-data-2.16-autoconfigure
artifact has been renamed toopentelemetry-log4j-context-data-2.17-autoconfigure
- Micrometer library instrumentation has been removed as it has been moved to the core repo and
is now published under
io.opentelemetry:opentelemetry-micrometer1-shim
- The rxjava javaagent instrumentation names for suppression have changed to
rxjava
AgentListener#beforeAgent()
has been deprecated, as it is not expect to be needed by extensions authorsConfigPropertySource
has been deprecated in favor ofConfigCustomizer
- Several changes in the Instrumentation API
RequestMetrics
has been renamed toOperationMetrics
RequestListener
has been renamed toOperationListener
ErrorCauseExtractor#extractCause()
has been renamed toextract()
ContextCustomizer
andRequestListener
start()
/end()
methods have been renamed toonStart()
/onEnd()
- The
opentelemetry-javaagent-instrumentation-api
artifact has been merged into theopentelemetry-javaagent-extension-api
artifact
- Add jboss-logmanager mdc support (#5842)
- Spring-kafka single record instrumentation (#5904)
- Add metrics instrumentation for grpc (#5923)
- Add vertx-kafka-client instrumentation (#5973, #5982)
- Hide the GC runtime metrics behind an experimental config flag (#5990)
- Add HikariCP connection pool metrics (#6003)
- Enable span suppression by SpanKey by default (#5779)
- record exception in dubbo high version (#5892)
- Introduce LocalRootSpan (replacing ServerSpan) (#5896)
- Add javaagent<->application context bridge for HttpRouteHolder (#5838)
- Exclude spring temporary type matching class loader (#5912)
- Load agent classes child first (#5950)
- Avoid looking up annotation types during type matching (#5906)
- Add an SPI for customizing Config just before it's set (#6010)
- Fix duplicate class error on Android build (#5882)
- Avoid npe in netty 4.1 instrumentation (#5902)
- Fix logging exporter autoconfiguration issue (#5928)
- fix NPE for commons-httpclient v3.1 (#5949)
- Exclude duplicate project classes from inst/ (#5957)
- Ignore known problematic jdbc wrappers (#5967)
- Fix default enabled for runtime and oshi metrics (#5989)
- Mitigate against another kafka leak (#6021)
- Fix duplicate class error on Android build (#5882)
- Fix spring-kafka single record instrumentation (#5904)
- Micrometer instrumentation is now automatically applied to spring-boot-actuator apps
- Some configuration properties have been renamed:
otel.instrumentation.common.experimental.suppress-controller-spans
→otel.instrumentation.common.experimental.controller-telemetry.enabled
(important: note that the meaning is inverted)otel.instrumentation.common.experimental.suppress-view-spans
→otel.instrumentation.common.experimental.view-telemetry.enabled
(important: note that the meaning is inverted)otel.instrumentation.netty.always-create-connect-span
→otel.instrumentation.netty.connection-telemetry.enabled
otel.instrumentation.reactor-netty.always-create-connect-span
→otel.instrumentation.reactor-netty.connection-telemetry.enabled
- Runtime memory metric names were updated to reflect semantic conventions
- Micrometer library instrumentation has been deprecated as it has been moved to the core repo and
is now published under
io.opentelemetry:opentelemetry-micrometer1-shim
- Library instrumentation entry points have been renamed from
*Tracing
to*Telemetry
- Elasticsearch rest client low cardinality span names (#5584)
- Implement "Prometheus mode" for better micrometer->OTel->Prometheus support (#5537)
- Apply micrometer instrumentation to spring-boot-actuator apps (#5666)
- Sql sanitizer: handle double quoted table names (#5699)
- Spring Boot Starter service-name is constant (#5359)
- Update runtime memory metrics to reflect semantic conventions (#5718)
- change rpc type in apache dubbo (#5432)
- Rework context propagation to redisson async callback (#5748)
- Resolve end strategy after WithSpan method instead of before. (#5756)
- Allow scanning instrumented reactor publishers and only allow registe… (#5755)
- Faster type matching (#5724)
- Use UnsynchronizedAppenderBase as base class for our logback appender (#5818)
- Do not set the http.route attribute in JSF instrumentations (#5819)
- Use micrometer1-shim in micrometer javaagent instrumentation, deprecate library instrumentation (#5820)
- Rename netty
always-create-connect-span
property toconnection-telemetry
(#5834) - Update the http.route attribute even for not sampled server spans (#5844)
- Fix possible deadlock (#5585)
- Prevent possible deadlock in downstream distro (#5830)
- Limit problems from kafka iterator instrumentation thread context leak (#5826)
- Remove deprecated methods from instrumentation-api and library instrumentations (#5575)
- Split out RpcAttributesGetter (#5548)
- Run tests with jdk17 (#5598)
- Split out MessagingAttributesGetter (#5626)
- Run Gradle and compile code with Java 17 (#5623)
- Rename library entrypoints to Telemetry (#5624)
- Add InstrumenterBuilder.addRequestListener (#5655)
- Simplify HttpUrlConnection instrumentation (#5673)
- Convert all logging statements from slf4j to jul (#5674)
- Allows passing an OpenTelemetry instance to registerObservers() methods. (#5716)
- Make it possible to register multiple helper resources under the same… (#5703)
- Split out instrumentation-api-semconv (#5721)
- Move ClassNames & SpanNames to .util package (#5746)
- Library instrumentation should read its version from a file (#5692)
- Rename view and controller suppression config properties (#5747)
- Deprecate AttributesExtractor#set() method (#5749)
- Cleanup Config & ConfigBuilder API (#5733)
- Instrumenter instrumentation version and schema url (#5752)
- Add Azure SDK instrumentation (#5467)
- Use repository interface name in spring data operation name (#5352)
- Change the way Micrometer LongTaskTimer is bridged (#5338)
- Updates to http.server_name (#5369)
- Support forwarded proto field and x-forwarded-proto (#5357)
- Remove server span peer name (#5404)
- Add peer service support back to couchbase26 (#5451)
- Remove duplicative JAXRS HttpClient instrumentation (#5430)
- Add experimental thread attributes for logs (#5474)
- Add log4j 1.2 appender MDC capture (#5475)
- Capture logback formatted message (#5497)
- Add JBoss java.util.logging support (#5498)
- Disable the messaging receive span telemetry by default (#5500)
- Remove old experimental properties in CapturedHttpHeaders (#5524)
- Avoid conflicts in Micrometer description mapping (#5452)
- Fix another reverse lookup (#5393)
- Regression in loading the prometheus exporter (#5408)
- Fix muzzle failure on calls to primitive array clone (#5405)
- Fix regression in spring-scheduling span name (#5436)
- Fix android desugaring for HashMap.forEach (#5468)
- Fix duplicate class definition of ContextDataProvider (#5528)
- Do not propagate gRPC deadline when propagating OTel context via javaagent (#5543)
- Split out CodeAttributesGetter (#5342)
- Add prometheus smoke test (#5417)
- Set custom gRPC client/server span name extractor (#5244)
- Split out DbClientAttributesGetter and SqlClientAttributesGetter (#5354)
- Add builders for setting optional attributes on HTTP extractors (#5347)
- Write http server tests in java (#5501)
- Deprecate CapturedHttpHeaders and replace it with builder methods (#5533)
- Update to Groovy 4 (#5532)
- Regression in loading the prometheus exporter (#5408)
- The previous release (1.10.0) deprecated the entire
io.opentelemetry.instrumentation.api.tracer
package in theinstrumentation-api
artifact, and the package was removed in this release. - The javaagent
-slim
artifact has been dropped in this release, because the exporters are much smaller now and there is no longer a significant size difference between the-slim
and default artifacts. - The
opentelemetry-aws-lambda-1.0
has been split into two artifactsopentelemetry-aws-lambda-core-1.0
andopentelemetry-aws-lambda-events-2.2
.
- Spring RMI instrumentation (#5033)
- Ratpack httpclient (#4787)
- Add
http.route
to server spans where route was already being captured for span name (#5086, #5240, #5242, #5241, #5239) - Use RPC attributes from spec for AWS SDK (#5166)
- SdkTracerProvider auto closed as separate Context Bean (#5124) (#5125)
- Support redisson 3.16.8+ (#5201)
- Support AWS SDK v1 request object subclasses. (#5231)
- Remove slim artifact (#5251)
- kotlinx-coroutines-reactor context propagation (#5196)
- Log a warning whenever GlobalOpenTelemetry.set() is called (#5264)
- Use
http.route
inHttpServerMetrics
(#5266) - Use VirtualField for associating netty listener with wrapper (#5282)
- Add code attributes to spring-scheduling spans (#5306)
- Propagate context into redisson async callback (#5313)
- Add max measurements to Micrometer Timer & DistributionSummary (#5303)
- Make it possible to configure base time unit used by the Micrometer bridge (#5304)
- Make HttpClientMetrics report low cardinality metrics (#5319)
- Implement NamingConvention support in Micrometer bridge (#5328)
- Add net.peer.name and net.peer.port attributes for grpc client span (#5324)
- Split lambda instrumentation into core and events (#5326)
- Add jaeger remote sampler to agent (#5346)
- Weak cache optimization (#5344)
- Several micrometer instrumentation fixes (#5118)
- Fix serialisation exception on default lambda events (#4724)
- NoSuchMethodError when using agent and modules (JPMS) (#5169)
- Spring boot cloud gateway, context propagation broken (#5188)
- Akka http server span names are always akka.request #3478 (#5150)
- Recover from duplicate class definition errors (#5185)
- Fix serialization for quartz JobExecutionContext (#5263)
- End jedis span when operation actually ends (#5256)
- Enable oshi ProcessMetrics in javaagent (#5281)
- Add missing return type matchers to the executor instrumentation (#5294)
- Fix triggering of DNS lookup (#5297)
- Avoid potential for reverse name lookup (#5305)
- Fix WeakConcurrentMap memory leak (#5316)
- AWS Lambda instrumentation requires jackson and lambda-events on the classpath (#5326)
- Convert InstrumentationTestRunner from interface to abstract class (#5112)
- Parameterize VirtualField field type (#5165)
- Remove old TraceUtils and use InstrumentationTestRunner#run*Span() (almost) everywhere (#5160)
- Remove deprecated tracer API (#5175)
- Remove HttpServerTest#extraAttributes() method (#5176)
- Rename ServerSpanNaming to HttpRouteHolder (#5211)
- Don't run testLatestDeps on alpha/beta/rc versions (#5258)
- Refactor HTTP attributes extractors to use composition over inheritance (#5030, #5194 #5267)
- Refactor AttributesExtractor so that it extracts route from Context (#5288)
- Publish gradle-plugins to Maven Central (#5333)
- Regression in project reactor context propagation instrumentation (#5188)
- Recover from duplicate class definition errors (#5185)
- StringIndexOutOfBoundsException in AWS SDK v1 when using request object subclass (#5231)
- Update to OTel SDK 1.10.1 (#5218)
- The
opentelemetry-log4j-2.13.2
artifact has been renamed toopentelemetry-context-data-2.16-autoconfigure
- The
opentelemetry-logback-1.0
artifact has been renamed toopentelemetry-logback-mdc-1.0
- The
opentelemetry-ratpack-1.4
artifact has been renamed toopentelemetry-ratpack-1.7
and only supports Ratpack 1.7 and above now
- Logback appender instrumentation to send logs through the OpenTelemetry logging pipeline (#4939, #4968)
- Log4j 2.x appender instrumentation to send logs through the OpenTelemetry logging pipeline (#4944, #4959, #4966)
- Log4j 1.2 appender instrumentation to send logs through the OpenTelemetry logging pipeline (#4943)
- java.util.logging instrumentation to send logs through the OpenTelemetry logging pipeline (#4941)
- Micrometer instrumentation to send micrometer metrics through the OpenTelemetry metrics pipeline (#4919, #5001, #5017)
- Logback appender to send logs through the OpenTelemetry logging pipeline (#4984)
- Log4j 2.x appender to send logs through the OpenTelemetry logging pipeline (#4375, #4907)
- Ktor instrumentation (#4983)
- Micrometer instrumentation to send micrometer metrics through the OpenTelemetry metrics pipeline (#5063)
- Renamed Apache Dubbo and Log4j MDC library artifacts (#4779)
- Added http4 handler to camel instrumentation (#4650)
- Capture servlet request parameters (#4703)
- Propagate Context instead of SpanContext in Kafka instrumentation (#4806)
- Instrument ContextPropagationOperator to bridge lib/agent calls (#4786)
- Add shouldStart() call to Armeria server instrumentation (#4843)
- Capture RPC metrics (#4838)
- Update log4j library base version (#4914)
- Rename log4j-thread-context modules to log4j-context-data (#4957)
- Support latest oshi version (#4993)
- Support latest RxJava version (#4954)
- Create producer span from spring integration instrumentation (#4932)
- Capture servlet request parameters at the end of the request (#5019)
- Don't extract deprecated cassandra keyspace attribute (#5041)
- Add OTLP logs exporters (#5060, #5088)
- End redisson span when the operation actually ends (#5073)
- Don't capture high-cardinality http.target as metrics attribute (#5081)
- Remove virtual field interfaces from reflection results (#4722)
- Work around jvm crash on early 1.8 (#4345)
- Fix http.url handing in vert.x 3 http client (#4739)
- Capture missing RMI spans (#4764)
- Avoid crashing on early 1.8 openjdk vms (#4789)
- Fix Quarkus correlation (#4883)
- Fix RabbitMQ instrumentation consumption on empty headers (#4903)
- Fix NPE in Apache HttpClient 4.0 instrumentation (#4913)
- Fix NPE in RocketMQ instrumentation (#4901)
- Fix time units in HTTP & RPC metrics (#4963)
- Fix some gauge types (#4962)
- Fix context propagation for undertow async dispatch (#4950)
- Fix redefinition failure on openj9 (#5009)
- Fix NPE in rmi server instrumentation (#5042)
- Merge start and end time extractors (#4692)
- Move cache implementations to internal package (#4746)
- Reorganize shared servlet code (intro to #4317) (#4785)
- Move
AppServerBridge
andMappingResolver
toservlet-common:bootstrap
(#4817) - Move
ServletContextPath
toservlet-common:bootstrap
(#4824) - Expose AutoConfiguredOpenTelemetrySdk to AgentListener (#4831)
- Deprecate the Tracer API (#4868)
- Remove ConfigPropertiesAdapter as it's no longer needed (#4888)
- Refactor
ServerSpanNaming
(in preparation forhttp.route
) (#4852) - Move SpanKey to internal package (#4869)
- Fix reactor-netty memory/connection leak (#4867)
- Shade class references within AWS SDK service files (#4752)
- Don't report 400 level as error for SERVER spans (#4403)
- Netty instrumentation now captures
http.scheme
(#4446, #4576) - Stabilize HTTP headers capturing configuration property names (#4459)
- Add metrics to remaining http instrumentation (#4541)
- Remove hibernate session spans (#4538)
- Support Jedis 4 (#4555)
- Trace DNS resolution in Netty 4.1 and reactor-netty (#4587, #4627)
- Update garbage collector instruments to be async counters (#4600)
- Update HTTP metrics view to match the specification (#4556)
- Improve Spring Integration interceptor ordering (#4602)
- Support Restlet 2.0 (#4535)
- Improved capture of couchbase queries (#4615)
- Trace SSL handshakes in netty 4.0 and 4.1 (#4635, #4604)
- Capture exception on finatra controller spans (#4669)
- Capture exception on async servlet spans (#4677)
- Automatic AWS library instrumentor (#4607)
- Support spring boot 2.6.0 (#4687)
- Preserve caught netty exception in the context instead of calling end() (#4413)
- Extract net attributes both on start and on end in netty HTTP client (#4420)
- Capture metric dimensions from end attributes also (#4430)
- Avoid logging servlet3 muzzle failure when running on servlet2 (#4474)
- Fix JettyHttpClient9TracingInterceptor NullPointerException (#4527)
- Fix context propagation in tomcat thread pool (#4521)
- Add missing java.util.logging.Logger methods to PatchLogger (#4540)
- Fix ClassCircularityError when running with security manager (#4557)
- Fix sun.misc.Unsafe generation on Java 17 (#4558)
- Fix IndexOutOfBounds in apache http clients (#4575)
- Fix RMI instrumentation on Java 17 (#4577)
- Fix Spring Integration instrumentation name (#4601)
- Capture instrumentation version provided by application tracer correctly when using agent (#4630)
- Ensure that netty 4.0 instrumentation is not applied to 4.1 (#4626)
- Fix muzzle problems happening when netty without SSL is used (#4631)
- Fix memory leak when using ktor-client-java (#4637)
- Fix quartz instrumentation name (#4657)
- Fix Spring Integration context leak (#4673)
- Fix exemplars (#4678)
- Fix and enforce Android support (#4671, #4667 #4505)
- Migrate to Spock 2 (#4458)
- Rename
newBuilder()
tobuilder()
(#4475) - Sync gradle-plugins version with main project (#4248)
- Muzzle match only once in each class loader (#4543)
- Inject helper resources only once (#4573)
- Improve muzzle check for constructors (#4591)
- Add version to the InstrumenterBuilder and Instrumenter (#4611)
- Add a ClassAndMethod class to Instrumentation API (#4619)
- Implement a dedicated reactor-netty 1.0 instrumentation (#4662)
- Remove gRPC dependency for export (#4674)
- Start using Gradle Enterprise instance (#4663)
Due to an issue in the publishing infrastructure, a bad release was published as 1.8.0. Do not use it.
- Change the default javaagent artifact to have exporters, introduce new
-slim
artifact, and deprecate the-all
artifact (#4106) - Support jlinked images without jdk.unsupported module (#4154) (#4124)
- Added experimental option to suppress messaging receive spans (#4187) (#4204)
- Refine 404 handling in Restlet instrumentation (#4206)
- Remove dynamo db.name attribute (#4208)
- Remove capturing http.url in server instrumentation in favor of http.scheme, http.host and http.target (#4209)
- Intern db info to reduce memory consumption (#4263)
- Better JAX-RS async cancel handling (#4279)
- Extract HTTP request/response headers as span attributes (#4237, #4309, #4320, #4321, #4328, #4395)
- Support kafka streams 3 (#4236)
- AWS lambda - improvements in custom type handling in wrappers, SQS event wrapper added (#4254)
- Add code attributes to quartz spans (#4332)
- Collect more attributes from servlet instrumenter (#4356)
- Allow reactor instrumentation to pick up spans from reactor context (#4159)
- Hide virtual field accessor interface methods from reflection (#4390)
- Fix spring context reload issue (#4051)
- Remove incorrect lettuce db.statement attribute (#4160)
- Fix tomcat async spans (#4339)
- Add start/end time to RequestListener (#4155)
- Add context customizer hook to Instrumenter API (#4167)
- Transform lambda classes (#4182)
- Separate HTTP client/server AttributesExtractors (#4195)
- Introduce muzzle-specific interface to InstrumentationModule (#4207)
- Make it possible to use InstrumentationContext (now VirtualField) from library instrumentation (#4218)
- Add functionality to generate API changes (#4285)
- Split NetAttributesExtractor into NetClientAttributesExtractor and NetServerAttributesExtractor (#4287)
- Back VirtualField with a volatile field (#4355)
- Convert AttributesExtractor to interface (#4363)
- Rename some
*InstrumenterBuilder
classes to*InstrumenterFactory
(#4391) - rename
newBuilder()
tobuilder()
(#4407)
- The 1.6.1 patch release was not backwards compatible with javaagent extensions built against 1.6.0 (#4245)
- Fix possible JDBC instrumentation deadlock (#4191)
- Extract Jedis 3 net attributes from InetSocketAddress (#3912)
- Add option to suppress controller and view spans (#3865)
- Capture http.user_agent for AsyncHttpClient (#3930)
- Instrument spring-kafka batch message listeners (#3922)
- Use unsafe to inject classes to the bootstrap class loader (#4026)
- Some performance optimizations (#4004, #4006, #4008, #4013, #4014)
- Do not fallback to net attributes for http.client_ip (#4063)
- Start a CONSUMER span for Kafka poll() (#4041)
- Support otlp http exporter (#4068)
- Better grpc events (#4098)
- Bridge span keys defined in instrumentation-api (#3911)
- Hide generated fields and methods from reflection (#3948)
- Remove invalid message header (#3958)
- Fix memleak in the Netty ChannelPipeline instrumentation (#4053)
- Fix grpc instrumentation of callbacks (#4097)
- Bridge trace builder (#4090)
- Remove original handler when removelast in netty (#4123)
- Deprecate old extensions (#3825)
- Add request parameter to EndTimeExtractor (#3947)
- Make Config behave exactly as SDK DefaultConfigProperties (#4035)
- Fix extension shading (#4064)
- Add error parameter to EndTimeExtractor and AttributesExtractor#onEnd() (#3988)
- Allow adding multiple ContextStore fields to one key class (#4067, #4084, #4110)
- Fix parsing of unclean map values in Config (#4032)
- Fix unbounded metrics cardinality, which in particular causes memory leak when not using any metrics exporter (#3972)
- Fix broken Android level 21-25 support in OkHttp 3 library instrumentation (#3910)
- Fix maven central pom file for the opentelemetry-javaagent artifact (#3929)
- Fix maven central pom file for the opentelemetry-agent-for-testing artifact (#3935)
- Library instrumentation for Apache HTTP Client 4.3 (#3623)
- Library instrumentation for Ratpack server (#3749)
- Support Couchbase 3.2.0 (#3645)
- Handle port and IPv6 in forwarded headers (#3651)
- Set real Hibernate span name on method entry to help samplers (#3603)
- Reduce overhead of unsampled requests (#3681)
- Sanitize SQL in Apache Camel instrumentation (#3683, #3717)
- Add option to create span on new netty connection (#3707)
- Propagate context into jdk http client callback (#3719)
- Instrument Tomcat executor to support async servlets in new Tomcat 9.0.52 release (#3789)
- Add otlp-logging exporter (#3807)
- Add new option to support capturing nested client spans of different types (#3691)
- Propagate context to lettuce callbacks (#3839)
- Instrument ForkJoinTask.fork() (#3849)
- Implement a Call.Factory for okhttp 3.x+ library instrumentation (#3812)
- Record exception in Dubbo instrumentation (#3851)
- Propagate context to elasticsearch callbacks (#3858, #3861)
- Added Vertx http client 4 instrumentation (#3665)
- Make empty agent bridged context equal root context (#3869)
- Fix OkHttp 3 correlation when using callback under concurrency (#3669, #3676)
- Fix Netty span not captured on read timeout (#3613)
- Fix Netty connection failure handling when listener is lambda (#3569)
- Fix NullPointerException in Apache HttpAsyncClient instrumentation (#3692)
- Fix NullPointerException in Tomcat instrumentation (#3705)
- Fix Apache HttpClient telemetry when host and absolute URI are used (#3694)
- Fix JDK http client should propagate even when sampled out (#3736)
- Limit netty exception capture to netty spans (#3809)
- Fix jetty httpclient returning empty response when instrumented (#3831, #3833)
- Don't clobber user decorators in Armeria client instrumentation (#3873)
- Use valid Java identifiers for message keys (#3863)
- Fix ClassNotFoundException: HandlerMappingResourceNameFilter in some ear deployments (#3718)
- Improve extension sample documentation and add it to the README file (#3656)
- Extract muzzle check plugin (#3657)
- Move instrumentation specific classes out of javaagent-instrumentation-api (#3604)
- Publish muzzle plugins to Gradle Plugin Portal (#3720, #3763)
- Fill
http.client_ip
in ServerInstrumenter (#3756) - Fix printMuzzleReferences gradle task (#3808)
- Introduce stable property for external extensions (#3823)
- Run tests on j9 JVM during CI (#3764)
- Support looking up a ContextStore from outside of Advice (#3827)
- Deprecate MetricExporterFactory (#3862)
- Don't pass configuration to SDK autoconfigure through system props (#3866)
- Rename Config get*Property() methods to get*() (#3881)
- Updated all instrumentation names to
io.opentelemetry.{libName}-{libVersion}
(#3411) - Updated RabbitMQ to follow semantic conventions (#3425)
- Jetty 9 HTTP client instrumentation (#3079)
- Make @RabbitListener propagate context properly (#3339)
- Add peer.service to grpc javaagent instrumentation (#3357)
- Propagate context to cassandra4 callbacks (#3371)
- Update Armeria instrumentation to support new Armeria 1.9.0 release (#3407)
- Context propagation for ratpack Execution.fork() (#3416)
- Fix Kafka stream instrumentation to support Kafka 2.6 and above (#3438)
- Fix Dubbo trace/span cross-process propagation (#3442)
- Fix
peer.service
configuration mapping (#3378)
- Hide Config#create() method and use builder everywhere (#3338)
- Ignore task classes using IgnoredTypesConfigurer (#3380)
- Exclude duplicate classes from final jars (#3432, #3430)
- Port AsyncSpanEndStrategy to Instrumenter API (#3262)
- Rename
opentelemetry-javaagent-api
artifact toopentelemetry-javaagent-instrumentation-api
(#3513)
- Fix incorrect dependency in published BOM (#3376)
- Fix UnsupportedOperationException with reactor-rabbitmq (#3381)
- Fix Spring JMS not being instrumented (#3359)
- Update agent logger prefix (#3007)
- Remove khttp instrumentation (#3087)
- Enable akka actor instrumentation by default (#3173)
- Spring Integration javaagent instrumentation (#3295)
- Spring Integration library instrumentation (#3120)
- Support peer-service-mapping in OkHttp3 instrumentation (#3063)
- Low cardinality span names for Hibernate spans (#3106)
- Propagate context to armeria callbacks (#3108)
- Add attributes to netty connection failure span (#3115)
- Defer initialization of OpenTelemetry in spring-boot-autoconfigure (#3171)
- Support couchbase 3.1.6 (#3194)
- New experimental support for agent extensions (#2881, #3071, #3226, #3237)
- Propagate context to akka http callbacks (#3263)
- Remove Netty instrumented handler wrapper when original handler is removed (#3026)
- Fix memory leak when Netty handler is a lambda (#3059)
- Fix race condition on Undertow (#2992)
- Remove db.connection_string from redis instrumentation (#3094)
- Fix context propagation leak in Akka instrumentation (#3099)
- Fix webflux handler span sporadically not ending (#3150)
- End span on cancellation of subscription to reactive publishers (#3153)
- End span on cancellation of Guava future (#3175)
- Create Netty connection failure span only when first operation fails (#3228)
- Internal instrumentation should always be enabled by default (#3257)
- Fix context propagation leak in Akka HTTP instrumentation (#3264)
- Only include exporters in the
-all
jar (#3286) - Fix ForkJoinPool sometimes not instrumented (#3293)
- Migrate MuzzlePlugin to Java (#2996, #3017)
- Refactor TypeInstrumentation#transformers() method (#3019)
- Change a couple of Longs to Integers in Instrumenter API (#3043)
- Add peer.service to Instrumenter API (#3050)
- Add response type parameter to db attributes extractor (#3093)
- Add optimized Attributes implementation for Instrumenter (#3136)
- Rename ComponentInstaller to AgentListener and add #order() method (#3182)
- Update ByteBuddy (#3254)
- Introduce IgnoredTypesConfigurer SPI to enable defining per-module ignores (#3219)
- Extract agent shadow configuration to conventions script (#3256)
- Deprecate SpanExporterFactory in favor of ConfigurableSpanExporterProvider (#3299)
- Refactor span names class (#3281)
- Move http client/server testing dependencies to internal package (#3305)
- AWS lambda flush timeout raised to 10 seconds (#2855)
SERVER
span names improved for Spring MVC, Grails, Wicket, and Struts (#2814)SERVER
span names improved for Servlet filters (#2887)SERVER
span names improved for Resteasy (#2900)SERVER
span names improved for Jersey and CXF (#2919)- JAX-RS
@ApplicationPath
annotation captured as part ofSERVER
span name (#2824) - RequestDispatcher
forward()
andinclude()
internal spans removed (#2816) - Raised gRPC min version supported to 1.6 in order to use new gRPC context bridge API (#2948)
- RxJava 3 (#2794)
- RxJava 3 (#2794)
- Support sub-millisecond precision for start/end times on Java 9+ (#2600)
@WithSpan
async support added for methods returning async Reactor 3.x types (#2714)@WithSpan
async support added for methods returning Guava ListenableFuture (#2811)- Semantic attributes
code.namespace
andcode.function
captured on JAX-RS internal spans (#2805) - Context propagated to reactor-netty callbacks (#2850)
- gRPC context bridging issues (#2564, #2959)
- URL credentials of the form
https://username:[email protected]/
no longer captured (#2707) - Spring MVC instrumentation can cause Spring MVC to misroute requests under some conditions (#2815)
- RxJava2 NoSuchFieldError (#2836)
- Duplicate http client tracing headers (#2842)
- Netty 4.1 listeners could not be removed by application (#2851)
- NPE caused in gRPC ProtoReflectionService (#2876)
- Context leak when using Ratpack (#2910)
- Context leak when using Jetty (#2920)
- Servlet instrumentation overwrites setStatus that was set manually earlier (#2929)
- Spans not captured on interface default methods annotated with JAX-RS annotations (#2930)
- Documented how to write InstrumentationModule line by line (#2793)
- New instrumenter API used in JMS instrumentation (#2803)
- Instrumenter API improvements (#2860)
- Muzzle checks whether used fields are actually declared somewhere (#2870)
- Extracted javaagent-extension-api from tooling & spi
(#2879)
- You no longer have to depend on the
javaagent-tooling
module to implement custom instrumentations: a newjavaagent-extension-api
module was introduced, containing all the necessary instrumentation classes and interfaces; InstrumentationModule
andTypeInstrumentation
were moved to theio.opentelemetry.javaagent.extension.instrumentation
package;AgentElementMatchers
,ClassLoaderMatcher
andNameMatchers
were moved to theio.opentelemetry.javaagent.extension.matcher
package;- A new SPI
AgentExtension
was introduced: it replacesByteBuddyAgentCustomizer
; InstrumentationModule#getOrder()
was renamed toorder()
;InstrumentationModule#additionalHelperClassNames()
has been removed; useisHelperClass(String)
instead if you use the muzzle compile plugin. If you're not using muzzle, you can overridegetMuzzleHelperClassNames()
directly instead;InstrumentationModule#getAllHelperClassNames()
has been removed; you can callgetMuzzleHelperClassNames()
to retrieve all helper class names instead.
- You no longer have to depend on the
- Update servlet attribute names for log injection, from
traceId
andspanId
totrace_id
andspan_id
(#2593) - Renamed
runtime.jvm.gc.collection
metric toruntime.jvm.gc.time
(#2616)
- Elasticsearch 7 (#2514, #2528)
- Couchbase 3.1 (#2524)
- Grails (#2512)
- RocketMQ (#2263)
- Lettuce 6 (#2589)
- Servlet 5 (#2609)
- Vaadin web framework (#2619)
- GWT (#2652)
- Tapestry web framework (#2690)
@WithSpan
support for methods returning CompletableFuture (#2530)@WithSpan
support for methods returning async RxJava 2 types (#2530)
- Library instrumentation for AWS SDK v1 (#2525)
- Library instrumentation for Lettuce 5.1 (#2533)
- RocketMQ (#2263)
- Lettuce 6 (#2589)
- Spring Boot Autoconfigure support for
@WithSpan
methods returning CompletableFuture (#2618) - Spring Boot Autoconfigure support for
@WithSpan
methods returning async RxJava 2 types (#2530)
- Move attributes to span builder for use by samplers (#2587)
- Apache Camel - SNS propagation (#2562)
- Apache Camel - S3 to SQS propagation (#2583)
- Added
runtime.jvm.gc.count
metric (#2616) - Support reactor netty
HttpClient.from
construction (#2650) - Improve akka instrumentation (#2737)
- Record internal metric for SQL cache misses (#2747)
- End Netty 4.1 client and server spans when the response has completed, instead of when the response has started (#2641)
- Fix RestTemplateInterceptor so that it calls endExceptionally() on exception (#2516)
- Fix app failure under Eclipse OSGi (#2521)
- Fix undertow span ending too early (#2560)
- Fix context leak in AWS SDK 2.2 and RocketMQ instrumentations (#2637)
- Fix hang when a webflux http request is made inside of another webflux http request (e.g. auth filter) (#2646)
- Fix
@WithSpan
instrumentation breaking Java 6 classes (#2699) - Fix context not propagated over JMS when explicit destination used (#2702)
- Fix StackOverflowError if jdbc driver implementation of Connection getMetaData calls Statement execute (#2756)