Jaeger is a highly recommended service because Kiali uses distributed tracing data for several features, providing an enhanced experience.
By default, Kiali will try to reach Jaeger at the GRPC-enabled URL of the form
http://tracing.<istio_namespace_name>:16685/jaeger, which is the usual case
if you are using the Jaeger Istio
If this endpoint is unreachable, Kiali will disable features that use
distributed tracing data.
If your Jaeger instance has a different service name or is installed to a different namespace, you must manually provide the endpoint where it is available, like in the following example:
spec: external_services: tracing: # Enabled by default. Kiali will anyway fallback to disabled if # Jaeger is unreachable. enabled: true # Jaeger service name is "tracing" and is in the "telemetry" namespace. # Make sure the URL you provide corresponds to the non-GRPC enabled endpoint # if you set "use_grpc" to false. in_cluster_url: 'http://tracing.telemetry:16685/jaeger' use_grpc: true # Public facing URL of Jaeger url: 'http://my-jaeger-host/jaeger'
Minimally, you must provide
enable Kiali features that use distributed tracing data. However, Kiali can
provide contextual links that users can use to jump to the Jaeger console to
inspect tracing data more in depth. For these links to be available you need to
spec.external_services.tracing.url which may mean that you should
expose Jaeger outside the cluster.
Use Jaeger frontend with Grafana Tempo tracing backend
It is possible to use the Grafana Tempo tracing backend exposing the Jaeger API. tempo-query is a Jaeger storage plugin. It accepts the full Jaeger query API and translates these requests into Tempo queries.
Since Tempo is not yet part of the built-in addons that are part of Istio, you need to manage your Tempo instance.
- Expose the Zipkin collector
- Expose the GRPC Jaeger Query port
When the Tempo instance is deployed with the needed configurations, you have to
from Istio to the Tempo Distributor service and the Zipkin port. Tanka will deploy
the service in
in_cluster_url Kiali option needs to be set to'
The Tempo Operator for Kubernetes provides a native Kubernetes solution to deploy Tempo easily in your system.
After installing the Tempo Operator in your cluster, you can create a new Tempo instance with the following CR:
kubectl create namespace tempo kubectl apply -n tempo -f - <<EOF apiVersion: tempo.grafana.com/v1alpha1 kind: TempoStack metadata: name: smm spec: storageSize: 1Gi storage: secret: type: s3 name: object-storage resources: total: limits: memory: 2Gi cpu: 2000m template: queryFrontend: jaegerQuery: enabled: true ingress: type: ingress EOF
Note the name of the bucket where the traces will be stored in our example is
object-storage. Check the
documentation to know more about what storages are supported and how to create
the secret properly to provide it to your Tempo instance.
Now, you are ready to configure the
field in your Istio installation. It needs to be set to the
9411 port of the
Tempo Distributor service. For the previous example, this value will be
Now, you need to configure the
in_cluster_url setting from Kiali to access
the Jaeger API. You can point to the
16685 port to use GRPC or
16686 if not.
For the given example, the value would be