Commit Graph

309 Commits

Author SHA1 Message Date
Stephen Cprek a60a324189
Add easier discoverability and clarity to the MDC appender docs (#8638)
Co-authored-by: opentelemetrybot <107717825+opentelemetrybot@users.noreply.github.com>
2023-06-27 12:14:04 +02: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
Mateusz Rzeszutek 0da1b695cf
Updated japicmp reports (#8472) 2023-05-11 19:50:13 +00:00
Lauri Tulmin b960c56aad
Correct link to environment variable configuration spec (#8365) 2023-04-26 08:35:35 +02:00
sfriberg d1b7356ffe
AddingSpanAttributes annotation (#7787)
Co-authored-by: Mateusz Rzeszutek <mrzeszutek@splunk.com>
2023-04-24 08:58:28 -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 2f0819ae20
Improve compatibility with SecurityManager (#7983)
This pr gives classes defined in agent and extension class loaders all
permissions. Injected helper classes are also defined with all
permissions. Agent startup is altered so that we won't call methods that
require permission before we are able to get those permissions.
This pr does not attempt to address issues where agent code could allow
user code to circumvent security manager e.g.
https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/InstrumentationHolder.java
gives access to `Instrumentation` that could be used to redefine classes
and remove security checks. Also this pr does not address failed
permission checks that could arise from user code calling agent code.
When user code, that does not have privileges, calls agent code, that
has the privileges, and agent code performs a sensitive operation then
permission check would fail because it is performed for all calling
classes, including the user classes. To fix this agent code should uses
`AccessController.doPrivileged` which basically means that, hey I have
done all the checks, run this call with my privileges and ignore the
privileges of my callers.
2023-04-05 15:41:37 +03:00
Trask Stalnaker 3e087e8206
Add note about Optional/Stream usage to style guide (#8193)
Based on #8190 and
https://github.com/open-telemetry/opentelemetry-java-instrumentation/pull/8131#discussion_r1151528583

---------

Co-authored-by: Mateusz Rzeszutek <mrzeszutek@splunk.com>
2023-04-03 20:15:59 +00: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
Jean Bisutti c5ef8ffd60
Add GraalVM native tests (#8163)
This PR allows:
* Executing the OTel Logback appender tests as GraalVM native
executables
* Executing the native tests once a day on Github

---------

Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com>
2023-03-30 14:10:48 -07:00
Tyler Benson 1b4b47a576
Add `disableShadowRelocate` build setting (#8117)
This is helpful for debugging.

Fixes #4672

Add the following to enable locally `~/.gradle/gradle.properties`

```
disableShadowRelocate=true
```
2023-03-28 19:42:45 +03: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 1948f70c40
Update api diffs (#8058) 2023-03-22 13:05:12 +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
Mateusz Rzeszutek 0e4e696ed4
Remove docs/semantic-conventions.md (#7836)
Resolves #7809
2023-02-16 13:17:08 -08: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
OpenTelemetry Bot f074b93110
Update the OpenTelemetry SDK version to 1.23.0 (#7800)
Update the OpenTelemetry SDK version to `1.23.0`.

---------

Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com>
2023-02-13 20:22:09 +00:00
kaibocai bbb6482979
Update contributing doc for instrumentationModule (#7803)
As `helperResourceNames()` method is replaced by
`registerHelperResources(HelperResourceBuilder)` method, replacing it to
use `registerHelperResources(HelperResourceBuilder)` in
[writing-instrumentation-module.md](https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/docs/contributing/writing-instrumentation-module.md#inject-additional-resources-using-the-helperresourcenames-method)
2023-02-11 12:43:06 -08:00
Gregor Zeitlinger dcc9795a2e
modules must be public (#7744)
modules must be public
2023-02-06 14:45:42 -08: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 8090ec124d
Post release steps (#7563) 2023-01-13 10:09:28 +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
sodared b18a250250
Update intellij-setup-and-troubleshooting.md (#7504)
fix wrong spell **'due ot'** in the doc
2023-01-03 12:05:31 +01:00
Lauri Tulmin d38bc4d2a4
Correct link to OpenTelemetry schemas (#7453)
was moved in
https://github.com/open-telemetry/opentelemetry-specification/pull/3046
2022-12-20 16:51:02 +01:00
Trask Stalnaker 386856cf5f
Post release updates (#7420) 2022-12-15 20:15:10 +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
Trask Stalnaker 66a112de30
Move repository-settings.md file (#7352)
I think this is a better location (and I'm going to suggest this as a
general practice for other repos where maintainers have admin rights)
2022-12-01 15:04:03 -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
Trask Stalnaker b0fb249a65
Post release updates (#7213)
fyi I added topic for SIG meeting in 2 weeks b/c I'd like to automate
this but have some questions:

* What is the purpose of keeping around old diffs?
* If we need them, what about not including the empty ones?
* Do we diff minor versions against patches (if any), or only against
last minor?
2022-11-18 10:55:57 +01: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
Trask Stalnaker 19ce0f87b9
GitHub action sync (#7150) 2022-11-15 09:35:30 -08:00