Ce document explique comment configurer votre déploiement Google Kubernetes Engine afin de pouvoir collecter des métriques depuis Istio à l'aide de Google Cloud Managed Service pour Prometheus. Sur cette page, vous allez :
- configurer Istio pour générer des rapports sur les métriques ;
- configurer une ressource PodMonitoring pour Managed Service pour Prometheus afin de collecter les métriques exportées ;
- accéder à un tableau de bord dans Cloud Monitoring pour consulter les métriques ;
- configurer des règles d'alerte pour surveiller les métriques.
Ces instructions ne s'appliquent que si vous utilisez une collecte gérée avec Managed Service pour Prometheus. Si vous utilisez une collecte auto-déployée, consultez le dépôt source pour Istio pour obtenir des informations sur l'installation.
Ces instructions sont fournies à titre d'exemple et devraient fonctionner dans la plupart des environnements Kubernetes. Si vous rencontrez des difficultés pour installer une application ou un exportateur en raison de règles de sécurité ou d'organisation restrictives, nous vous recommandons de consulter la documentation Open Source pour obtenir de l'aide.
Pour plus d'informations sur Istio, consultez la page Istio.
Prérequis
Pour collecter des métriques à partir d'Istio à l'aide de Managed Service pour Prometheus et de la collecte gérée, votre déploiement doit répondre aux exigences suivantes :
- Votre cluster doit exécuter Google Kubernetes Engine version 1.21.4-gke.300 ou ultérieure.
- Vous devez exécuter Managed Service pour Prometheus en ayant activé la collecte gérée. Pour en savoir plus, consultez la page Premiers pas avec la collecte gérée.
Istio expose automatiquement les métriques au format Prometheus ; Vous n'avez pas besoin de l'installer séparément. Vous pouvez exécuter les vérifications suivantes pour vous assurer que le proxy Istio a été injecté en tant que side-car et que Istiod, le plan de contrôle d'Istio et le proxy Istio envoient des métriques sur les points de terminaison attendus.
Pour déterminer si le proxy Istio est injecté en tant que side-car, exécutez la commande suivante, qui énumère les conteneurs exécutés dans les pods de l'application :
kubectl get pod -l app=APPLICATION_NAME -n NAMESPACE_NAME -o jsonpath='{.items[0].spec.containers[*].name}'
Si vous constatez que les pods contiennent le conteneur side-car
istio
, cela signifie que l'exportateur a été injecté. Si le side-car n'est pas injecté, suivez les instructions de la section Istio : installer le side-car.Pour vérifier que les métriques sont émises par le proxy Istio, exécutez la commande suivante, qui inspecte le point de terminaison
/stats/prometheus
d'istio
sur le pod spécifié :kubectl exec POD_NAME -n NAMESPACE_NAME -c istio-proxy -- curl -sS 'localhost:15090/stats/prometheus'
Si vous voyez les métriques Prometheus brutes
istio_*
etenvoy_*
, cela signifie que les métriques sont émises correctement.Pour vérifier que les métriques sont émises de manière similaire sur Istiod, exécutez la commande suivante, qui inspecte le point de terminaison
/metrics
d'Istiod sur l'un des pods du déploiementistiod
:kubectl exec -n istio-system deployment/istiod -- curl -sS 'localhost:15014/metrics'
Définir une ressource PodMonitoring
Pour la découverte des cibles, l'opérateur Managed Service pour Prometheus doit disposer d'une ressource PodMonitoring correspondant à l'exportateur Istio dans le même espace de noms.
Vous pouvez utiliser la configuration PodMonitoring suivante :
Istio nécessite deux ressources PodMonitoring distinctes : une qui surveille Istiod, et une autre qui surveille les side-cars du proxy Istio, ainsi que les passerelles d'entrée et de sortie. Pour surveiller les métriques du proxy Istio sur tous les espaces de noms du cluster à la fois, appliquez la ressource PodMonitoringistio-proxy
à chaque espace de noms, ou configurez une ressource ClusterPodMonitoring globale, plutôt qu'une ressource PodMonitoring par espace de noms.
Si vous prévoyez d'utiliser les tableaux de bord Grafana fournis par Istio, vous devez également avoir configuré le scraping cAdvisor et Kubelet, en plus des ressources PodMonitoring décrites dans ce document.
Pour appliquer les modifications de configuration à partir d'un fichier local, exécutez la commande suivante :
kubectl apply -n NAMESPACE_NAME -f FILE_NAME
Vous pouvez également utiliser Terraform pour gérer vos configurations.
Définir des règles et des alertes
Vous pouvez utiliser la configuration Rules
suivante pour définir des alertes sur vos métriques Istio :
Pour appliquer les modifications de configuration à partir d'un fichier local, exécutez la commande suivante :
kubectl apply -n NAMESPACE_NAME -f FILE_NAME
Vous pouvez également utiliser Terraform pour gérer vos configurations.
Pour en savoir plus sur l'application de règles à votre cluster, consultez la page Évaluation des règles gérées et alertes.
Cette configurationRules
a été adaptée à partir des règles Istio fournies par la série de règles d'alerte Awesome Prometheus Alerts.
Vous pouvez ajuster les seuils d'alerte en fonction de votre application.
Vérifier la configuration
Vous pouvez utiliser l'Explorateur de métriques pour vérifier que vous avez correctement configuré l'exportateur Istio. L'ingestion de vos métriques par Cloud Monitoring peut prendre une ou deux minutes.
Procédez comme suit pour vérifier que les métriques ont bien été ingérées :
-
Dans la console Google Cloud, accédez à la page leaderboard Explorateur de métriques :
Accéder à l'explorateur de métriques
Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Surveillance.
- Dans la barre d'outils du volet de création de requêtes, sélectionnez le bouton nommé code MQL ou code MQL.
- Vérifiez que PromQL est sélectionné dans le bouton d'activation PromQL. Le bouton de langage se trouve dans la barre d'outils qui vous permet de mettre en forme votre requête.
- Saisissez et exécutez la requête suivante :
sum(istio_build{cluster="CLUSTER_NAME"}) by (component)
Afficher les tableaux de bord
L'intégration à Cloud Monitoring comprend le tableau de bord Présentation de Istio Envoy-Prometheus. Les tableaux de bord sont installés automatiquement lorsque vous configurez l'intégration. Vous pouvez également afficher des aperçus statiques de tableaux de bord sans installer l'intégration.
Pour afficher un tableau de bord installé, procédez comme suit :
-
Dans la console Google Cloud, accédez à la page Tableaux de bord .
Accéder à la page Tableaux de bord
Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Surveillance.
- Sélectionnez l'onglet Liste des tableaux de bord.
- Choisissez la catégorie Intégrations.
- Cliquez sur le nom du tableau de bord, par exemple Présentation de Istio Envoy-Prometheus.
Pour afficher un aperçu statique du tableau de bord, procédez comme suit :
-
Dans la console Google Cloud, accédez à la page Intégrations :
Accéder à la page Intégrations
Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Surveillance.
- Cliquez sur le filtre de plate-forme de déploiement Kubernetes Engine.
- Recherchez l'intégration Istio et cliquez sur Afficher les détails.
- Sélectionnez l'onglet Tableaux de bord.
Dépannage
Pour en savoir plus sur la résolution des problèmes d'ingestion de métriques, consultez la section Problèmes liés à la collecte par les exportateurs dans la section Résoudre les problèmes côté ingestion.