Superviser les métriques du contrôleur ingress-nginx dans le module complémentaire de routage d’application avec Prometheus dans Grafana (préversion)
Le contrôleur ingress-nginx dans le module complémentaire de routage d’application expose de nombreuses métriques pour les requêtes, le processus nginx et le contrôleur. Elles peuvent s’avérer utiles dans l’analyse des performances et de l’utilisation de l’application.
Le module complémentaire de routage d’application expose le point de terminaison des métriques Prometheus à /metrics
sur le port 10254.
Important
Les fonctionnalités d’évaluation AKS sont disponibles en libre-service et font l’objet d’un abonnement. Les préversions sont fournies « en l’état » et « en fonction des disponibilités », et sont exclues des contrats de niveau de service et de la garantie limitée. Les préversions AKS sont, dans la mesure du possible, partiellement couvertes par le service clientèle. Telles quelles, ces fonctionnalités ne sont pas destinées à une utilisation en production. Pour plus d’informations, consultez les articles de support suivants :
Prérequis
- Un cluster Azure Kubernetes Service (AKS) avec le module complémentaire de routage d’application activé.
- Une instance Prometheus, comme le service géré pour Prometheus Azure Monitor.
- Une instance Grafana, comme Azure Managed Grafana.
Valider le point de terminaison des métriques
Pour vous assurer que les métriques sont bien collectées, vous pouvez configurer un transfert de port vers l’un des pods du contrôleur ingress-nginx.
kubectl get pods -n app-routing-system
NAME READY STATUS RESTARTS AGE
external-dns-667d54c44b-jmsxm 1/1 Running 0 4d6h
nginx-657bb8cdcf-qllmx 1/1 Running 0 4d6h
nginx-657bb8cdcf-wgcr7 1/1 Running 0 4d6h
Maintenant, transférez un port local vers le port 10254 de l’un des pods nginx.
kubectl port-forward nginx-657bb8cdcf-qllmx -n app-routing-system :10254
Forwarding from 127.0.0.1:43307 -> 10254
Forwarding from [::1]:43307 -> 10254
Relevez le port local (43307
dans ce cas) et ouvrez http://localhost:43307/metrics dans votre navigateur. Vous devriez voir les métriques du contrôleur ingress-nginx charger.
Vous pouvez maintenant arrêter le processus port-forward
pour fermer le transfert.
Configurer le service géré pour Prometheus Azure Monitor et Azure Managed Grafana avec Container Insights
Le service managé Azure Monitor pour Prometheus est un service complètement managé compatible avec Prometheus qui prend en charge les fonctionnalités standard du secteur telles que PromQL, les tableaux de bord Grafana et les alertes Prometheus. Cela nécessite la configuration du module complémentaire de métriques pour l’agent Azure Monitor, qui envoie des données à Prometheus. Si votre cluster n’est pas configuré avec le module complémentaire, vous pouvez suivre cet article pour configurer votre cluster Azure Kubernetes Service (AKS) pour envoyer des données au service managé Azure Monitor pour Prometheus et envoyer les métriques collectées à une instance Azure Managed Grafana.
Activer le scraping basé sur l’annotation de pod
Une fois le cluster mis à jour avec l’agent Azure Monitor, vous devez configurer l’agent de sorte à activer le scraping en fonction des annotations de pod, lesquelles sont ajoutées aux pods ingress-nginx. Pour définir ce paramètre, vous pouvez accéder au ConfigMap ama-metrics-settings-configmap
de l’espace de noms kube-system
.
Attention
Cela permet de remplacer le ConfigMap ama-metrics-settings-configmap
existant du kube-system
. Si vous avez déjà défini une configuration, vous pouvez la sauvegarder ou la fusionner avec la nouvelle configuration.
Le cas échéant, vous pouvez sauvegarder un ConfigMap ama-metrics-settings-config
existant en exécutant kubectl get configmap ama-metrics-settings-configmap -n kube-system -o yaml > ama-metrics-settings-configmap-backup.yaml
.
La configuration suivante définit le paramètre podannotationnamespaceregex
sur .*
de sorte à scraper tous les espaces de noms.
kubectl apply -f - <<EOF
kind: ConfigMap
apiVersion: v1
metadata:
name: ama-metrics-settings-configmap
namespace: kube-system
data:
schema-version:
#string.used by agent to parse config. supported versions are {v1}. Configs with other schema versions will be rejected by the agent.
v1
config-version:
#string.used by customer to keep track of this config file's version in their source control/repository (max allowed 10 chars, other chars will be truncated)
ver1
prometheus-collector-settings: |-
cluster_alias = ""
default-scrape-settings-enabled: |-
kubelet = true
coredns = false
cadvisor = true
kubeproxy = false
apiserver = false
kubestate = true
nodeexporter = true
windowsexporter = false
windowskubeproxy = false
kappiebasic = true
prometheuscollectorhealth = false
# Regex for which namespaces to scrape through pod annotation based scraping.
# This is none by default. Use '.*' to scrape all namespaces of annotated pods.
pod-annotation-based-scraping: |-
podannotationnamespaceregex = ".*"
default-targets-metrics-keep-list: |-
kubelet = ""
coredns = ""
cadvisor = ""
kubeproxy = ""
apiserver = ""
kubestate = ""
nodeexporter = ""
windowsexporter = ""
windowskubeproxy = ""
podannotations = ""
kappiebasic = ""
minimalingestionprofile = true
default-targets-scrape-interval-settings: |-
kubelet = "30s"
coredns = "30s"
cadvisor = "30s"
kubeproxy = "30s"
apiserver = "30s"
kubestate = "30s"
nodeexporter = "30s"
windowsexporter = "30s"
windowskubeproxy = "30s"
kappiebasic = "30s"
prometheuscollectorhealth = "30s"
podannotations = "30s"
debug-mode: |-
enabled = false
EOF
En quelques minutes, les pods ama-metrics
de l’espace de noms kube-system
doivent redémarrer et récupérer la nouvelle configuration.
Vérifier la visualisation des métriques dans Azure Managed Grafana
Maintenant que vous avez configuré le service géré pour Prometheus Azure Monitor et Azure Managed Grafana, vous devez accéder à votre instance Managed Grafana.
Vous pouvez télécharger et importer deux tableaux de bord ingress-nginx officiels dans votre instance Grafana :
- Tableau de bord du contrôleur ingress-nginx
- Tableau de bord des performances de gestion des requêtes
Tableau de bord du contrôleur ingress-nginx
Ce tableau de bord offre une visibilité sur le volume des requêtes, les connexions, les taux de réussite, les rechargements de configuration et les configurations hors synchronisation. Vous pouvez également l’utiliser pour connaître la pression des E/S réseau, ainsi que l’utilisation de la mémoire et du processeur du contrôleur d’entrée. Enfin, il affiche également les temps de réponse et le débit des entrées par centile (p50, p95 et p99).
Vous pouvez télécharger ce tableau de bord sur GitHub.
Tableau de bord des performances de gestion des requêtes
Ce tableau de bord offre une visibilité sur les performances de gestion des requêtes des différentes destinations d’entrée en amont, qui sont les points de terminaison de vos applications vers lesquels le contrôleur d’entrée transfère le trafic. Il indique le nombre total de requêtes et les temps de réponse en amont par centile (p50, p95 et p99). Vous pouvez également afficher les agrégats sur les erreurs de requête et la latence. Utilisez ce tableau de bord pour connaître et améliorer les performances et la scalabilité de vos applications.
Vous pouvez télécharger ce tableau de bord sur GitHub.
Importer un tableau de bord
Pour importer un tableau de bord Grafana, développez le menu de gauche et cliquez sur Importer sous « Tableaux de bord ».
Chargez ensuite le fichier de tableau de bord souhaité, puis cliquez sur Charger.
Étapes suivantes
- Pour configurer la mise à l’échelle des charges de travail en utilisant des métriques d’entrée scrapées avec Prometheus, utilisez Kubernetes Event Driven Autoscaler (KEDA). En savoir plus sur l’intégration de KEDA à AKS.
- Créez et exécutez un test de charge avec le Test de charge Azure pour tester les performances des charges de travail et optimiser la scalabilité de vos applications.
Azure Kubernetes Service