-
Notifications
You must be signed in to change notification settings - Fork 2.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Span naming is problematic for REST-endpoints: Using the method is too generic #29297
Comments
Not sure if this is a bug... We need to evaluate. |
/cc @Ladicek, @radcortez |
I (as User) consider it a bug as it is a regression. If I had an ops team trained with the old behaviour, I could not upgrade Quarkus without re-training them. Potentially even rewriting standard operation procedures |
It's a bug.
would be optimal. |
+1 on something like |
In previous versions, we used the request URI as the span name, which is not recommended by the spec (due to high cardinality): https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/semantic_conventions/http.md#name We are now using the route name if we can determine it. If we are getting a Regardless, I think we should not change the current name handling since this is delegated to the OTel implementation. |
This affects Metrics as well and will require in depth analysis, See Micrometer URI templating does not apply for unauthorized requests |
Do we need to do anything about this ticket? |
We are following the OTel spec here. I suspect that the reason we are not getting a route name is that the endpoint is defined in a super class, and due to #12736, we are not able to retrieve the route information, so we go with the OTel default (which is OK, because OTel does not mandate to have a route name). Since we never got a reproducer and we are confident that we are following the OTel spec, I think it is ok to close this issue. |
@pilhuhn if you can provide us a reproducer, please reopen the issue and ping me. |
I think we can do better here, if time allows it. |
Describe the bug
In 2.11.3 the REST-server spans were named after the rest-method called (e.g. /api/bla/...) while since 2.12.1 (at least) they are just "HTTP GET".
This is problematic from a user / admin point of view, as in Jaeger e.g. the search is for "operation is populated by span name
Also both in Jaeger and Tempo UI, the span name is what is shown in the list of traces. Meaning that now I have tons of "HTTP GET" operations and can't easily see and select for which endpoint
Apparently there is a
http.target
tag that can be used for filtering, but that is not auto-populated in the Jaeger UI.#opentelemetry
Expected behavior
Span names should be the name of the HTTP endpoint.
If that can't be determined e.g. in the reactive case, it should at least be possible to use the well established behaviour for non-reactive endpoints. perhaps enabled via a flag.
Actual behavior
Span names are 'HTTP GET' or 'HTTP POST', which is much too generic
How to Reproduce?
Output of
uname -a
orver
No response
Output of
java -version
No response
GraalVM version (if different from Java)
No response
Quarkus version or git rev
No response
Build tool (ie. output of
mvnw --version
orgradlew --version
)No response
Additional information
No response
The text was updated successfully, but these errors were encountered: