Lorsque vous exécutez Service Mesh (ASM) avec des proxies sidecar Envoy, ces derniers génèrent des métriques de trafic détaillées. Toutefois, un backend de surveillance est nécessaire pour les collecter et les visualiser. Ce guide explique comment déployer une instance Prometheus autonome dans votre cluster ACK afin d'extraire les métriques des sidecars Envoy depuis ASM, puis visualiser les données dans Grafana.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Un cluster managé ACK. Pour plus d'informations, consultez la rubrique Créer un cluster managé ACK
Une instance ASM configurée en mode sidecar. Pour plus d'informations, consultez la rubrique Créer une instance ASM
Une instance Prometheus et une instance Grafana déployées dans le cluster ACK. Pour plus d'informations, consultez la rubrique Utiliser Prometheus open source pour surveiller un cluster ACK
Étape 1 : Configurer Prometheus pour extraire les métriques Envoy
Ajoutez une tâche d'extraction à la configuration de l'opérateur Prometheus dans votre cluster ACK afin que Prometheus détecte et collecte les métriques de tous les proxies sidecar Envoy.
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom du cluster à gérer, puis sélectionnez Applications > Helm dans le volet de navigation de gauche.
Sur la page Helm, localisez ack-prometheus-operator et cliquez sur Update dans la colonne Actions.
-
Dans le panneau Update Release, repérez le champ
additionalScrapeConfigsdans l'éditeur YAML et ajoutez la tâche d'extraction suivante. Cliquez sur OK pour appliquer la modification.Conseil : Le fichier YAML étant volumineux, appuyez sur Ctrl+F et recherchez
additionalScrapeConfigspour trouver rapidement le champ.Le tableau suivant décrit chaque champ de configuration :
Paramètre Objectif job_name: 'envoy-stats'Attribue un nom à la tâche d'extraction pour l'identifier dans Prometheus metrics_path: /stats/prometheusIndique le point de terminaison des statistiques Envoy kubernetes_sd_configsavecrole: podDétecte automatiquement tous les pods du cluster regex: '.*-envoy-prom'Filtre les pods disposant d'un port Prometheus Envoy replacement: $1:15090Redirige l'extraction vers le port 15090 de chaque pod labeldropSupprime les étiquettes de pod Kubernetes inutiles des métriques Étiquettes namespaceetpod_nameConserve l'espace de noms et l'identité du pod pour les requêtes de métriques additionalScrapeConfigs: # Scrape config for envoy stats - job_name: 'envoy-stats' metrics_path: /stats/prometheus kubernetes_sd_configs: - role: pod relabel_configs: - source_labels: [__meta_kubernetes_pod_container_port_name] action: keep regex: '.*-envoy-prom' - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port] action: replace regex: ([^:]+)(?::\d+)?;(\d+) replacement: $1:15090 target_label: __address__ - action: labeldrop regex: __meta_kubernetes_pod_label_(.+) - source_labels: [__meta_kubernetes_namespace] action: replace target_label: namespace - source_labels: [__meta_kubernetes_pod_name] action: replace target_label: pod_name
Étape 2 : Activer la collecte de métriques Prometheus dans ASM
Activez la collecte de métriques côté ASM afin que les sidecars Envoy exposent le point de terminaison des métriques. Pour obtenir des instructions, consultez la rubrique Collecter des métriques vers Managed Service for Prometheus.
Étape 3 : Générer des données de surveillance
Envoyez des requêtes aux services du plan de données afin que les proxies Envoy produisent des données de métriques. Cet exemple utilise l'application exemple Bookinfo.
Déployez Bookinfo si ce n'est pas déjà fait. Pour obtenir des instructions, consultez la rubrique Prise en main.
-
Ouvrez Productpage dans un navigateur et actualisez la page plusieurs fois pour générer du trafic.

Vérifier les résultats
Vérifier la collecte de métriques du proxy Envoy
Exécutez les commandes suivantes pour interroger le point de terminaison des statistiques Envoy sur un pod exemple. La présence de données de métriques Istio dans la sortie confirme que les proxies Envoy collectent bien les métriques. Une sortie vide indique que la collecte de métriques ne fonctionne pas.
details=$(kubectl get pod -l app=details -o jsonpath={.items..metadata.name})
kubectl exec $details -c istio-proxy -- curl -s localhost:15090/stats/prometheus | grep istio
Afficher les métriques dans Prometheus
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom du cluster à gérer, puis sélectionnez Network > Services dans le volet de navigation de gauche.
Sur la page Services, cliquez sur le point de terminaison public de Prometheus dans la colonne External IP.
-
Sur la page Prometheus, saisissez
istio_requests_totaldans la zone de recherche et cliquez sur Execute. Les résultats de la requête affichent les métriques de requêtes collectées depuis les proxies Envoy.
Afficher le tableau de bord Grafana
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom du cluster à gérer, puis sélectionnez Network > Services dans le volet de navigation de gauche.
Sur la page Services, cliquez sur le point de terminaison public de Grafana dans la colonne External IP.
-
Sur la page Grafana, sélectionnez Istio Workload Dashboard dans le coin supérieur gauche. Le tableau de bord affiche les métriques au niveau de la charge de travail, telles que les taux de requêtes, les latences et les taux d'erreur pour l'ensemble des services de votre mesh.
