Commit Graph

78 Commits

Author SHA1 Message Date
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
jack-berg 1dfec3b928
Semconv docs (#7272)
More documentation about the semantic conventions implemented by
instrumentation.

Resolves #6735.
2022-12-08 09:27:48 -08:00
Mateusz Rzeszutek 17b3fdb04a
Make preparations for Spring Web & WebMVC 6 instrumentations (#7343)
Just moving things around, extracting parent dir for `spring-web` and
`spring-webmvc`
2022-12-01 13:08:32 +01:00
Felix Wong d0158c4bff
Rename WebSphere Liberty Profile to Open Liberty (#7349)
fixes #7346 

Rename "WebSphere Liberty Profile" to "Open Liberty" and updated the
link.
2022-12-01 12:03:22 +01:00
Trask Stalnaker a4740264c2
Use windows-latest (#7299) 2022-11-29 07:54:03 -08:00
Aaron Ai 2d7395c44b
Introduce markdown lint check (#7175)
Fixes #7129
2022-11-16 20:48:42 -08:00
Aaron Ai 97773819c8
Add RocketMQ gRPC/Protobuf-based Client into supported-libraries.md (#7198)
Add RocketMQ gRPC/Protobuf-based Client into supported-libraries.md

related issue: #6764
2022-11-16 09:35:32 +01:00
jack-berg 78e6744463
Add semantic conventions column to supported libraries doc (#6974)
Related to #6735.

Want to get buy in on the approach before going further.
2022-11-01 11:26:41 -07:00
Lauri Tulmin 7d01a221a6
Update websphere link (#6602) 2022-09-13 12:44:25 +02:00
Trask Stalnaker 9fe3761731
Document upper version limits (#6436) 2022-08-08 10:08:40 -07:00
Will Li c0cacb8544
add missing jboss-logmanager to supported libraries list (#6369)
* add missing jboss-logmanager to supported libraries list

Signed-off-by: Cuichen Li <cuichli@cisco.com>

* Update docs/supported-libraries.md

Co-authored-by: Mateusz Rzeszutek <mrzeszutek@splunk.com>

Co-authored-by: Mateusz Rzeszutek <mrzeszutek@splunk.com>
2022-07-25 11:38:13 -07:00
Mateusz Rzeszutek db1250d8c9
Add a dropwizard-metrics -> OTel metrics bridge (#6259)
* Add a dropwizard-metrics -> OTel metrics bridge

* disable by default

* enable metrics for test
2022-07-15 14:48:52 -07:00
Lauri Tulmin ae2a908256
Run tests with dubbo3 (#6247)
* Run tests with dubbo3

* remove muzzle limit

* fill peer name on dubbo 3
2022-07-01 08:14:23 -07:00
Lauri Tulmin b992e894bc
Run tests with latest play mvc (#6157)
* Run tests with latest play mvc

* restart build

* spotless
2022-06-13 13:02:15 -07:00
Lauri Tulmin 157ab7f754
Implement Oracle UCP connection pool metrics (#6099)
* Implement Oracle UCP connection pool metrics

* add additional instrumentation name

* change asserting no metrics reported after shutdown
2022-06-02 22:47:04 -07:00
jason plumb f1a746dca5
Add tomcat-jdbc connection pool metrics instrumentation (#6102)
* add tomcat-jdbc connection pool metrics instrumentation

* use duration

* code review comments

* remove unnecessary awaits

* udpate supported-libraries.md

* add comment about weakmap

* add sleeps for safety
2022-06-02 16:18:07 -07:00
Lauri Tulmin b95b64ba88
Implement Vibur DBCP connection pool metrics (#6092)
* Implement Vibur DBCP connection pool metrics

* Apply suggestions from code review

Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com>

* address review comments

* don't check for metircs that aren't reported

* rework library test setup

Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com>
2022-05-26 11:26:02 +03:00
Lauri Tulmin a1626ccc8c
Add OSHI to supported libraries (#6073) 2022-05-20 09:11:33 -07:00
Lauri Tulmin 6c44340f1c
Enable grizzly instrumentation by default (#6049) 2022-05-17 14:18:29 -07:00
Mateusz Rzeszutek 5bcab32379
Implement HikariCP connection pool metrics (#6003)
* Implement HikariCP connection pool metrics

* rebase after SDK update

* fix muzzle

* code review comments
2022-05-12 18:48:07 -07:00
Mateusz Rzeszutek 2fad192fc1
Implement vertx-kafka-client instrumentation; batch processing (#5982)
* Implement vertx-kafka-client instrumentation; batch processing

* try-finally just in case

* Add to supported libraries list

* Update instrumentation/vertx/vertx-kafka-client-3.6/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vertx/kafka/v3_6/InstrumentedBatchRecordsHandler.java

Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com>

Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com>
2022-05-10 12:00:54 +02:00
Trask Stalnaker 4facb78c7a
Update docs to reflect Java 17 (#5610)
* Update docs to reflect Java 17

* Update JVM distros
2022-03-18 10:31:25 +02:00
Lauri Tulmin 2ebe912fe4
GraphQL java instrumentation (#5583)
* GraphQL Java Initial Commit

* [WIP] First steps for GraphQL instrumentation, totally not ready

[skip ci]

* GraphQL Java instrumentation

* address review comments

* Apply suggestions from code review

Co-authored-by: Mateusz Rzeszutek <mrzeszutek@splunk.com>

* review feedback

* scope handling

* Apply suggestions from code review

Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com>

* use spotless:off

* trigger build

* review comments

Co-authored-by: Jordie <xd@jrdie.nl>
Co-authored-by: Mateusz Rzeszutek <mrzeszutek@splunk.com>
Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com>
2022-03-17 08:55:45 -07:00
Trask Stalnaker ab9169cd25
Add Azure SDK instrumentation (#5467)
* Add Azure SDK instrumentation

* Add to supported libraries table

* Keep suppression for 1.19
2022-03-04 13:08:50 -08:00