Unable to trace services with envoy and jaeger on k8s

Hi,
I’m trying to activate tracing on my sidecar proxies but I dont have any request sent from the envoy proxies to my jaeger collector.
I cant see where I’m wrong, maybe you’ll have an idea ?

My setup is the following

  • consul-k8s
  • ingress/nginx in front
  • some spring WS with opentracing
  • consul connect with envoy sidecar (default inject at true) install with helm charts
  • jaeger all-in-one

jaeger is running and collector is accesible at jaeger-collector:9411

my helm chart values are

ui:
 service:
  type: "LoadBalancer"

syncCatalog:
 enabled: true

connectInject:
 enabled: true
 default: true
 centralConfig:
  enabled: true

    # defaultProtocol allows you to specify a convenience default protocol if
    # most of your services are of the same protocol type. The individual annotation
    # on any given pod will override this value. A protocol must be provided,
    # either through this setting or individual annotation, for a service to be
    # registered correctly. Valid values are "http", "http2", "grpc" and "tcp".
  defaultProtocol: http

    # proxyDefaults is a raw json string that will be applied to all Connect
    # proxy sidecar pods that can include any valid configuration for the
    # configured proxy.
  proxyDefaults: |
      {
         "envoy_prometheus_bind_addr": "0.0.0.0:9100",
         "envoy_extra_static_clusters_json": "{\"connect_timeout\": \"3.000s\", \"dns_lookup_family\": \"V4_ONLY\", \"lb_policy\": \"ROUND_ROBIN\", \"load_assignment\": { \"cluster_name\": \"jaeger9411\", \"endpoints\": [ { \"lb_endpoints\": [ { \"endpoint\": { \"address\": { \"socket_address\": { \"address\": \"jaeger-collector\", \"port_value\": 9411 } } } } ] } ] }, \"name\": \"jaeger9411\", \"type\": \"STRICT_DNS\" }",
         "envoy_tracing_json":"{ \"http\": { \"config\": { \"collector_cluster\": \"jaeger9411\", \"collector_endpoint\": \"/api/v1/spans\", \"shared_span_context\": false }, \"name\": \"envoy.zipkin\" }}"
      }

client:
 grpc: true 

Tracing headers looks ok on my Webservices

 x-b3-parentspanid=ef5358c74e3fbb2e, 
 x-b3-sampled=0, 
 x-b3-spanid=e9609dffc43259fb, 
 x-b3-traceid=15d84ac2dc17d8f6, 
 x-content-type-options=nosniff, 
 x-envoy-expected-rq-timeout-ms=15000, 
 x-envoy-upstream-service-time=28, 
 x-forwarded-proto=http, 
 x-frame-options=DENY, 
 x-request-id=8145100a-baea-4548-81a2-16dae2a46194,

It works like a charm except than envoy dont send any request to the jaeger collector
I tried to catch outgoing request from envoy to jaeger-collector directly inside the pod but there is nothing

I’m missing something, and it is probably stupid, but I dont know what …
Any idea ?
Thank you.

I was missing some headers :sweat_smile: https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/observability/tracing

It worked better after adding it in my ingress-nginx

1 Like

Hi @mlvlup,

WELCOME! :smile:
Thanks for posting the doc! I’m sure others would find it valuable.

Happy coding!