opentelemetry-java-instrumentation

OpenTelemetry auto-instrumentation and instrumentation libraries for Java

APACHE-2.0 License

Stars
1.9K

Bot releases are visible (Hide)

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
opentelemetry-java-instrumentation - Version 0.2.1

Published by trask over 4 years ago

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

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

To run with the jaeger exporter:

java -javaagent:path/to/opentelemetry-auto-0.2.1.jar \
     -Dota.exporter.jar=path/to/opentelemetry-auto-exporters-jaeger-0.2.1.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.1.jar \
     -Dota.exporter.jar=path/to/opentelemetry-auto-exporters-logging-0.2.1.jar \
     -jar myapp.jar

To run with the otlp exporter:

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

Published by trask over 4 years ago

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

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

To run with the jaeger exporter:

java -javaagent:path/to/opentelemetry-auto-0.2.0.jar \
     -Dota.exporter.jar=path/to/opentelemetry-auto-exporters-jaeger-0.2.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.2.0.jar \
     -Dota.exporter.jar=path/to/opentelemetry-auto-exporters-logging-0.2.0.jar \
     -jar myapp.jar

To run with the otlp exporter:

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

Published by trask over 4 years ago

This first release takes the easy route and directly bundles the Jaeger exporter and only the Jaeger exporter (in the next release, you will be able to plug in the exporter of your choice).

Download and try it out on your (non-production) app today, and let us know what works and what doesn't!

To add it to your app, e.g.:

java -javaagent:/path/to/opentelemetry-auto-0.1.1.jar \
     -Dota.exporter=jaeger \
     -Dota.jaeger.host=localhost \
     -Dota.jaeger.port=14250 \
     -Dota.service=shopping \
     -jar myapp.jar