Observing microservice meshes with Kiali

At some point when you are developing your microservice architecture, you will need to visualize what is happening in your service mesh. You will have questions like “Which service is connected to which other service?” and “How much traffic goes to each microservice?” But because of the loosely tied nature of microservice architectures , these questions can be difficult to answer.

Those are the kinds of question that Kiali has the ability to answer, by giving you a big picture of the mesh, and showing the whole flow of your requests and data.

Kiali builds upon the same concepts as Istio, and you can check the glossary for a refresher.

How does Kiali work?

Kiali taps into the data provided by Istio and OpenShift to generate its visualizations. It fetches ingress data (such as request tracing with Jaeger), the listing and data of the services, health indexes, and so on.

Kiali runs as a service together with Istio, and does not require any changes to Istio or Openshift configuration (besides the ones required to install Istio).

So now we can access Kiali, so let’s do it:

Login Page

The default credentials are "admin/admin", but it’s recommended to change them before using it in production.

Generating Sample Data

To show the capabilities of Kiali, you’ll need an Istio-enabled application to be running. For this, we can use the customer-tutorial application we created earlier.

To generate data for it, we can curl it with this command:

Service Graph

After you login, you should see the Service Graph page:

Service Graph Page

It shows a graph with all the microservices, connected by the requests going through then. On this page, you can see how the services interact with each other.

Applications

Click the Applications link in the left navigation. On this page you can view a listing of all the services that are running in the cluster, and additional information about them, such as health status.

Application Listing Page

Click on the "customer" application to see its details:

Service Details

By hovering the icon on the Health section, you can see the health of a service (a service is considered healthy) when it’s online and responding to requests without errors:

Health Status

By clicking on Outbound Metrics or Inbound Metrics, you can also see the metrics for an application, like so:

Application Metrics

Workloads

Click the Workloads link in the left navigation. On this page you can view a listing of all the workloads are present on your applications.

Workload Listing

Click on the customer workload. Here you can see details for the workload, such as the pods and services that are included in it:

Workload Details

By clicking Outbound Metrics and Inbound Metrics, you can check the metrics for the workload. The metrics are the same as the Application ones.

Services

Click on the Services link in the left navigation. Here, you can see the listing of all services.

Service Listing

Click on the customer service. You can, on this page, see the details of the service, such as metrics, traces, workloads, virtual services, destination rules and so on:

Service Details