You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am trying to setup tracing integration using the Telemetry API.
The traces are sent with a Host header value that is equal to the cluster_name (e.g. Host: outbound|9411||tempo-tempo-distributed-distributor.tempo.svc.cluster.local).
This value includes special characters such as |, which can rejected by tracers. On Tempo, this manifests as a HTTP/1.1 400 Bad Request: malformed Host header response:
POST /api/v2/spans HTTP/1.1
host: outbound|9411||tempo-tempo-distributed-distributor.tempo.svc.cluster.local
content-type: application/json
x-envoy-internal: true
x-forwarded-for: 10.72.109.145
x-envoy-expected-rq-timeout-ms: 5000
transfer-encoding: chunked
<span cut for brevity>
HTTP/1.1 400 Bad Request: malformed Host header
Content-Type: text/plain; charset=utf-8
Connection: close
400 Bad Request: malformed Host header
This is a regression from the previous method of configuring tracing. Configuring meshConfig.tracing.zipkin.address, created a cluster with a fixed name of zipkin. As zipkin does not contain any special characters, this Host header was accepted by our trace collector.
REQUIRED. Specifies the service that the Zipkin API. The format is [<Namespace>/]<Hostname>. The specification of <Namespace> is required only when it is insufficient to unambiguously resolve a service in the service registry. The <Hostname> is a fully qualified host name of a service defined by the Kubernetes service or ServiceEntry.
Example: “zipkin.default.svc.cluster.local” or “bar/zipkin.example.com”.
For the second case of “bar/zipkin.example.com”, I assume we should then split on the / and only use zipkin.example.com for the Host header?
I'll have a look at the code and see if I can do a PR.
Bug Description
I am trying to setup tracing integration using the Telemetry API.
The traces are sent with a Host header value that is equal to the cluster_name (e.g.
Host: outbound|9411||tempo-tempo-distributed-distributor.tempo.svc.cluster.local
).This value includes special characters such as
|
, which can rejected by tracers. On Tempo, this manifests as aHTTP/1.1 400 Bad Request: malformed Host header
response:Our meshConfig:
Results in the following tracing configuration on the listener:
This is a regression from the previous method of configuring tracing. Configuring
meshConfig.tracing.zipkin.address
, created a cluster with a fixed name ofzipkin
. Aszipkin
does not contain any special characters, this Host header was accepted by our trace collector.Possible solutions that I can see:
collector_hostname
parameter in Envoy in some way? This would also solve External tracing.zipkin.address results in requests with host=zipkin #36166.collector_hostname
tozipkin
?Version
Additional Information
No response
The text was updated successfully, but these errors were encountered: