The Solo Enterprise for Istio telemetry pipeline integrates with Jaeger as the tracing platform. Jaeger is an open source tool that helps you follow the path of a request as it is forwarded between microservices. The chain of events and interactions are then captured by the telemetry pipeline, and you can bring your own Jaeger instance to visualize to visualize the trace data in the Solo UI. You can use this data to troubleshoot issues in your microservices and identify bottlenecks. You can also forward the traces from the telemetry gateway to your own Jaeger tracing platform.

Request tracing is not set up in the telemetry pipeline by default. To capture traces for Istio-enabled workloads, you must instrument your workloads to generate traces and to send them to the telemetry collector agent so that they can be forwarded to the telemetry gateway and your custom Jaeger instance.

Before you begin

  1. Install either an ambient or sidecar mesh, and deploy the Bookinfo sample app to the mesh.

  2. Install the Solo Enterprise for Istio management plane.

Step 1: Enable tracing in Istio

Instrument Istio workloads to collect traces by updating your Istio installation. The steps to update Istio vary depending on how you installed Istio.

Sidecar mode

Ambient mode

Step 2: Enable the Jaeger UI and add traces to the pipeline

Now that your traces are enabled for Istio workloads, you can configure the telemetry pipeline to collect the traces and forward the traces to your own Jaeger tracing platform.

Bring your own Jaeger

Instead of using the built-in Jaeger instance, you can configure the Gloo UI to point to your Jaeger instance instead.

Deprecated: Use the built-in Jaeger

During your Solo Enterprise for Istio installation, you can enable Jaeger as the tracing platform for your environment and embed the Jaeger UI in to the Gloo UI.

Step 3: Verify tracing

Open the Gloo UI and verify that traces are collected for your Istio workloads.

Sidecar mode

  1. Open the Gloo UI. The Gloo UI is served from the gloo-mesh-ui service on port 8090. In multicluster setups, the UI is installed in the cluster where the management plane is deployed. You can connect by using the meshctl or kubectl CLIs.

    • meshctl: For more information, see the CLI documentation.
        meshctl dashboard
        
    • kubectl:
      1. Port-forward the gloo-mesh-ui service on 8090.
          kubectl port-forward -n gloo-mesh svc/gloo-mesh-ui 8090:8090
          
      2. Open your browser and connect to http://localhost:8090.
  2. From the menu, select Tracing and verify that the Jaeger UI opens.

    Figure: Jaeger UI
    Figure: Jaeger UI
    Figure: Jaeger UI
    Figure: Jaeger UI

  3. Send a few sample requests to your Istio workloads. Each request produces Istio traces that are sent to the Jaeger instance that you configured. For example, if you deployed the Bookinfo sample app, use the following steps to produce traces.

    1. Port-forward the product page app.
        kubectl port-forward deployment/productpage-v1 -n bookinfo 9080
        
    2. Open the product page app.
    3. Refresh the page multiple times.
  4. Wait a few seconds and verify that traces are displayed in the Gloo UI.

    Figure: Product page traces
    Figure: Product page traces
    Figure: Product page traces
    Figure: Product page traces

Ambient mode

  1. Open the Gloo UI. The Gloo UI is served from the gloo-mesh-ui service on port 8090. In multicluster setups, the UI is installed in the cluster where the management plane is deployed. You can connect by using the meshctl or kubectl CLIs.

    • meshctl: For more information, see the CLI documentation.
        meshctl dashboard
        
    • kubectl:
      1. Port-forward the gloo-mesh-ui service on 8090.
          kubectl port-forward -n gloo-mesh svc/gloo-mesh-ui 8090:8090
          
      2. Open your browser and connect to http://localhost:8090.
  2. From the menu, select Tracing and verify that the Jaeger UI opens.

    Figure: Jaeger UI
    Figure: Jaeger UI
    Figure: Jaeger UI
    Figure: Jaeger UI

  3. Send a few sample requests to your Istio workloads. Each request produces Istio traces that are sent to the Jaeger instance that you configured. For example, if you deployed the Bookinfo sample app, use the following steps to produce traces.

    1. If you have not already, expose Bookinfo externally.
        kubectl -n bookinfo apply -f https://raw.githubusercontent.com/istio/istio/1.29.1/samples/bookinfo/networking/bookinfo-gateway.yaml --context ${context2}
        
    2. Save the external address of your ingress gateway in an environment variable.
        export INGRESS_GW_ADDRESS=$(kubectl get svc -n gloo-mesh-gateways --context ${context2} istio-ingressgateway -o jsonpath="{.status.loadBalancer.ingress[0]['hostname','ip']}")
      echo $INGRESS_GW_ADDRESS
        
    3. Open the product page UI and refresh the page multiple times.
        open http://$INGRESS_GW_ADDRESS/productpage
        
  4. Wait a few seconds and verify that traces are displayed in the Gloo UI. For example, you can check traces through individual ztunnel pods to see traffic requests to Bookinfo services.

    Figure: Product page traces
    Figure: Product page traces