Generating a Service Graph

This task shows you how to setup and use the Istio Dashboard to monitor mesh traffic. As part of this task, you will install the Grafana Istio addon and use the web-based interface for viewing service mesh traffic data.

The BookInfo sample application is used as the example application throughout this task.

Before you begin

  • Install Istio in your cluster and deploy an application.

  • Install the Prometheus add-on. Directions for install of this add-on are supplied as part of the Querying Metrics Task.

    Use of the Prometheus add-on is required for the Istio Dashboard.

Generating a Service Graph

  1. To view a graphical representation of your service mesh, install the Servicegraph add-on.

    In Kubernetes environments, execute the following command:

     kubectl apply -f install/kubernetes/addons/servicegraph.yaml
    
  2. Verify that the service is running in your cluster.

    In Kubernetes environments, execute the following command:

     kubectl -n istio-system get svc servicegraph
    

    The output will be similar to:

     NAME           CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
     servicegraph   10.59.253.165   <none>        8088/TCP   30s
    
  3. Send traffic to the mesh.

    For the BookInfo sample, visit http://$GATEWAY_URL/productpage in your web browser or issue the following command:

    curl http://$GATEWAY_URL/productpage
    

    Refresh the page a few times (or send the command a few times) to generate a small amount of traffic.

    Note: $GATEWAY_URL is the value set in the BookInfo guide.

  4. Open the Servicegraph UI.

    In Kubernetes environments, execute the following command:

     kubectl -n istio-system port-forward $(kubectl -n istio-system get pod -l app=servicegraph -o jsonpath='{.items[0].metadata.name}') 8088:8088 &   
    

    Visit http://localhost:8088/dotviz in your web browser.

    The results will look similar to:

Example Servicegraph
Example Servicegraph

About the Servicegraph Add-on

The Servicegraph service is an example service that provides endpoints for generating and visualizing a graph of services within a mesh. It exposes the following endpoints:

  • /graph which provides a JSON serialization of the servicegraph
  • /dotgraph which provides a dot serialization of the servicegraph
  • /dotviz which provides a visual representation of the servicegraph

All endpoints take an optional argument of time_horizon, which controls the timespan to consider for graph generation.

All endpoints also take an optional argument of filter_empty=true, which will restrict the nodes and edges shown to only those that reflect non-zero traffic levels during the specified time_horizon.

The Servicegraph example is built on top of Prometheus queries.

Cleanup

  • In Kubernetes environments, execute the following command to remove the ServiceGraph add-on:

    kubectl delete -f install/kubernetes/addons/servicegraph.yaml
    
  • If you are not planning to explore any follow-on tasks, refer to the BookInfo cleanup instructions to shutdown the application.