Observability

Prometheus

Istio generates metrics based on the four golden signals: latency, traffic, errors, and saturation.

Latency represents the time it takes to service a request. These metrics should be broken down into latency of successful requests (e.g., HTTP 200) and failed requests (e.g., HTTP 500).

Traffic measures how much demand gets placed on the system, and it’s measured in system-specific metrics. For example, HTTP requests per second, or concurrent sessions, retrievals per second, and so on.

Errors measures the rate of failed requests (e.g., HTTP 500s).

Saturation measures how full the most constrained resources of service are. For example, utilization of a thread pool.

Metrics are collected at the Envoy proxy, service and control plane.

Install Prometheus using the below command
kubectl apply -f samples/addons/prometheus.yaml
Check that the Prometheus Deployment is ready
kubectl -n istio-system get deploy prometheus
You should see an output as follows:
NAME         READY   UP-TO-DATE   AVAILABLE   AGE
prometheus   1/1     1            1           52s
Open the Prometheus dashboard using the below command
istioctl dashboard prometheus

The Prometheus UI opens in a browser

prometheus

Grafana

Grafana is an open platform for analytics and monitoring. It connects to Prometheus (and other sources).

Install Grafana using the below command
kubectl apply -f samples/addons/grafana.yaml
Check that the Grafana Deployment is ready
kubectl -n istio-system get deploy grafana
You should see an output as follows:
NAME      READY   UP-TO-DATE   AVAILABLE   AGE
grafana   1/1     1            1           63s
Open the Grafana dashboard using the below command
istioctl dashboard grafana

The Grafana UI opens in a browser

grafana

Zipkin

Tracing helps to follow the requests as they travel through the different pieces of the system being monitored.

A trace is a collection of spans.

Traces you get with Istio service mesh get captured at the service boundaries. To understand the application behavior and troubleshoot problems, you need to instrument your applications by creating additional spans properly.

Install Zipkin using the below command
kubectl apply -f samples/addons/extras/zipkin.yaml
Check that the Zipkin Deployment is ready
kubectl -n istio-system get deploy zipkin
You should see an output as follows:
NAME     READY   UP-TO-DATE   AVAILABLE   AGE
zipkin   1/1     1            1           24s
Open the Zipkin dashboard using the below command
istioctl dashboard zipkin

The Zipkin UI opens in a browser

zipkin

Kiali

Kiali is a management console for Istio-based service mesh. It provides dashboards, observability and lets us operate the mesh with robust configuration and validation capabilities. It shows the service mesh structure by inferring traffic topology and displays the health of the mesh. Kiali provides detailed metrics, robust validation, Grafana access, and strong integration for distributed tracing with Jaeger.

Install Kiali using the below command
kubectl apply -f samples/addons/kiali.yaml
Check that the Kiali Deployment is ready
kubectl -n istio-system get deploy kiali
NAME    READY   UP-TO-DATE   AVAILABLE   AGE
kiali   1/1     1            1           34s
Open the Kiali dashboard using the below command
istioctl dashboard kiali

The Kiali UI opens in a browser

kiali