open-telemetry / opentelemetry-go-instrumentation

OpenTelemetry Auto Instrumentation using eBPF
https://opentelemetry.io
Apache License 2.0
439 stars 68 forks source link

HTTP PRI method in Traces #798

Open MA3CIN opened 3 months ago

MA3CIN commented 3 months ago

Describe the bug

This might be a Free5GC issue more than otel, but i am still hoping you can guide me in the right direction. I'm using the Opentelemetry Operator with the Instrumentation CRD to instrument (get traces from) Free5GC. When analysing the traces obtained via Otel, i see unusual traces (with long spans of >1second) with the HTTP PRI method:

image

These PRI traces are certainly unexpected to say the least. The HTTP PRI method "is never used by an actual client. This method will appear to be used when an HTTP/1.1 server or intermediary attempts to parse an HTTP/2 connection preface." (based on https://webconcepts.info/concepts/http-method/PRI). So i imagine this means that the HTTP requests are send between a client and a server where there is an HTTP version mismatch?

Otherwise the logs on both otel instrumentation container and the otel operator seem clean:

image

image

Environment

To Reproduce

Steps to reproduce the behavior:

  1. Deploy Otel Operator, Go Instrumentation, Free5GC (latest) and Jaeger.
  2. View logs from the otel sidecar container or traces in Jaeger
  3. Observe unusual traces with HTTP PRI method.
MA3CIN commented 2 months ago

I'd love to get some input from you, to at least guide me in the right direction (is this a Free5GC related problem?)

RonFed commented 2 months ago

@MA3CIN I'm not familiar with Free5GC. Is it expected to be an HTTP2 server? Is the client using HTTP2? Currently, our tests do not cover instrumenting HTTP2. You can use a packet sniffing tool to see what is being sent.