Commit Graph

2514 Commits

Author SHA1 Message Date
Lauri Tulmin 2cbfec8ac2
Fix spring boot 3 webmvc autoconfiguration (#8051)
Related to
https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/8028#issuecomment-1466496896
spring boot 3 uses `jakarta.servlet` so we need to use
`WebMvcFilterAutoConfigurationSpring6 ` instead of
`WebMvcFilterAutoConfiguration`
2023-03-14 12:39:58 +01:00
Lauri Tulmin 9ebfe03e72
Use timer for pulsar consumer spans (#8050) 2023-03-14 12:35:29 +01:00
Ago Allikmaa a9788a22de
Provide ability to add HTTP server response headers, with Tomcat implementation (#7990)
This allows custom distributions of the agent to register
`HttpServerResponseCustomizer` implementations. When a supported HTTP
server instrumentation starts processing a response, the `onStart`
method of all registered implementations will be invoked with the
`Context` of the SERVER span, an instrumentation-specific response
object and `HttpServerResponseMutator` instance that allows appending
headers to that response.

The intent of this is to allow custom distributions to set a header
containing span context information, such as the trace and span IDs. As
such, the initial implementation only allows appending response headers
and nothing else.

The `HttpServerResponseCustomizer` and related classes are currently in
a subpackage of the `io.opentelemetry.javaagent.bootstrap` package in
`javaagent-extension-api`. This makes them get loaded in the bootstrap
classloader, thus directly accessible from instrumentations. I am not
aware if there is an elegant way to put it in the agent classloader
instead, yet have the same instance accessible from both
`AgentInstaller` and instrumentations.

This also includes Tomcat-specific implementation in order to be able to
demonstrate that it works, and add automated testing of this to
HttpServerTest including one implementation.
2023-03-13 17:46:39 +01:00
Lauri Tulmin 0ef4c0beb9
Don't wrap exceptions from logback appender (#8040) 2023-03-13 17:23:48 +01:00
Lauri Tulmin dedc4d312c
Improve pulsar instrumentation (#8007)
- use standard messaging span name
- replace `message.type` with experimental attribute
`messaging.pulsar.message.type`, `message.type` is from rpc semantic
conventions
- replace `net.sock.peer.addr` that was filled with broker url with
`net.peer.name` and `net.peer.port`
2023-03-13 17:22:11 +01:00
Jean Bisutti 2bd2bbcdee
Make the Spring autoconfiguration work with Spring Boot 3 (#8028)
This PR makes the Spring autoconfiguration work from Spring Boot 2.7.

[The way to declare autoconfiguration has indeed changed from Spring
Boot
2.7](https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.7-Release-Notes#building-jars-with-maven-shade-plugin-and-gradle-shadow-plugin).

A workaround is to use @EnableOpenTelemetry.
2023-03-13 17:15:19 +01:00
Lauri Tulmin c6adaa35de
Cache DbInfo in OpenTelemetryDataSource (#8025)
Resolves
https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/7984
2023-03-13 13:10:11 +01:00
Helen 468aa9e777
Convert Jetty 8.0 groovy to java (#7975)
related to
https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/7195
2023-03-11 11:24:35 +02:00
Helen 995baa8888
Convert Jetty 11 groovy to java (#7976)
related to
https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/7195
2023-03-11 11:23:37 +02:00
Lauri Tulmin f1411d1cb3
Share timer class used by messaging instrumentations (#8009)
Resolves
https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/4514
There is also a slightly different timer class in netty instrumentation
https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/instrumentation/netty/netty-common/library/src/main/java/io/opentelemetry/instrumentation/netty/common/internal/Timer.java
that I didn't touch.
2023-03-10 10:40:41 +02:00
Lauri Tulmin a793c247e6
Remove duplicate -Xmx from kafka memory options (#8022) 2023-03-09 22:02:33 +02:00
Mateusz Rzeszutek 0dccc3ad56
Fix NPE in the RabbitMQ instrumentation (#8021)
Fixes #8020
2023-03-09 17:15:27 +00:00
adamleantech 96fd1d7522
Add Baggage to logback MDC controlled by flag (#7892)
The intention here is to allow users of the java agent to set a VM flag
in order to be able to add values in the current Baggage context to MDC
for logback. It seemed unwise to turn this on by default - if the
application is configured to print all MDC contents (as it often the
case with JSON output) then baggage would be logged out by default which
may either bloat the logs or result in sensitive data being exposed
unitentionally.

Addresses #1391 and #6708

Note that this is my first contribution to this repo, I've done my best
to follow the existing approaches to things like testing but would
appreciate any feedback.

---------

Co-authored-by: Mateusz Rzeszutek <mrzeszutek@splunk.com>
2023-03-09 08:03:56 -08:00
Lauri Tulmin 67b6b6cc7c
Limit kafka memory usage (#8018) 2023-03-09 16:37:09 +02:00
Mateusz Rzeszutek 1649a90e29
Add protocol name&version to net attribute getters (#7994)
In preparation for
https://github.com/open-telemetry/opentelemetry-specification/pull/3272
2023-03-09 11:37:52 +00:00
Mateusz Rzeszutek 998e781009
Remove deprecated messaging.url attribute from messaging getter (#8008) 2023-03-09 11:41:51 +01:00
Lauri Tulmin 6c5351305c
`classLoaderOptimization` is not needed when matching by name (#8010) 2023-03-08 20:09:20 +02:00
Jean Bisutti ff73e9577c
Make the OpenTelemetry Logback appender work with GraalVM native images (#7989)
I have tried the [OpenTelemetry Logback
appender](https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/logback/logback-appender-1.0/library)
with GraalVM native images. The GraalVM configurations of this PR are
required to make it work.

It's my first GraalVM-related PR in this repo. In future works, adding
automatic tests with GraalVM on some [programmatic instrumentation
libraries](https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/docs/supported-libraries.md#libraries--frameworks)
may be interesting.
2023-03-08 07:58:37 -08:00
Simone Giusso 1a7e0f3235
Instrumenting cassandra executeReactive method (#6441)
It follows the
[issue](https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/6395#issue-1323561263)
I opened some days ago.

The `executeReactive` method use the same processor used by
`executeAsync` (see
[here](65d2c19c40/core/src/main/java/com/datastax/dse/driver/internal/core/cql/reactive/CqlRequestReactiveProcessor.java (L53)))
and wrap the callback in the `DefaultReactiveResultSet` publisher.

Here I'm simply overriding the `executeReactive` method doing the same
thing: call the already instrumented `executeAsync` method and wrapping
the callback using the `DefaultReactiveResultSet` publisher.

~~I did an upgrade of the `java-driver-core` library to have
`TracingCqlSession.java` extending the `ReactiveSession`. I have to
probably rename the `cassandra-4.0` module in `cassandra-4.14` but I'll
let you confirm this.~~ -> Cassandra-4.4 is enough.

---------

Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com>
2023-03-08 07:55:00 -08:00
James Moessis 3f45f755a9
Spring Webflux Library Instrumentation (#7899)
Resolves
https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/7436

* Created new Module `spring-webflux-5.3` which contains only
server-side library instrumentation
* Minimum supported version is 5.3 because there are various problems in
older versions of reactor and webflux that prevent a few of the tests
from passing.
* Moved existing `spring-webflux-5.0` (webclient instrumentation) into a
common `spring-webflux` folder next to the 5.3 (server) instrumentation.
Moved the README to the parent folder so the docs are cohesive between
client/server instrumentation.
* Implemented `WebFilter` which instruments the server-side 
* Depends on the `reactor-3.1` instrumentation to pass the context
around. Registers the react hook when it creates the `WebFilter`
* Tests using the standard HTTP server test suite

---------

Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com>
Co-authored-by: Mateusz Rzeszutek <mrzeszutek@splunk.com>
2023-03-08 08:43:46 +01:00
Lauri Tulmin b394bab2ce
Rework pulsar tests (#8000) 2023-03-08 07:48:59 +02:00
Lauri Tulmin a51535d08e
Test http client captured headers (#7993) 2023-03-07 20:05:29 +02:00
Lauri Tulmin 2b91879952
Rename pulsar package from v28 to v2_8 (#7999) 2023-03-07 17:03:48 +01:00
Tao Jiuming dc2c4f630a
[enhance][pulsar] add apache-pulsar client support (#5926)
Fix:
https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/2107

Motivation:
Support apache pulsar client from version 2.8.0 to lastest.

---------

Co-authored-by: daojun <jmtao@streamnative.io>
2023-03-07 16:19:49 +02:00
Alaksiej Ščarbaty 3b4aeebd6d
Ktor client instrumentation (#7982)
Client implementation for Ktor 2.0.
Resolves
https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/4972.

- Moved server instrumentation under `server` package
- Implemented a plugin for ktor `HttpClient`
2023-03-07 13:50:53 +01:00
Lauri Tulmin 0e15a47e93
Upgrade to gradle 8.0.2 (#7978) 2023-03-07 10:29:26 +02:00
Lauri Tulmin 1da7d55989
Increase rocketmq request timeout (#7987)
Same as
https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/7968
2023-03-07 08:56:08 +02:00
Lauri Tulmin 36af04266a
Fix AbstractMethodError in logback instrumentation (#7967)
Resolves
https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/7949
Replace wrapper class with JDK proxy to ensure that all methods are
implemented and delegated to the underlying event.
2023-03-03 08:32:50 -08:00
Lauri Tulmin dbb1b7ff03
Increase rocketmq request timeout (#7968)
Hopefully avoids exceptions like
`org.apache.rocketmq.shaded.io.grpc.StatusRuntimeException:
DEADLINE_EXCEEDED: deadline exceeded after...` in rocketmq 5 test setup.
2023-03-03 08:31:54 -08:00
Lauri Tulmin b926165fe1
Fix NPE in aws 2 when request instrumentation is suppressed (#7953)
Resolves
https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/7903
2023-03-03 09:31:01 +02:00
Lauri Tulmin 38f8a9c8a9
Don't run latest dep test suite during regular test run (#7954) 2023-03-03 09:20:35 +02:00
Lauri Tulmin af612859a0
Convert jsf tests to test suites (#7928)
Part of
https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/7911
2023-03-01 13:18:54 -08:00
Aaron Ai 88352fb8d3
Support more semantic convention for RocketMQ trace (#7871)
Fixes #7858
2023-03-01 12:48:42 -08:00
Lauri Tulmin f8927a45b2
Convert log4j test to test suites (#7942)
Part of
https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/7911
2023-03-01 11:26:15 -08:00
Lauri Tulmin 13c7617be1
Convert aws-sdk tests to test suites (#7943)
Part of
https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/7911
2023-03-01 11:25:53 -08:00
Lauri Tulmin 8c1b072682
Convert vaadin tests to test suites (#7944)
Part of
https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/7911
2023-03-01 11:24:46 -08:00
Lauri Tulmin 5fa02fd2ab
Add connection timeout to jodd http client tests (#7947) 2023-03-01 11:24:22 -08:00
Lauri Tulmin c721852d5f
Convert spring-jms tests to test suites (#7945)
Part of
https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/7911
2023-03-01 11:24:04 -08:00
Lauri Tulmin 0a9466523f
Convert finatra tests to test suites (#7946)
Part of
https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/7911
2023-03-01 11:23:43 -08:00
Lauri Tulmin 6f037345e4
Convert hibernate tests to test suites (#7929)
Part of
https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/7911
2023-03-01 07:53:01 +02:00
Lauri Tulmin b91d42d22e
Convert play tests to test suites (#7931)
Part of
https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/7911
2023-03-01 07:52:43 +02:00
Lauri Tulmin 3cfec95d45
Conver vertx tests to test suites (#7932)
Part of
https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/7911
2023-03-01 07:52:25 +02:00
Lauri Tulmin 07f621caf7
Convert jms tests to test suites (#7933)
Part of
https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/7911
2023-03-01 07:51:15 +02:00
Lauri Tulmin de296bdd0d
Remove test-sets plugin from modules without test sets (#7930) 2023-03-01 07:49:49 +02:00
Lauri Tulmin b937dc478c
Assert user agent when it is present (#7918) 2023-02-27 20:46:39 +00:00
Anurag Agarwal 7bb978d2da
HttpClient 4.0 java tests (#7912)
Converts apache-httpclient-4.0 unit tests in java. Version 4.0 was using
GuardedBy annotation which was interfering with the test cases, hence
the library version was shifted to 4.1.
https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/7195
2023-02-27 08:53:16 -08:00
Bryan Herbst ba9df3fea8
Make RxJava2 instrumentation Android-friendly (#7895)
Resolves #7894

Replace `MethodHandle` with older `java.lang.reflect.Field`, which is
supported on older Java versions.

Also enables animal sniffer for the RxJava2 instrumentation to prevent
regression.

---------

Co-authored-by: opentelemetrybot <107717825+opentelemetrybot@users.noreply.github.com>
2023-02-24 13:46:13 +02:00
Lauri Tulmin 64eb58633f
Fix jaxrs annotation instrumentation on openliberty (#7890)
Hopefully resolves
https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/7870
Jax-rs annotation instrumentation is only enabled when jax-rs api is
found in the class loader. This check does a `ClassLoader.getResource`
call for the resource name corresponding to class
`javax.ws.rs.container.AsyncResponse`. As far as I understand this
particular class is used only because it was added in jax-rs 2.0, any
other class added in jax-rs 2.0 could be used instead of it. On
openliberty we fail to find this class because it should be resolved
through bundle dynamic imports but we disable looking into dynamic
imports in
https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/instrumentation/internal/internal-eclipse-osgi-3.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/internal/osgi/EclipseOsgiInstrumentation.java
when we do the class presence check. Using a class in `javax.ws.rs.core`
package seems to work better as the import for that package is already
resolved by the time we make the `getResource` call.
2023-02-24 13:00:11 +02:00
Lauri Tulmin cbc616cbff
Fix kotlin coroutine context propagation (#7879)
Resolves
https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/7837
`org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.1` adds a second
`newCoroutineContext` that we shouldn't instrument. When we instrument
it the order of
[`KotlinContextElement`](https://github.com/open-telemetry/opentelemetry-java/blob/main/extensions/kotlin/src/main/java/io/opentelemetry/extension/kotlin/KotlinContextElement.java)
and user added `ThreadContextElement` gets reversed. If user added
`ThreadContextElement` changes opentelemetry context then these changes
will get overwritten by `KotlinContextElement`.
2023-02-24 12:31:43 +02:00
Lauri Tulmin fe263edecf
Fix vaadin14 latest dep test (#7893)
Looks similar to what we had for vaadin 16 recently. Pinning
https://www.npmjs.com/package/@types/node to 18.11.9
2023-02-23 20:39:08 -08:00