opentelemetry-java-instrumentation

OpenTelemetry auto-instrumentation and instrumentation libraries for Java

APACHE-2.0 License

Stars
1.9K

Bot releases are hidden (Show)

opentelemetry-java-instrumentation - Version 1.15.0

Published by trask over 2 years ago

This release targets the OpenTelemetry SDK 1.15.0.

Note that all artifacts other than io.opentelemetry.javaagent:opentelemetry-javaagent have the -alpha suffix attached to their version number, reflecting that they are still alpha quality and will continue to have breaking changes. Please see the VERSIONING.md for more details.

Migration notes

  • The opentelemetry-jboss-logmanager-1.1 artifact has been renamed to opentelemetry-jboss-logmanager-appender-1.1
  • The play instrumentation name has changed from play to play-mvc (#6106)
  • The vertx-http-client instrumentation name has changed from vertx-client to vertx-http-client (#6106)
  • The metric process.runtime.java.memory.max has been renamed to process.runtime.java.memory.limit (#6161)

🌟 New javaagent instrumentation

  • 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)

🌟 New library instrumentation

  • 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)

📈 Enhancements

  • 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)

🛠️ Bug fixes

  • 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)

🧰 Tooling

  • 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)

Thank you

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

@agoallikmaa
@ahus1
@anuraaga
@axelczk
@breedx-splk
@claussenj
@cykl
@darcydai
@evantorrie
@felipebonezi
@HaloFour
@hboutemy
@jack-berg
@jeanbisutti
@laurit
@mateuszrzeszutek
@Roiocam
@trask
@tydhot
@vasireddy99

opentelemetry-java-instrumentation - Version 1.12.1

Published by trask over 2 years ago

This is a patch release on the previous 1.12.0 release, fixing the issues below.

🛠️ Bug fixes

  • Elasticsearch rest client low cardinality span name (#5584)
  • Fix possible deadlock (#5585)
opentelemetry-java-instrumentation - Version 1.10.0

Published by trask almost 3 years ago

This release deprecates the entire io.opentelemetry.instrumentation.api.tracer package in the instrumentation-api artifact, and the package will be removed in the next release.

The new Micrometer instrumentation will now capture metrics already defined in instrumented applications (e.g. some libraries have built-in micrometer metrics, like spring boot for example) and send them out through the agent metrics pipeline.

This release requires the use of OpenTelemetry Java SDK 1.10.0.

Note that all artifacts other than io.opentelemetry.javaagent:opentelemetry-javaagent have the -alpha suffix attached to their version number, reflecting that they are still alpha quality and will continue to have breaking changes. Please see the VERSIONING.md for more details.

Migration notes

  • The opentelemetry-log4j-2.13.2 artifact has been renamed to opentelemetry-context-data-2.16-autoconfigure
  • The opentelemetry-logback-1.0 artifact has been renamed to opentelemetry-logback-mdc-1.0
  • The opentelemetry-ratpack-1.4 artifact has been renamed to opentelemetry-ratpack-1.7
    and only supports Ratpack 1.7 and above now

🌟 New javaagent instrumentation

  • 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)

🌟 New library instrumentation

  • 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)

📈 Enhancements

  • Renamed Apache Dubbo and Log4j MDC library artifacts (#4779)
  • Added http4 handler to apache-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)

🛠️ Bug fixes

  • 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)

