Commit Graph

101 Commits

Author SHA1 Message Date
Lauri Tulmin 17c8f0da74
elasticsearch-java 7.17.20 has native instrumentation (#11083) 2024-04-10 13:05:12 -07:00
Gregor Zeitlinger 3839342e3b
move spring resources to javaagent directory (#10813) 2024-03-14 08:27:19 -07:00
Lauri Tulmin c8f2cc5a9b
Add instrumentation for jetty 12 (#10575)
Co-authored-by: Jean Bisutti <jean.bisutti@gmail.com>
2024-03-12 15:59:27 -07:00
Steve Rao 86c3263868
Add support for XXL-JOB (#10421)
Co-authored-by: Lauri Tulmin <tulmin@gmail.com>
2024-03-12 15:54:54 -07:00
Sam Wright 1225eb8cad
Capture http.route for pekko-http (#10799)
Co-authored-by: Lauri Tulmin <tulmin@gmail.com>
2024-03-12 18:04:29 +02:00
Lauri Tulmin a3a572540e
Add instrumentation for graphql 20 that does not use deprecated methods (#10779) 2024-03-12 13:48:17 +02:00
Lauri Tulmin 617d4edeb5
Update suppression keys for finagle (#10579) 2024-02-21 14:38:54 +02:00
Steven Swartz 807e0c2f9b
Fix documentation link to graphql semantic conventions (#10565) 2024-02-16 09:07:03 +02:00
Dan Markwat 205100e1dc
feat: instruments finagle's netty-based stack (#10141)
Co-authored-by: Lauri Tulmin <ltulmin@splunk.com>
2024-02-15 07:39:48 -08:00
Steve Rao f777c0eaf9
Add support for MyBatis framework (#10258)
Co-authored-by: Lauri Tulmin <tulmin@gmail.com>
2024-02-12 15:06:57 -08:00
Elbio Caetano 27c85e208e
feat: instrumentation for apache httpclient 5 (#10100)
Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com>
2024-01-31 07:27:25 +02:00
Lauri Tulmin fb4d0be411
Add quarkus resteasy reactive to supported libraries (#10201) 2024-01-10 07:28:53 -08:00
Lauri Tulmin 5b95f0fb3a
Update supported frameworks doc (#10157) 2024-01-03 10:48:55 -08:00
dingjiefei 20ab0121fa
Add instrumentation for druid connection pool (#9935)
Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com>
2023-12-21 17:09:29 +00:00
Lauri Tulmin 74c233d898
Update supported libraries (#10101) 2023-12-21 08:28:32 -08:00
Lauri Tulmin bc5398ce3f
Add instrumentation for vert.x redis client (#9838) 2023-12-08 10:00:10 +02:00
Trask Stalnaker a97f7b1786
Consistent version numbers (not including patch version) (#9983) 2023-12-01 11:27:11 +01:00
Liu Ziming 702ae30076
feat: get route info in spring-cloud-gateway (#9597) 2023-11-03 09:40:35 -07:00
Phil Clay dc975b7bc5
Add instrumentation for jaxws metro 3.0+ (#9705) 2023-10-27 06:36:28 -07:00
Lauri Tulmin 90a6ed76cd
Update jvm metrics spec link (#9636) 2023-10-09 14:51:38 +00:00
Lauri Tulmin 795c053dc6
Fix spec links (#9603) 2023-10-04 17:54:35 +03:00
Lauri Tulmin 4baa694309
Add instrumentation for hibernate reactive (#9304) 2023-08-25 09:15:46 -07:00
Lauri Tulmin b3f36e936d
Update supported libraries for hibernate 6 (#9302) 2023-08-25 10:38:16 +03:00
Trask Stalnaker 2bdddafdc4
Apply Prettier to markdown files (#8968) 2023-07-19 12:22:35 -07:00
Lauri Tulmin a1f623f692
Update semconv links (#8894) 2023-07-07 08:29:55 +02:00
Alexander Wert 6461f044e1
Instrumentation for Elasticsearch 8+ (#8799) 2023-07-06 10:08:59 +00:00
Trask Stalnaker 39f4891b21
Rename runtime-metrics to runtime-telemetry (#8715)
Co-authored-by: Mateusz Rzeszutek <mrzeszutek@splunk.com>
2023-06-14 09:52:27 +00:00
Lauri Tulmin ebd31188af
Fix link to dropwizard views (#8694) 2023-06-11 12:38:04 -07:00
jason plumb f924bd3ec0
Looks like a new docs layout for dropwizard (#8654) 2023-06-06 09:04:29 +03:00
Lauri Tulmin 6dbb1589ce
Change grizzly supported version to 2.3 (#8570) 2023-05-25 07:53:38 -07:00
Robert Toyonaga 3d0971b318
Rename `runtime-metrics` to `runtime-telemetry-jmx` (#8165)
Co-authored-by: opentelemetrybot <107717825+opentelemetrybot@users.noreply.github.com>
2023-05-15 17:30:42 -07:00
Lauri Tulmin 04097b3093
Add instrumentation for vertx-sql-client (#8311) 2023-04-20 08:11:24 -07:00
Felix Wong 51e3b77226
Smoke test with Liberty 23.0.0.3 (#8320) 2023-04-20 09:57:00 +03:00
Dmytro Iaroslavskyi 511f6b7361
ZIO 2.0 instrumentation (#7980)
Co-authored-by: Lauri Tulmin <ltulmin@splunk.com>
2023-04-06 09:07:46 -07:00
Lauri Tulmin 08236a710f
Add library instrumentation for java http client (#8138)
Resolves
https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/8069
The javaagent instrumentation also supports propagating context into
[BodyHandler](https://docs.oracle.com/en/java/javase/11/docs/api/java.net.http/java/net/http/HttpResponse.BodyHandler.html)
implemented in
https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/instrumentation/java-http-client/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/httpclient/BodyHandlerWrapper.java
I think the initial idea behind it was that this allowed propagating
context into callbacks. Because this didn't work for
`connectionErrorUnopenedPortWithCallback` test later we also added
wrapping completable future to take care of propagating context into
callbacks. Should I also implement context propagation for `BodyHandler`
in library instrumentation or should I just delete it? I guess it could
come handy if someone builds a custom `BodyHandler` and wants to emit
spans from there, though this doesn't feel too likely. I'd like deleting
it more.

---------

Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com>
2023-04-03 13:08:29 -07:00
Phil a6bc3b197d
Add R2dbc statement javaagent instrumentation (#7977)
This PR resolves #2515 .
It adds javaagent instrumentation for
[r2dbc-spi](https://github.com/r2dbc/r2dbc-spi) >= v1.0

As suggested by @mp911de in
https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/2515#issuecomment-1141723561
I used the [r2dbc-proxy](https://github.com/r2dbc/r2dbc-proxy)
`ProxyConnectionFactory` to intercept Database query executions and
create according spans.

Example span from example project using
[spring-boot-starter-data-r2dbc](https://github.com/spring-projects/spring-data-relational)
Application:

![r2dbc-example](https://user-images.githubusercontent.com/39240633/222902361-a3878ecd-a8d0-4d33-b0c0-e410d908e05e.png)

---------

Co-authored-by: Lauri Tulmin <ltulmin@splunk.com>
2023-03-23 12:52:53 +01:00
Lauri Tulmin 3bb312a2d6
Document that spring webflux library instrumentation has server metrics (#8068) 2023-03-22 13:10:55 +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
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
Mateusz Rzeszutek a217e77290
Add HTTP client spans&metrics to Ktor entry in the supported libs doc (#7997)
See #7982
2023-03-07 16:02:40 +02:00
Felix Wong ee781f5710
Update Liberty versions (#7857)
Open Liberty version 20.0.0.x are out of support. This PR removes
20.0.0.x and adds 22.0.0.x.
2023-03-02 18:53:25 +02: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
moznion 7e8d76a83b
Put `http.route` attribute onto `http.server.duration` on Play framework request processing (#7801)
Basically, `akka-http` instrumenter has the responsibility to instrument
the `http.server.duration` for the Play framework application, but the
current implementation has not marked the `http.route` attribute.
ref:
8e8161cb2e/instrumentation/akka/akka-http-10.0/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/akkahttp/server/AkkaHttpServerAttributesGetter.java (L59)

Actually, it's hard to record that attribute by only the akka-http layer
because that library's request object doesn't hold the route
information, e.g. placeholder.

So this patch delegates that job to the `play-mvc` instrumenter and when
that has been able to get the route info, the instrumenter puts
`http.route` attribute onto `http.server.duration`.

For example, when the routes configuration of the Play is like the
following:

```
GET  /foo/:bar  controllers.HomeController.doSomething(bar: String)
```

and when it tries to access that API, then OTEL instruments like so:

```prometheus
http_server_duration_count{otel_scope_name="io.opentelemetry.akka-http-10.0",otel_scope_version="1.23.0-alpha-SNAPSHOT",http_flavor="1.1",http_method="GET",http_route="/foo/$bar<[^/]+>",http_scheme="http",http_status_code="200",net_host_name="localhost",net_host_port="9000"} 1.0 1676078079798
http_server_duration_sum{otel_scope_name="io.opentelemetry.akka-http-10.0",otel_scope_version="1.23.0-alpha-SNAPSHOT",http_flavor="1.1",http_method="GET",http_route="/foo/$bar<[^/]+>",http_scheme="http",http_status_code="200",net_host_name="localhost",net_host_port="9000"} 12183.558843 1676078079798
http_server_duration_bucket{otel_scope_name="io.opentelemetry.akka-http-10.0",otel_scope_version="1.23.0-alpha-SNAPSHOT",http_flavor="1.1",http_method="GET",http_route="/foo/$bar<[^/]+>",http_scheme="http",http_status_code="200",net_host_name="localhost",net_host_port="9000",le="0.0"} 0.0 1676078079798
...
http_server_duration_bucket{otel_scope_name="io.opentelemetry.akka-http-10.0",otel_scope_version="1.23.0-alpha-SNAPSHOT",http_flavor="1.1",http_method="GET",http_route="/foo/$bar<[^/]+>",http_scheme="http",http_status_code="200",net_host_name="localhost",net_host_port="9000",le="+Inf"} 1.0 1676078079798
```

Rel: #1415

---------

Signed-off-by: moznion <moznion@mail.moznion.net>
2023-02-14 14:05:59 +02:00
Lauri Tulmin 2e599633df
Update link to restlet framework website (#7617)
Resolves
https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/7614
2023-01-19 10:43:54 +01:00
Trask Stalnaker 72f8b94342
Update change log for 1.22 (#7556) 2023-01-12 16:32:49 +00:00
Trask Stalnaker 09b63d2294
Use new reactor contextWrite when available (from reactor 3.4.0) (#7538)
Related to #7107 and #7202

Support WebFlux 6. 

Supporting reactor 3.5 seems pretty straightforward, the
`subscriberContext()` was deprecated in 3.4 in favor of
`contextWrite()`. In 3.5, `subscriberContext()` was removed.

This PR doesn't bump `latestDepTestLibrary` to 3.5 yet because there are
a couple of tests that succeed in 3.4 using `contextWrite()` but fail in
3.5 using `contextWrite()`.

My proposal is to review/merge this PR, and then I can ping our resident
reactor experts to see if they have thoughts on the failing tests in
3.5.
2023-01-11 20:26:12 -08:00
Mateusz Rzeszutek ca310b4ddb
Support Spring Web MVC in library instrumentation (#7552)
Part of
https://github.com/open-telemetry/opentelemetry-java-instrumentation/issues/7312

This is pretty much a copy of the `spring-webvmc-5.3:library` module
with `s/javax/jakarta/` applied. I'm planning on removing the 5.3
instrumentation after #7312 is done.
2023-01-11 17:22:55 -08:00
Trask Stalnaker 05e5316b84
Update supported versions doc (#7549) 2023-01-11 17:12:17 +00:00
Trask Stalnaker 02fb579470
Fix markdown lint error (#7371) 2022-12-08 13:32:26 -08:00