Commit Graph

2511 Commits

Author SHA1 Message Date
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
Phil fad7b24253
Add Jodd-Http instrumentation (#7868)
This PR resolves #7629 

This adds javaagent instrumentation for the
[jodd-http](https://http.jodd.org/) `HttpRequest`.
It creates `Http Client Spans` and `Http Client Metrics`, the lowest
supported version is `org.jodd:jodd-http:4.2.0` (most recent: `6.3.0`),
since this is the first version of the library supporting java 8, having
follow-redirect capability and `HttpRequest#overwriteHeader()` method.
The instrumented method's signature and return type `HttpRequest#send()`
has not been modified since, and therefore the instrumentation works for
all `jodd-http` versions above `4.2.0`.

Since this is my first contribution/instrumentation, I orientated myself
on the `apache-httpclient-5.0` instrumentation, but obviously I would be
glad to get some feedback on this

---------

Co-authored-by: Mateusz Rzeszutek <mrzeszutek@splunk.com>
2023-02-23 15:54:13 +00:00
Peter Findeisen 98653ef075
7883 ClassCastException when using -Dotel.jmx.target.system=tomcat (#7884)
Using "1" to specify units of plain cardinality.
2023-02-23 12:28:10 +01:00
Gregor Zeitlinger 78e459efa8
fix JMX usage examples (#7877)
If the unit is a number, there's a ClassCastException.

However, I'm not sure if updating the documentation is the right fix

- `1` is also used in some internal config files - e.g.
[tomcat](4db65b6d1f/instrumentation/jmx-metrics/javaagent/src/main/resources/jmx/rules/tomcat.yaml (L4))
- it's an incompatible change for users, such as myself
2023-02-22 15:49:11 -08:00