How to debug tracing in Istio


We are forwarding B3 Trace Headers as part of the microservice request forwarding. However we don’t see those requests in Jaeger traces.
What are the basic steps of troubleshooting tracing in Istio? How do I enable debug logs in Jaeger-all-in-one docker image?
How can I see logs from Jaeger agent or collector? There is no documentation about these things in Istio docs or Jaeger docs websites.

FAQ entry on this very topic:

Hope that helps.

Thanks Douglas!
Although I had port naming correct in service yaml, containerport was missing in Pod Spec.
TIL for K8s, containerPort doesn’t matter but for Istio it matters. Should the docs be updated to stress that? It is too easy to miss and concentrates more on port naming. I can open a PR to do it.

One related question: Although I am seeing the traces now, all of them are of “span: client” type.
When does “span: server” traces show up?
Do we have to create child spans using opentracing or opencensus libraries? We are just forwarding tracing headers at the starting of the server.

Youll need to use client libraries for detailed tracing. This what happens exactly :-

# Although Istio proxies are able to automatically send spans, they need some
# hints to tie together the entire trace. Applications need to propagate the
# appropriate HTTP headers so that when the proxies send span information, the
# spans can be correlated correctly into a single trace.
# To do this, an application needs to collect and propagate the following
# headers from the incoming request to any outgoing requests:
# x-request-id
# x-b3-traceid
# x-b3-spanid
# x-b3-parentspanid
# x-b3-sampled
# x-b3-flags
# This example code uses OpenTracing ( to propagate
# the 'b3' (zipkin) headers. Using OpenTracing for this is not a requirement.
# Using OpenTracing allows you to add application-specific tracing later on,
# but you can just manually forward the headers if you prefer.

With tracing enabled you can trace function to function calls, insert baggages, rpc request tracing.