Partage via


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

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.

Capture d’écran des métriques Prometheus dans le navigateur.

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.

Capture d’écran d’un navigateur affichant le tableau de bord ingress-nginx dans Grafana.

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.

Capture d’écran d’un navigateur affichant le tableau de bord des performances de gestion des requêtes dans Grafana.

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 ».

Capture d’écran d’un navigateur affichant l’instance Grafana avec « Importer un tableau de bord » en surbrillance.

Chargez ensuite le fichier de tableau de bord souhaité, puis cliquez sur Charger.

Capture d’écran d’un navigateur affichant l’instance Grafana avec la fenêtre de dialogue « Importer un tableau de bord ».

Étapes suivantes