Grafana

Grafana is an open source monitoring solution that can be used to configure dashboards for Istio. You can use Grafana to monitor the health of Istio and of applications within the service mesh.

Configuration

While you can build your own dashboards, Istio offers a set of preconfigured dashboards for all of the most important metrics for the mesh and for the control plane.

There are a few ways to configure Grafana to use these dashboards:

Option 1: Quick start

Istio provides a basic sample installation to quickly get Grafana up and running, bundled with all of the Istio dashboards already installed:

$ kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.18/samples/addons/grafana.yaml

This will deploy Grafana into your cluster. This is intended for demonstration only, and is not tuned for performance or security.

Option 2: Import from grafana.com into an existing deployment

To quickly import the Istio dashboards to an existing Grafana instance, you can use the Import button in the Grafana UI to add the dashboard links above. When you import the dashboards, note that you must select a Prometheus data source.

You can also use a script to import all dashboards at once. For example:

$ # Address of Grafana
$ GRAFANA_HOST="http://localhost:3000"
$ # Login credentials, if authentication is used
$ GRAFANA_CRED="USER:PASSWORD"
$ # The name of the Prometheus data source to use
$ GRAFANA_DATASOURCE="Prometheus"
$ # The version of Istio to deploy
$ VERSION=1.18.2
$ # Import all Istio dashboards
$ for DASHBOARD in 7639 11829 7636 7630 7645; do
$     REVISION="$(curl -s https://grafana.com/api/dashboards/${DASHBOARD}/revisions -s | jq ".items[] | select(.description | contains(\"${VERSION}\")) | .revision")"
$     curl -s https://grafana.com/api/dashboards/${DASHBOARD}/revisions/${REVISION}/download > /tmp/dashboard.json
$     echo "Importing $(cat /tmp/dashboard.json | jq -r '.title') (revision ${REVISION}, id ${DASHBOARD})..."
$     curl -s -k -u "$GRAFANA_CRED" -XPOST \
$         -H "Accept: application/json" \
$         -H "Content-Type: application/json" \
$         -d "{\"dashboard\":$(cat /tmp/dashboard.json),\"overwrite\":true, \
$             \"inputs\":[{\"name\":\"DS_PROMETHEUS\",\"type\":\"datasource\", \
$             \"pluginId\":\"prometheus\",\"value\":\"$GRAFANA_DATASOURCE\"}]}" \
$         $GRAFANA_HOST/api/dashboards/import
$     echo -e "\nDone\n"
$ done

Option 3: Implementation-specific methods

Grafana can be installed and configured through other methods. To import Istio dashboards, refer to the documentation for the installation method. For example:

Was this information useful?
Do you have any suggestions for improvement?

Thanks for your feedback!