Istio Grafana Demo

What will I cover in the post?

You will see how to visualize Istio metrics via Grafana dashboards.

Istio add-ons

Istio add-ons allow to use advanced Istio features.

Istio Grafana add-on

Grafana is an open source metric analytics & visualization suite.

Grafana add-on allows to you to visualize Istio metrics collected by Prometheus via Grafana dashboards.

Istio Bookinfo Demo application and Prometheus add-on

In my previous posts I have described how to install the Istio Bookinfo Demo application and Prometheus add-on.

To continue to work with the Grafana demo you should first install both the Bookinfo Demo application and the Prometheus add-on.

In addition, you need to install Google Cloud SDK according to the previous post.

Grafana add-on deployment

Let’s deploy the add-on using the following command:

kubectl apply -n istio-system -f https://storage.googleapis.com/gke-release/istio/release/1.0.3-gke.3/patches/install-grafana.yaml

You will see the following output shows that the add-on is deployed successfully:

configmap/istio-grafana-custom-resources created
configmap/istio-grafana-configuration-dashboards created
configmap/istio-grafana created
serviceaccount/istio-grafana-post-install-account created
clusterrole.rbac.authorization.k8s.io/istio-grafana-post-install-istio-system created
clusterrolebinding.rbac.authorization.k8s.io/istio-grafana-post-install-role-binding-istio-system created
job.batch/istio-grafana-post-install created
service/grafana created
deployment.extensions/grafana created

Port forwarding

Now we need to configure port forwarding from your local server to the Grafana UI.

If your local server runs the Linux OS execute the following command:

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

If your local server runs the Win OS execute the following command:

kubectl -n istio-system get pod -l app=grafana -o jsonpath={.items[0].metadata.name}  > grafana.txt
set /p  GRAPHANA=<grafana.txt
kubectl -n istio-system port-forward %GRAPHANA% 3000:3000 &

In both cases we will see the following output shows the port forwarding works:

Forwarding from 127.0.0.1:3000 -> 3000
Forwarding from [::1]:3000 -> 3000

Access to Grafana UI

Lets open the Grafana UI: http://localhost:3000/

Grafana Service Dashboard

Lets open the Grafana Service Dashboard: http://localhost:3000/dashboard/db/istio-service-dashboard

Let’s add some traffic load using the following command:

for i in {1..50}; do curl -s "\n" "http://${GATEWAY_URL}/productpage" | grep -o "<title>.*</title>"; sleep 1; done

And yes, we have successfully completed our demo!

We can see the traffic data in the Grafana Service Dashboard UI:

Take Aways

You can take the following take aways from the post:

You see that Istio add-on allows to use Istio advanced features in the very easy way. You see how to use the Prometheus add-on.

Read my next post to see how to increase the security of your web application using Secure HTTP Headers!