Comment configurer Istio, Prometheus et Grafana pour la surveillance

Introduction à l’observabilité Istio à l’aide de Prometheus

Istio service mesh permet d’extraire le réseau des couches d’application en utilisant des proxies latéraux. Vous pouvez appliquer des politiques de sécurité et de réseautage avancées à toute la communication à travers votre infrastructure à l’aide d’Istio. 

Mais une autre caractéristique importante d’Istio est l’observabilité. Vous pouvez utiliser Istio pour observer les performances et le comportement de tous vos microservices dans votre infrastructure (voir l’image ci-dessous). L’une des principales responsabilités des ingénieurs en fiabilité des sites (SREs) dans les grandes organisations est de surveiller les métriques d’or de leurs applications, telles que l’utilisation du CPU, l’utilisation de la mémoire, la latence et le débit. 

Dans cet article, nous discuterons de la manière dont les SREs peuvent tirer parti de l’intégration de trois logiciels open-source – Istio, Prometheus et Grafana. Alors qu’Istio est le logiciel de service le plus célèbre, Prometheus est le logiciel de surveillance le plus largement utilisé, et Grafana est l’outil de visualisation le plus célèbre. 

Note: Les étapes ont été testées pour Istio 1.17.X

Regardez la vidéo de configuration d’Istio, Prometheus et Grafana

Regardez la vidéo si vous souhaitez suivre les étapes à partir de la vidéo:

Étape 1: Accédez aux add-ons Istio et appliquez le fichier YAML de Prometheus et Grafana

Tout d’abord, allez dans le dossier des add-ons dans le répertoire Istio en utilisant la commande. Comme je suis en utilisant 1.17.1, le chemin pour moi est istio-1.17.1/samples/addons

Vous remarquerez qu’Istio fournit déjà quelques fichiers YAML pour configurer Grafana, Prometheus, Jaeger, Kiali, etc. Vous pouvez configurer Prometheus en utilisant la commande suivante :

Shell

 

kubectl apply -f prometheus.yaml
Shell

 

kubectl apply -f grafana.yaml

Notez que ces add-ons YAML sont appliqués par défaut dans le namespace istio-system


Étape 2 : Déployer un nouveau service et faire une redirection de port pour la passerelle d’ingress Istio

Pour expérimenter le modèle de fonctionnement, nous allons déployer le service httpbin dans un namespace compatible Istio. Nous allons créer un objet de la passerelle d’ingress Istio pour recevoir le trafic vers le service depuis le public. 

Nous allons également faire une redirection de port pour la passerelle d’ingress Istio vers un port spécifique – 7777. 


Vous devriez voir l’écran ci-dessous à localhost:7777


Étape 3 : Ouvrir le tableau de bord Prometheus et Grafana

Vous pouvez ouvrir le tableau de bord Prometheus en utilisant la commande suivante.

Shell

 

istioctl dashboard prometheus
Shell

 

istioctl dashboard grafana

À la fois Grafana et Prometheus s’ouvriront sur localhost. 


Étape 4 : Effectuer des requêtes HTTP depuis Postman

Nous verrons comment le service httpbin consomme du CPU ou de la mémoire lorsqu’il y a une charge de trafic. Nous allons créer quelques requêtes GET et POST vers localhost:7777 depuis l’application Postman.


Une fois que vous effectuez des requêtes GET ou POST à plusieurs reprises vers le service httpbin, il y aura une utilisation des ressources, que nous pouvons observer dans Grafana. Mais au départ, nous devons configurer les métriques pour le service httpbin dans Prometheus et Grafana. 

Étape 5: Configuration des Métriques dans Prometheus

On peut sélectionner une gamme de métriques liées à toutes les ressources Kubernetes telles que le serveur API, les applications, les charges de travail, envoy, etc. Nous allons sélectionner container_memory_working_set_bytes métriques pour notre configuration. 

Dans l’application Prometheus, nous allons sélectionner le namespace pour récupérer les métriques en utilisant le terme de recherche suivant : container_memory_working_set_bytes { namespace= “istio-telemetry”} (istio-telemetry est le nom de notre namespace avec Istio activé, où le service httpbin est déployé)

Notez que, en exécutant cela simplement, nous obtenons la mémoire pour notre namespace. Comme nous voulons analyser l’utilisation de la mémoire de nos pods, nous pouvons calculer la mémoire totale consommée en additionnant l’utilisation de la mémoire de chaque pod groupés par pod. La requête suivante nous aidera à obtenir le résultat souhaité : sum(container_memory_working_set_bytes{namespace=”istio-telemetry”}) by (pod)


Note: Prometheus offre beaucoup de flexibilité pour filtrer, trancher et découper les données des métriques. L’idée centrale de cet article était de montrer la capacité d’Istio à émettre et envoyer des métriques à Prometheus pour la collecte

Étape 6: Configuration des Graphiques de Métriques Istio dans Grafana

Maintenant, vous pouvez simplement prendre la requête sum(container_memory_working_set_bytes{namespace="istio-telemetry"}) by (pod) dans Prometheus et tracer un graphique avec le temps. Tout ce que vous avez à faire est de créer un nouveau tableau de bord dans Grafana et de coller la requête dans le navigateur des métriques. Grafana tracera un graphique de séries chronologiques. Vous pouvez modifier le graphique avec des noms, des légendes et des titres appropriés pour partager avec d’autres parties prenantes de l’équipe Ops.


Il existe plusieurs façons de modifier et de personnaliser les données et de représenter les métriques Prometheus dans Grafana. Vous pouvez choisir de faire toutes les personnalisations en fonction des besoins de votre entreprise. J’ai fait quelques expériences dans le vidéo; n’hésitez pas à la consulter. 

Conclusion

Istio service mesh est extrêmement puissant pour offrir une visibilité globale à travers l’infrastructure. Dans cet article, nous avons simplement présenté un petit cas d’utilisation de capture et de visualisation de métriques à l’aide d’Istio, Prometheus et Grafana. Vous pouvez effectuer la journalisation et le suivi des journaux et du trafic en temps réel à l’aide d’Istio; nous aborderons ces sujets dans nos prochains blogs.

Source:
https://dzone.com/articles/how-to-configure-istio-prometheus-and-grafana-for-monitoring