-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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
wrong status code set in tracing spans #10538
Comments
The configuration you shared does not have any component that modifies your telemetry, therefore the Collector is not at fault here. The bug is likely in the SDK or client that produces the OTLP data. If your SDK/client supports some kind of stdout exporter you can check that this is the case by enabling said exporter and checking what data is coming out of your SDK/client. Can you check this so we can confirm the issue is not in the Collector? |
our suspicion (cc/ @jaronoff97) is that this has to do with the otlp receiver not properly converting grpc <-> http status code , you can see in the picture below that the span
|
it looks like this was closed by mistake |
@rafaeljesus Please try upgrading to v0.99.0 or higher. There was a fix to properly propagate error codes. |
after inspection, we are already on it looks like the receiver always sets 500 regardless of what Export returns as a error
|
and my guess is that the permanent 400 err is falling here
does that make sense? |
@rafaeljesus thank you for the detailed issue. I think I see why this is happening. the OTLP exporters use a method, Then, in the otlpreceiver's http handling, we convert back from the grpc Status to an HTTP error code. As you've pointed out, the conversion back is not handling This is definitely a bug, I'll get a fix open. |
Once #9041 we'll also have a non-lossy way to transmit http status codes through the consumer pipeline. |
Describe the bug
I have a
logs.exporters.otlphttp
that is not properly converting the status code being returned from the logging backend, the problem is that the logging backend (in this case logmixer-ingest) is returning 400 status code but the collector server span (in this case logingest) is setting 500 instead, this is causing my SLOs to incorrectly burnSteps to reproduce
What did you expect to see?
I expect the server span status code attribute to correctly match what is being returned by the logging service, which in this case, the logging service returns 400 but the server span sets 500 instead
What did you see instead?
here we see that the http client is correctly setting 400 to the span
in the span above, we see that the permanent error message contains the 400
but in the server span we see that it is 500 instead
What version did you use?
v0.95.0
What config did you use?
this is the configMap managed by https://github.com/open-telemetry/opentelemetry-operator
Environment
GKE
Additional context
The text was updated successfully, but these errors were encountered: