Commit Graph

289 Commits

Author SHA1 Message Date
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
Trask Stalnaker d9c4784952
Stabilize annotations (#7046)
Resolves #6494
2022-11-08 08:46:11 -08: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
Trask Stalnaker d7df94ad5b
Fix branch protection rules (#6973)
(in particular it was the dependabot rule that was not matching and so
dependabot was failing)
2022-10-26 11:22:16 -07:00
Trask Stalnaker 71b3e3e027
Library doc cleanup (#6948)
Related to #6947, but just cleans up the library module doc that already
existed (mostly for uniformity). Does not introduce any new doc.
2022-10-24 10:26:21 -07:00
Aaron Ai 3911cacfdc
Fix typos (#6961) 2022-10-24 09:06:01 -07:00
Trask Stalnaker c3f61e9d8d
Update supported libraries listing (#6959) 2022-10-24 08:49:32 -07:00
Trask Stalnaker d18a05b5a2
Add section to coding guidelines on Optional usage (#6894)
This was discussed a long while back, but never documented (and recently
came up in #6889)

Co-authored-by: Fabrizio Ferri-Benedetti <fferribenedetti@splunk.com>
2022-10-22 18:07:00 -07:00
Trask Stalnaker 9ce68fb937
Fix metric units (#6931)
Follow-up to #6930
2022-10-22 10:00:48 -07:00
Trask Stalnaker 222cbb9c30
Add api diffs for 1.19.0 (#6921)
Following post-release instructions at
https://github.com/open-telemetry/opentelemetry-java-instrumentation/blob/main/RELEASING.md#update-release-versions-in-documentations

Will automate later once I understand this better.
2022-10-20 13:07:57 +03:00
Trask Stalnaker 3601a84b3d
Update repo settings doc (#6877)
Added new "Restrict pushes that create matching branches: UNCHECKED",
which I discovered is needed during contrib release.

Removed the old `v*` branch protections since we don't need to make any
more patch releases from those old branch names anymore.
2022-10-14 08:53:42 -07:00
Trask Stalnaker 9621ea08cf
Update repo settings (#6862)
it seems that github recently tightened up the branch protection
restrictions (in a way that makes more sense than the prior behavior)
2022-10-13 20:07:36 -07:00
jack-berg aeac361816
Upgrade to otel java 1.19.0 (#6757)
Working PR to capture all the changes required to update to otel java
1.19.0. The new log API force allows
`:instrumentation-appender-api-internal` and
`:instrumentation-appender-sdk-internal`, but necessitates a decent
amount of refactoring as a result.

The PR points at the `1.19.0-SNAPSHOT`, which I'll update upon
publication.

Co-authored-by: Mateusz Rzeszutek <mrzeszutek@splunk.com>
Co-authored-by: Trask Stalnaker <trask.stalnaker@gmail.com>
Co-authored-by: Lauri Tulmin <ltulmin@splunk.com>
2022-10-12 09:19:37 -07:00
Trask Stalnaker f4c5719c99
Allow auto-merge on PRs (#6812)
This seems nice for after pushing `spotlessApply` on an otherwise
approved and passing PR. I just enabled it and tried it on #6774.

(somewhat related to #6743)

Btw, I thought this was helpful explanation

> After you enable auto-merge for a pull request, if someone who does
not have write permissions to the repository pushes new changes to the
head branch or switches the base branch of the pull request, auto-merge
will be disabled. For example, if a maintainer enables auto-merge for a
pull request from a fork, auto-merge will be disabled after a
contributor pushes new changes to the pull request.


https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/automatically-merging-a-pull-request#about-auto-merge
2022-10-06 16:02:27 -07:00
Aaron Ai 4e59f10687
Rearrange the file structure of RocketMQ instrumentation (#6762)
Fixes #6761
2022-09-28 13:45:59 -07:00
Trask Stalnaker 32d7febed5
Update repository settings for dependabot (#6715) 2022-09-22 16:03:36 -07:00
Trask Stalnaker 2d79f7903c
Branch protection rules for dependabot (#6674) 2022-09-20 08:39:07 -07:00
Trask Stalnaker fc0d94ce4a
Update squash merge message setting (#6649)
Resolves #6624

I've updated the setting already
2022-09-19 08:39:11 -07:00
Mateusz Rzeszutek c88dda4699
Fix jApiCmp files (#6641) 2022-09-16 13:19:03 +03:00
Trask Stalnaker d5c6453636
Remove external usages of ClassNames (and move it to internal) (#6584)
* Reduce dependency on simpleName

* Move ClassNames to internal

* Javadoc

* Updates

* Fix

* Spotless

* Rename

* Add test
2022-09-13 13:58:19 -07:00
Lauri Tulmin 7d01a221a6
Update websphere link (#6602) 2022-09-13 12:44:25 +02:00