🧰 Tooling

  • Merge start and end time extractors (#4692)
  • Move cache implementations to internal package (#4746)
  • Reorganize shared servlet code (intro to #4317) (#4785)
  • Move AppServerBridge and MappingResolver to servlet-common:bootstrap (#4817)
  • Move ServletContextPath to servlet-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 for http.route) (#4852)
  • Move SpanKey to internal package (#4869)

🙇 Thank you

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

@anuraaga
@Asafb26
@breedx-splk
@danhngo-lx
@dengliming
@frommeyerc
@HaloFour
@hellochenpc
@iNikem
@jack-berg
@jamesmoessis
@jkwatson
@jsalinaspolo
@jsuereth
@kubawach
@laurit
@lmolkova
@lokeshcse6
@mateuszrzeszutek
@michaelbannister
@osherv
@previousdeveloper
@ralphgj
@raptium
@rkolesnev
@Samudraneel24
@sh777
@shivanshu1333
@theletterf
@tnaroska
@tomasol
@trask
@yangtaoran
@yonigibbs
@Zane-XY

opentelemetry-java-instrumentation - Version 1.8.0 (Bad Release)

Published by anuraaga almost 3 years ago

Due to an issue in the publishing infrastructure, a bad release was published as 1.8.0. Do not use it.

opentelemetry-java-instrumentation - Version 1.2.0

Published by trask over 3 years ago

This release requires the use of OpenTelemetry Java SDK 1.2.0.

Note that all artifacts other than io.opentelemetry.javaagent:opentelemetry-javaagent have the -alpha suffix attached to their version number, reflecting that they are still alpha quality and will continue to have breaking changes. Please see the VERSIONING.md for more details.

🌟 New javaagent instrumentation

  • RxJava 3 (#2794)

🌟 New library instrumentation

  • RxJava 3 (#2794)

📈 Enhancements

  • 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 and code.function captured on JAX-RS internal spans (#2805)
  • Context propagated to reactor-netty callbacks (#2850)

☢️ Behavioral changes

  • 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 of SERVER span name (#2824)
  • RequestDispatcher forward() and include() internal spans removed (#2816)
  • Raised gRPC min version supported to 1.6 in order to use new gRPC context bridge API (#2948)

🛠️ Bug fixes

  • 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)

🧰 Tooling

  • 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 new javaagent-extension-api module was introduced, containing all the necessary instrumentation classes and interfaces;
    • InstrumentationModule and TypeInstrumentation were moved to the io.opentelemetry.javaagent.extension.instrumentation package;
    • AgentElementMatchers, ClassLoaderMatcher and NameMatchers were moved to the io.opentelemetry.javaagent.extension.matcher package;
    • A new SPI AgentExtension was introduced: it replaces ByteBuddyAgentCustomizer;
    • InstrumentationModule#getOrder() was renamed to order();
    • InstrumentationModule#additionalHelperClassNames() has been removed; use isHelperClass(String) instead if you use the muzzle compile plugin. If you're not using muzzle, you can override getMuzzleHelperClassNames() directly instead;
    • InstrumentationModule#getAllHelperClassNames() has been removed; you can call getMuzzleHelperClassNames() to retrieve all helper class names instead.

🙇 Thank you

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

@agoallikmaa
@ankitgaur-cer
@anuraaga
@asarkar
@breedx-splk
@denis111
@dkulig
@fuleow
@HaloFour
@Hangzhi
@iNikem
@jguerra
@jkwatson
@kubawach
@laurit
@mateuszrzeszutek
@necrolyte2
@pavolloffay
@pellared
@raptium
@richardstartin
@RSoodAMAT
@ryanrupp
@skoppers
@trask
@tydhot
@tylerbenson

opentelemetry-java-instrumentation - Version 0.15.1

Published by mateuszrzeszutek over 3 years ago

This patch release contains a bug fix fox SQS propagation in apache-camel instrumentation (#2102).

For more details about what has changed since 0.14.0 see release notes for version 0.15.0.

opentelemetry-java-instrumentation - Version 0.15.0

Published by anuraaga over 3 years ago

This update is compatible with the OpenTelemetry Java SDK 0.15.0. Most breaking changes are in the SDK so if you are using library instrumentation and the SDK directly, you may need to update code for initializing the SDK.

🌟 New instrumentation

  • JSF actions #2018
  • MongoDB 4 #2046
  • Spring batch: items #2047
  • Spring Web Services #2111
  • Mojarra / Myfaces #2119

📈 Improvements

  • Fix instrumentation of Jersey 2.30 #2071
  • The agent now uses the SDK autoconfiguration module for environment variables #2077
  • Servlet tracer names now reflect the version of the instrumentation library, e.g. servlet-2.0, servlet-3.0 #1979
  • JMS does not create spans when no messages are received #2091
  • SQL sanitization performance improved and now results are cached #2113 #2094
  • AWS SDK v1 instrumentation will now always use AWS trace propagator without configuring it globally #2117
  • AWS SDK v1 propagates SQS trace context #2114

🛠️ Bug fixes

  • The agent will work correctly with the latest version of Netty #2070
  • The agent will work correctly with the latest version of Apache Camel #2084
  • The agent will work correctly with the latest version of Spring Webflux #2100

🧰 Tooling

  • Tests for verifying behavior with Apache Camel and AWS SQS #2061
  • Netty instrumentation only attempts to be applied now if the classpath contains 4.0, or 4.1 respectively #2099
  • The default branch has been renamed to main #2118
  • Agent testing libraries are published for use in custom distributions #2133

☢️ Breaking changes

  • Jaeger thrift exporter has been removed from the default agent distribution. Splunk distribution still includes it. #2073
  • Instrumentation-specific flags for enabling SQL sanitization have been consolidated into one otel.instrumentation.db-statement-sanitizer.enabled
  • Many configuration properties have been updated to the latest specification
    • otel.exporter -> otel.trace.exporter / otel.metrics.exporter. The new variables only accept a single value
    • otel.exporter.otlp.endpoint now requires a scheme of http:// or https://. otel.exporter.otlp.insecure has been removed
    • otel.bsp.max.queue -> otel.bsp.max.queue.size
    • otel.bsp.max.export.batch -> otel.bsp.max.export.batch.size
    • otel.bsp.export.sampled has been removed. Only sampled spans are exported
    • otel.config.sampler.probability -> otel.trace.sampler=parentbased_traceidratio and otel.trace.sampler.arg=<probability>
    • otel.config.max.attrs -> otel.span.attribute.count.limit
    • otel.config.max.events -> otel.span.event.count.limit
    • otel.config.max.links -> otel.span.link.count.limit

🙇 Thank you

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

@anuraaga
@ben-childs-docusign
@breedx-splk
@iNikem
@jkwatson
@kubawach
@laurit
@malafeev
@mateuszrzeszutek
@pavolloffay
@trask
@vovencij

opentelemetry-java-instrumentation - Version 0.14.0

Published by anuraaga over 3 years ago

This update is compatible with the OpenTelemetry Java SDK 0.14.1. Most breaking changes are in the SDK so if you are using library instrumentation and the SDK directly, you may need to update code for initializing the SDK.

🌟 New instrumentation

  • Spring batch chunks #1850
  • Spring batch partitioning #2034
  • App-server specific runtimes
    • Undertow #1917
    • Liberty #1929
    • Jetty #2029

📈 Improvements

  • Grizzy spans have exceptions added #1987
  • AWS Lambda flush timeout can be configured #1960
  • Context propagation for apache camel instrumentation #2042
  • Netty instrumentation adds exceptions #2027
  • Logging exporter outputs one span per line instead of combining a batch #2054
  • Lambda SQS users do not need to configure xray as their app propagators anymore #2056
  • Armeria instrumentation updated to target 1.3.0 which had breaking changes

🛠️ Bug fixes

  • External exporter JAR file is closed correctly during initialization #1970
  • Correctly propagate context in Jetty #1966
  • Correctly handle servlet2 response with unset status #1985
  • Agent logs its version at startup again #2026

🧰 Tooling

  • End-to-end benchmark for latency when using the agent #1935
  • Tests are now run with an actual javaagent instead of post-startup bytebuddy reinstantiation #1643
  • Automatic code security scanning enabled #1971
  • Jackson version updated #2040

☢️ Breaking changes

  • Armeria instrumentation does not support Armeria versions before 1.3.0

🙇 Thank you

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

@amanbrar1999
@anuraaga
@avpatel257
@bhautikpip
@breedx-splk
@iNikem
@jkwatson
@kubawach
@laurit
@malafeev
@mateuszrzeszutek
@pavolloffay
@tobias-
@trask
@vovencij

opentelemetry-java-instrumentation - Version 0.13.0

Published by anuraaga almost 4 years ago

This update is compatible with the OpenTelemetry Java SDK 0.13.1. Most breaking changes are in the SDK so if you are using library instrumentation and the SDK directly, you may need to update code for initializing the SDK.

🌟 New instrumentation

  • Context propagation for Spring SimpleAsyncTaskExecutor #1897
  • Spring batch jobs #1843
  • Tomcat server handlers for more precise instrumentation vs generic servlet #1902
  • OpenTelemetry baggage is now bridged and can be used in apps #1927

📈 Improvements

  • Jaeger Thrift exporter included in agent with the configuration value name jaeger-thrift #1868

🛠️ Bug fixes

  • AWS SDK Instrumentation helper injection works again #1876

🧰 Tooling

  • Fix smoke tests for liberty app container #1853
  • SPI resources injected by instrumentation now detected by muzzle #1918
  • Muzzle warnings correctly logged in tests #1930

☢️ Breaking changes

  • Attributes that are not part of the opentelemetry specification have been hidden behind opt-in flags. If there are any attributes that you think would be great for anyone, please file an issue on the spec repo for adding them natively.

Flag guards are per instrumentation

  • Hytrix: otel.instrumentation.hystrix.experimental-span-attributes
  • Kafka: otel.instrumentation.kafka.experimental-span-attributes
  • Spring Webflux: otel.instrumentation.spring-webflux.experimental-span-attributes
  • Spring WebMVC: otel.instrumentation.spring-webmvc.experimental-span-attributes

🙇 Thank you

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

@anuraaga
@breedx-splk
@iNikem
@laurit
@mateuszrzeszutek
@pavolloffay
@trask
@vovencij

opentelemetry-java-instrumentation - Version 0.12.0

Published by anuraaga almost 4 years ago

This update is compatible with the OpenTelemetry Java SDK 0.12.0. Most breaking changes in its API are API-compatible if you recompile your app.

NB: The snapshots repository has been moved to Sonatype OSS (https://oss.sonatype.org/content/repositories/snapshots/)

🌟 New instrumentation

  • gRPC instrumentation has been updated to support the latest version #1839

📈 Improvements

  • Context is propagated even when there is no span in more locations #1802 #1810 #1811
  • WithSpan will not produce nested server or client spans anymore #1801
  • Standard Resource extensions for process and runtime are enabled automatically #1809
  • HTTP attributes are populated for AWS Lambda spans #1780
  • Additional FaaS spans are populated for AWS Lambda #1831

🛠️ Bug fixes

  • AWS SDK suppresses client spans, preventing authentication signature break #1837

🧰 Tooling

  • A new matrix of tests of various app servers has been added #1821
  • We now publish the instrumentation artifacts to Maven Central #1823

☢️ Breaking changes

  • servlet.context span attribute is not set anymore #1783

  • Some configuration properties have been renamed #1786

otel.instrumentation.executors.includeAll --> otel.instrumentation.executors.include-all
otel.hystrix.tags.enabled --> otel.instrumentation.hystrix.tags
otel.kafka.client.propagation.enabled --> otel.instrumentation.kafka.client-propagation
otel.instrumentation.defaultEnabled --> otel.instrumentation.default-enabled
  • Several custom attributes have been renamed to be prefixed by instrumentation name. If any of these seem interesting to formalize, let us know or go ahead and file a specification issue! #1784

Instrumentation affected: apache-camel, couchbase, grpc, jaxrs, kafka-clients, lettuce, rabbitmq, spring

  • Exporter packages use exporter instead of exporters in artifact name, e.g., opentelemetry-javaagent-exporter-zipkin

🙇 Thank you

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

@anuraaga
@iNikem
@mateuszrzeszutek
@trask
@vovencij

opentelemetry-java-instrumentation - Version 0.11.0

Published by anuraaga almost 4 years ago

This update is compatible with the OpenTelemetry Java SDK 0.11.0.

NB! That release contains A LOT OF breaking changes related to builders, please read its change log carefully!

🌟 New instrumentation

  • AWS Lambda Instrumentation of HTTP requests (e.g., API Gateway) #1650 #1536
  • http4k (hosted out of tree but please give it a try!) #1605
  • reactor-netty context propagation #1601
  • Struts 2 #1628
  • Runtime metrics (JVM metrics) moved from SDK repository #1720
  • RXJava (previously existed only in agent, now published as library) #1732

📈 Improvements

  • Anyone interested in the challenges of working with classloaders in Java agents can check out our design doc
  • JDBC span names now include the statement name, DB name, and DB table #1533
  • Many new SPIs to better configure the agent in restributions #1613
  • Servlet Filter instrumented directly instead of FilterChain #1606
  • Mongo command scrubber improvements #1663 #1662
  • System metrics instrumentation updated to follow new specification #1705
  • Baggage propagator enabled by default #1545
  • Anyone creating a custom distribution of the agent should check out the example #1621

🛠️ Bug fixes

  • Muzzle configuration issue effecting Wildfly and JDBC instrumentation #1585 #1593
  • B3 multi propagation format can be configured with b3multi flag #1647
  • AWS SDK v2 instrumentation now applied to all clients, not just ones after the first one #1759
  • Context is propagated to requests from AWS SDK v2 / v1 #1763 #1771
  • Kotlin auto instrumentation updated to use context element, should have less issues (please file any issues if you run into them!) #1618

🧰 Tooling

  • Significant refactoring to instrumentation module setup introducing the InstrumentationModule interface #1528
  • Byte buddy version bumped to 1.10.18 (should fix issues with Weblogic Server) #1596
  • Gradle toolchains feature implemented to allow running tests on different JVMs without having to install them yourself #1627
  • We now use checkstyle to check for some code conventions (not formatting) of the Google style guide #1641
  • Muzzle now automatically generates injected helpers instead of being maintained manually #1714

☢️ Breaking changes

  • Several configuration options have been renamed
otel.trace.enabled --> otel.javaagent.enabled
otel.trace.debug --> otel.javaagent.debug
otel.trace.config --> otel.javaagent.config
otel.trace.runtime.context.field.injection --> otel.javaagent.runtime.context.field.injection
otel.instrumentations.enabled --> otel.instrumentations.default-enabled
otel.trace.classes.excludes --> otel.javaagent.exclude-classes

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

@agoallikmaa
@anuraaga
@daviddenton
@hasanfd
@holyjak
@iNikem
@jkwatson
@jamal
@jamesylgan
@jyemin
@kubawach
@malafeev
@mateuszrzeszutek
@mrcull
@pavolloffay
@snyder114
@TeeVenDick
@trask
@vovencij

opentelemetry-java-instrumentation - Version 0.10.1

Published by iNikem almost 4 years ago

This update is compatible with the OpenTelemetry Java SDK 0.10.0.

NB! That release contains A LOT OF breaking changes, please read its change log carefully!

🌟 New instrumentation

  • Better support for AWS lambda tracing (#1471)
  • Add support for system metrics (#1309, #1530)
  • Apache Camel 2.20.x instrumentation (#1397)

📈 Improvements

  • Add SPI to configure additional bootstrap package prefixes (#1380)
  • Add operation and collection attributes for MongoDB spans (#1398)
  • Change Play framework span name (#1416)
  • Change JAX-RS span name (#1425)
  • Better support for parsing IPv6 JDBC urls (#1403)
  • Prevent NoSQL databases instrumentations from exposing sensitive information (#1405, #1427, #1455, #1462, #1441, #1509)
  • Instrumentation libraries names as reported by telemetry does not include instrumented library versions anymore (#1446)
  • LoggingExporter now uses the agent's logging framework instead of standard out (#1447)
  • Add context root to the front of the route in the span name (#1418)
  • Better selection of telemetry exporter (#1513)

🛠️ Bug fixes

  • Fix db.name span attribute for MongoDB (#1419 )
  • Fix HttpURLConnection instrumentation on WebLogic (#1439)
  • Proper scope handling for Resteasy instrumentations. (#1442)
  • Fix broken Armeria instrumentation (#1451)
  • Fix setting net.peer.* semantic attributes for Cassandra 4.+ (#1482)

☢️ Breaking changes

  • Change configuration properties for configuring exporters (#1399)
  • Change configuration properties for enabling/disabling individual instrumentations (#1412)
opentelemetry-java-instrumentation - Version 0.10.0

Published by anuraaga almost 4 years ago

NB! This release contains several critical bugs and SHOULD NOT be used. Please use version 0.10.1

opentelemetry-java-instrumentation - Version 0.9.0

Published by anuraaga about 4 years ago

This update is compatible with the OpenTelemetry Java SDK 0.9.1

🌟 New instrumentation

  • AWS Lambda runtime #1192 and SQS #1210
  • gRPC instrumentation has been split so library instrumentation can be used without the javaagent #1329

📈 Improvements

  • Lettuce 5.1 no longer records password in span for AUTH command #1190
  • Context propagation fixes for Reactor instrumentation #1189
  • Resources can be injected into an app by auto instrumentation #1172
  • DynamoDB calls via AWS SDK v2 now have database semantic conventions filled #1191
  • Logging exporter now prints trace ID in addition to span ID #1246
  • otel.exporter can be set to otlp_span or otlp_metric to only enable the span or metric exporter #1253
  • Prometheus exporter is now supported #1262
  • Significant work consolidating tracing code to use Tracer abstraction instead of Decorator #1275
  • It is now possible to specify an ordering for instrumentations #1326
  • AWS Lambda instrumentation can parent the Lambda infrastructure span #1323
  • traceId/spanId MDC injection support documented #1339, #1347
  • Fancier README #1340
  • Better Context propagation for gRPC instrumentation #1343, #1383
  • Better Context propagation for Netty instrumentation #1348
  • Updated instrumentation that were only propagating Span to propagate Context #1350
  • Muzzle better detects incompatibility when abstract method added to super class #1357

🛠️ Bug fixes

  • Logback auto instrumentation was not applied correctly due to an issue in bytecode manipulation #1208

☢️ Breaking changes

  • SPI interfaces for custom exporters and tracer customizers moved to io.opentelemetry.instrumentation.opentelemetry-javaagent-spi artifact, io.opentelemetry.javaagent.spi package #1187
  • Flag to exclude classes from instrumentation renamed from trace.classes.exclude to otel.trace.classes.exclude
  • Config revamped to allow binary repackaging to set default values for config #1243 and the API has been cleaned up #1286, #1254, #1286, #1310
  • Renamed auto to javaagent in module names #1370

⛓ Tooling

  • We now document our coverage of semantic conventions #1207, #1284, #1297
  • Error prone + nullaway have been configured and can be enabled module-by-module to provide correctness checks #1203
  • Support RestEasy 4.0 in unit tests #1082
  • Smoke test coverage of log context integration #1228
  • Muzzle now fails on unimplemented abstract methods #1193
  • Documentation on how to remote debug the javaagent #1263, #1296
  • Documentation on muzzle #1270, #1379
  • Span assertion names now match the OTel span method names #1307
  • Removed need for AgentSpecification #1291
  • Muzzle is now run as part of GitHub Actions #1324
  • Spotbugs errors fixed and check enabled on CI #1325
  • Flaky JMS 1.x tests moved to testcontainers #1327
  • Work towards migrating fully to GitHub Actions #1333, #1334

🙇 Thank you

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

  • @anuraaga
  • @asarkar
  • @billoneil
  • @flands
  • @imavroukakis
  • @iNikem
  • @jamal
  • @jkwatson
  • @kubawach
  • @malafeev
  • @mateuszrzeszutek
  • @pavolloffay
  • @rashmiram
  • @trask
  • @tylerbenson
opentelemetry-java-instrumentation - Version 0.8.0

Published by anuraaga about 4 years ago

This update is compatible with the OpenTelemetry Java SDK 0.8.0

🌟 New instrumentation

While not new instrumentation, we've also added documentation for our Spring instrumentation - give it a try and let us know how we can improve it! #1035 #1110

📈 Improvements

  • Significant work consolidating tracing code to use Tracer abstraction instead of Decorator #893 #918 #922 #1148
  • Thread information is logged into span attributes #1093
  • More coverage of messaging attributes for JMS #963 #1179
  • Jedis now has net.peer mapped correctly #1158
  • Removed redundant instrumentation of UrlConnection #1059
  • Metric exporter is now enabled by default #1098
  • Version of the Java agent is now populated in Resource #1112
  • Many optimizations to our framework / various instrumentations #1107

🛠️ Bug fixes

  • WithSpan works again after fixing compatibility with the SDK #929
  • ClassCastException not thrown when accessing TracerSDK directly #931
  • OpenTracing shim correctly propagates headers (baggage is still not supported) #947 #974
  • ClassCastException not thrown on recent Jetty versions #1156
  • null can be set by instrumentations using InstrumentationContext even when the context is backed by a map #1177
  • Kotlin coroutines have context propagated correctly #1168
  • Spring Web MVC spans have correct name even if there is an authentication failure #1122
  • Servlet 3.1+ containers do not throw exceptions #1167

☢️ Breaking changes

  • io.opentelemetry:opentelemetry-sdk-extension-auto-config used by exporter modules has been replaced by io.opentelemetry.instrumentation.auto:opentelemetry-javaagent-tooling. If you maintain a custom exporter, please migrate to this new module to continue to be recognized by the agent.
    • We will probably be renaming this module again in the next version, sorry for the churn!
  • Java agent binary and modules are now published at io.opentelemetry.instrumentation.auto:opentelemetry-javaagent/opentelemetry-javaagent-bootstrap/opentelemetry-javaagent-tooling
  • io.opentelemetry.auto package moved to io.opentelemetry.javaagent. This affects any command line parameters too

⛓ Tooling

  • Reworked tests against latest dependencies of libraries to be flagged by a property, reducing load during local development #977
  • Added Gradle remote caching to improve build times on GitHub actions and locally #982
  • Smoke tests reworked to run well on both CI and locally #934
  • Migrated test runner to JUnit5 from JUnit4 #770
  • You should now see far fewer flaky builds as we have automatic retry of all tests due to the flaky nature of some of the libraries we use #908

🙇 Thank you

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

  • @anuraaga
  • @dengliming
  • @erikcostlow
  • @frankspitulski
  • @heyams
  • @inikem
  • @ishg
  • @jamesylgan
  • @jkwatson
  • @kubawach
  • @johnbley
  • @mabdinur
  • @malafeev
  • @mateuszrzeszutek
  • @randomanderson
  • @renanramos
  • @richardstartin
  • @sullis
  • @trask
  • @tylerbenson
  • @wytrivail
opentelemetry-java-instrumentation - Version 0.7.0

Published by iNikem about 4 years ago

Supports OpenTelemetry Java version 0.7.0.

Changes since v.0.6.0

  • BREAKING CHANGE #760 Rename trace.methods.exclude to trace.annotated.methods.exclude

  • BREAKING CHANGE #841 Changed prefixes of all configuration options from ota to otel

  • #506 @WithSpan annotation now supports kind attribute

  • New documentation about writing new Instrumentation

  • #735 MDC support for log4j 2.13.2+

  • #726 New semantic attribute http.response_content_length

  • Performance optimisations for instrumenting Clojure applications

  • #575 Several instrumentations used to update name of the parent span. It is now fixed to correctly do that for SERVER span

  • #756 Add support for Armeria server

  • Support for new exception span event

  • #785, #823 Update database semantic convention

  • #827 More attributes on http server spans

  • #838 Add support for OtTracerPropagator and AwsXRayPropagator

  • #849 Add support for TraceMultiPropagator

  • README.md updated to reflect current configuration.

  • Extensive support for manual instrumentation of Spring Boot applications

opentelemetry-java-instrumentation - Version 0.6.0

Published by iNikem over 4 years ago

See Getting Started for setup instructions.

Supports OpenTelemetry Java version 0.6.0.

Multiple modules have been renamed. Please consult new coordinates for published artefacts at Bintray

opentelemetry-java-instrumentation - Version 0.4.0

Published by trask over 4 years ago

See Getting Started for new setup instructions.

opentelemetry-java-instrumentation - Version 0.3.0

Published by trask over 4 years ago

Download opentelemetry-auto-0.3.0.jar and one of the exporters:

  • opentelemetry-auto-exporters-jaeger-0.3.0.jar
  • opentelemetry-auto-exporters-logging-0.3.0.jar
  • opentelemetry-auto-exporters-otlp-0.3.0.jar

To run with the otlp exporter:

export OTEL_RESOURCE_ATTRIBUTES=service.name=shopping
java -javaagent:path/to/opentelemetry-auto-0.3.0.jar \
     -Dota.exporter.jar=path/to/opentelemetry-auto-exporters-otlp-0.3.0.jar \
     -Dota.exporter.otlp.endpoint=localhost:55678 \
     -jar myapp.jar

To run with the jaeger exporter:

java -javaagent:path/to/opentelemetry-auto-0.3.0.jar \
     -Dota.exporter.jar=path/to/opentelemetry-auto-exporters-jaeger-0.3.0.jar \
     -Dota.exporter.jaeger.endpoint=localhost:14250 \
     -Dota.exporter.jaeger.service.name=shopping \
     -jar myapp.jar

To run with the logging exporter:

java -javaagent:path/to/opentelemetry-auto-0.3.0.jar \
     -Dota.exporter.jar=path/to/opentelemetry-auto-exporters-logging-0.3.0.jar \
     -jar myapp.jar
opentelemetry-java-instrumentation - Version 0.2.2

Published by trask over 4 years ago

Download opentelemetry-auto-0.2.2.jar and one of the exporters:

  • opentelemetry-auto-exporters-jaeger-0.2.2.jar
  • opentelemetry-auto-exporters-logging-0.2.2.jar
  • opentelemetry-auto-exporters-otlp-0.2.2.jar

To run with the jaeger exporter:

java -javaagent:path/to/opentelemetry-auto-0.2.2.jar \
     -Dota.exporter.jar=path/to/opentelemetry-auto-exporters-jaeger-0.2.2.jar \
     -Dota.exporter.jaeger.endpoint=localhost:14250 \
     -Dota.exporter.jaeger.service.name=shopping \
     -jar myapp.jar

To run with the logging exporter:

java -javaagent:path/to/opentelemetry-auto-0.2.2.jar \
     -Dota.exporter.jar=path/to/opentelemetry-auto-exporters-logging-0.2.2.jar \
     -jar myapp.jar

To run with the otlp exporter:

java -javaagent:path/to/opentelemetry-auto-0.2.2.jar \
     -Dota.exporter.jar=path/to/opentelemetry-auto-exporters-otlp-0.2.2.jar \
     -Dota.exporter.otlp.endpoint=localhost:55678 \
     -jar myapp.jar