Surveiller les métriques du plan de contrôle Azure Kubernetes Service (AKS) (préversion)

L’intégrité du plan de contrôle Azure Kubernetes Service (AKS) est essentielle pour les performances et la fiabilité du cluster. Les métriques du plan de contrôle (préversion) offrent une meilleure visibilité sur sa disponibilité et ses performances, ce qui vous permet d’optimiser l’observabilité globale et de maintenir l’excellence opérationnelle. Ces métriques sont entièrement compatibles avec Prometheus et Grafana et peuvent être personnalisées pour stocker uniquement ce que vous considérez nécessaire. Avec ces nouvelles métriques, vous pouvez collecter toutes les métriques à partir du serveur d’API, d'ETCD, de Scheduler, d'Autoscaler et du gestionnaire de contrôleur.

Cet article vous permet de comprendre cette nouvelle fonctionnalité et de l’implémenter.

Conditions préalables et limitations

Installer ou mettre à jour l’extension aks-preview Azure CLI

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 :

Installez l’extension aks-preview Azure CLI à l’aide de la commande az extension add.

az extension add --name aks-preview

Si vous devez mettre à jour la version de l’extension, vous pouvez le faire à l’aide de la commande az extension update.

az extension update --name aks-preview

Inscrire l’indicateur de fonctionnalité « AzureMonitorMetricsControlPlanePreview »

Inscrivez l’indicateur de fonctionnalité AzureMonitorMetricsControlPlanePreview à l’aide de la commande az feature register, comme indiqué dans l’exemple suivant :

az feature register --namespace "Microsoft.ContainerService" --name "AzureMonitorMetricsControlPlanePreview"

Quelques minutes sont nécessaires pour que l’état s’affiche Registered (Inscrit). Vérifiez l’état de l’inscription à l’aide de la commande az feature show :

az feature show --namespace "Microsoft.ContainerService" --name "AzureMonitorMetricsControlPlanePreview"

Une fois que l’état reflète Inscrit, actualisez l’inscription du fournisseur de ressources Microsoft.ContainerService à l’aide de la commande az provider register :

az provider register --namespace "Microsoft.ContainerService"

Activer les métriques du plan de contrôle sur votre cluster AKS

Vous pouvez activer les métriques du plan de contrôle avec le service managé Azure Monitor pour le module complémentaire Prometheus pendant la création de cluster ou pour un cluster existant. Pour collecter des métriques Prometheus à partir de votre cluster Kubernetes, consultez Activer Prometheus et Grafana pour les clusters Kubernetes et suivez les étapes sous l’onglet CLI pour un cluster AKS. Sur la ligne de commande, veillez à inclure les paramètres --generate-ssh-keys et --enable-managed-identity.

Si le module complémentaire Prometheus est déjà déployé sur votre cluster, vous pouvez simplement exécuter une commande az aks update pour vous assurer que le cluster est mis à jour afin de commencer à collecter les métriques du plan de contrôle.

az aks update -n <cluster-name> -g <resource-group>

Remarque

Contrairement aux métriques collectées à partir de nœuds de cluster, les métriques du plan de contrôle sont collectées par un composant qui ne fait pas partie du module complémentaire ama-metrics. L’activation de l’indicateur de fonctionnalité AzureMonitorMetricsControlPlanePreview et du module complémentaire prometheus managé garantit que les métriques du plan de contrôle sont collectées. Après avoir activé la collecte de métriques, l’affichage des données dans l’espace de travail peut prendre plusieurs minutes.

Interrogation des métriques du plan de contrôle

Les métriques du plan de contrôle sont stockées dans un espace de travail Azure Monitor dans la région du cluster. Elles peuvent être interrogées directement à partir de l’espace de travail ou via l’instance Azure Managed Grafana connectée à l’espace de travail. Pour trouver l’espace de travail Azure Monitor associé au cluster, dans le volet gauche de votre cluster AKS sélectionné, accédez à la section Surveillance et sélectionnez Insights. Dans la page Container Insights du cluster, sélectionnez Paramètres du moniteur.

Capture d’écran de l’espace de travail Azure Monitor.

Si vous utilisez Azure Managed Grafana pour visualiser les données, vous pouvez importer les tableaux de bord suivants. AKS fournit des modèles de tableau de bord pour vous aider à afficher et analyser vos données de télémétrie de plan de contrôle en temps réel.

Personnaliser les métriques du plan de contrôle

Par défaut, AKS inclue un ensemble préconfiguré de métriques à collecter et stocker pour chaque composant. API server et etcd sont activés par défaut. Cette liste peut être personnalisée via le ama-settings-configmap. La liste des métriques de profil minimal-ingestion sont disponibles ici.

Les listes suivantes répertorient les cibles par défaut :

controlplane-apiserver = true
controlplane-cluster-autoscaler = false
controlplane-kube-scheduler = false
controlplane-kube-controller-manager = false
controlplane-etcd = true

Les différentes options sont similaires à Azure Managed Prometheus répertoriées ici.

Tous les ConfigMaps doivent être appliqués à l’espace de noms kube-system pour n’importe quel cluster.

Ingérer uniquement des métriques minimales pour les cibles par défaut

Il s’agit du comportement par défaut avec le paramètre default-targets-metrics-keep-list.minimalIngestionProfile="true". Seules les métriques répertoriées plus loin dans cet article sont ingérées pour chacune des cibles par défaut, ce qui dans ce cas sont controlplane-apiserver et controlplane-etcd.

Ingérer toutes les métriques de toutes les cibles

Procédez comme suit pour collecter toutes les métriques de toutes les cibles sur le cluster.

  1. Téléchargez le fichier ConfigMap ama-metrics-settings-configmap.yaml et renommez-le en configmap-controlplane.yaml.

  2. Définissez minimalingestionprofile = false et vérifiez que les cibles sous default-scrape-settings-enabled que vous souhaitez récupérer sont définies sur true. Les seules cibles que vous pouvez spécifier sont : controlplane-apiserver, controlplane-cluster-autoscaler, controlplane-kube-scheduler, controlplane-kube-controller-manageret controlplane-etcd.

  3. Appliquez ConfigMap en exécutant la commande kubectl apply.

    kubectl apply -f configmap-controlplane.yaml
    

    Une fois la configuration appliquée, plusieurs minutes sont nécessaires avant que les métriques des cibles spécifiées extraites du plan de contrôle apparaissent dans l’espace de travail Azure Monitor.

Ingérer quelques autres métriques en plus des métriques minimales

Minimal ingestion profile est un paramètre qui permet de réduire le volume d’ingestion de métriques, car seules les métriques utilisées par des tableaux de bord par défaut, des règles d’enregistrement par défaut et des alertes par défaut sont collectées. Procédez comme suit pour personnaliser ce comportement.

  1. Téléchargez le fichier ConfigMap ama-metrics-settings-configmap et renommez-le en configmap-controlplane.yaml.

  2. Définissez minimalingestionprofile = true et vérifiez que les cibles sous default-scrape-settings-enabled que vous souhaitez récupérer sont définies sur true. Les seules cibles que vous pouvez spécifier sont : controlplane-apiserver, controlplane-cluster-autoscaler, controlplane-kube-scheduler, controlplane-kube-controller-manageret controlplane-etcd.

  3. Sous default-targets-metrics-keep-list, spécifiez la liste des métriques pour les cibles de true. Par exemple,

    controlplane-apiserver= "apiserver_admission_webhook_admission_duration_seconds| apiserver_longrunning_requests"
    
  • Appliquez ConfigMap en exécutant la commande kubectl apply.

    kubectl apply -f configmap-controlplane.yaml
    

    Une fois la configuration appliquée, plusieurs minutes sont nécessaires avant que les métriques des cibles spécifiées extraites du plan de contrôle apparaissent dans l’espace de travail Azure Monitor.

Ingérer uniquement des métriques spécifiques à partir de certaines cibles

  1. Téléchargez le fichier ConfigMap ama-metrics-settings-configmap et renommez-le en configmap-controlplane.yaml.

  2. Définissez minimalingestionprofile = false et vérifiez que les cibles sous default-scrape-settings-enabled que vous souhaitez récupérer sont définies sur true. Les seules cibles que vous pouvez spécifier ici sont controlplane-apiserver, controlplane-cluster-autoscaler, controlplane-kube-scheduler,controlplane-kube-controller-manageret controlplane-etcd.

  3. Sous default-targets-metrics-keep-list, spécifiez la liste des métriques pour les cibles de true. Par exemple,

    controlplane-apiserver= "apiserver_admission_webhook_admission_duration_seconds| apiserver_longrunning_requests"
    
  • Appliquez ConfigMap en exécutant la commande kubectl apply.

    kubectl apply -f configmap-controlplane.yaml
    

    Une fois la configuration appliquée, plusieurs minutes sont nécessaires avant que les métriques des cibles spécifiées extraites du plan de contrôle apparaissent dans l’espace de travail Azure Monitor.

Résoudre les problèmes liés aux métriques du plan de contrôle

Veillez à vérifier que l’indicateur de fonctionnalité AzureMonitorMetricsControlPlanePreview est activé et que les pods ama-metrics s’exécutent.

Remarque

Les méthodes de résolution des problèmes pour le service managé Azure Prometheus ne se traduisent pas directement ici, car les composants qui récupèrent le plan de contrôle ne sont pas présents dans le module complémentaire prometheus managé.

Mise en forme ou erreurs ConfigMap

Veillez à vérifier la mise en forme du ConfigMap et si les champs sont correctement renseignés avec les valeurs prévues. Plus précisément default-targets-metrics-keep-list, minimal-ingestion-profileet default-scrape-settings-enabled.

Isoler le plan de contrôle du problème de plan de données

Commencez par définir certaines des métriques liées au nœud sur true et vérifiez que les métriques sont transférées à l’espace de travail. Cela permet de déterminer si le problème est spécifique aux métriques du plan de contrôle de scraping.

Événements ingérés

Une fois que vous avez appliqué les modifications, vous pouvez ouvrir l’explorateur de métriques à partir de la page Vue d’ensemble d’Azure Monitor ou à partir de la section Surveillance du cluster sélectionné. Dans le portail Azure, sélectionnez Métriques. Recherchez une augmentation ou une diminution du nombre d’événements ingérés par minute. Cela devrait vous aider à déterminer si la métrique spécifique est manquante ou si toutes les métriques sont manquantes.

Aucune métrique spécifique n’est exposée

Il y a eu des cas où les métriques sont documentées, mais pas exposées à partir de la cible et n’ont pas été transférées à l’espace de travail Azure Monitor. Dans ce cas, il est nécessaire de vérifier que d’autres métriques sont transférées à l’espace de travail.

Aucun accès à l’espace de travail Azure Monitor

Lorsque vous activez le module complémentaire, il est possible que vous spécifiiez un espace de travail existant auquel vous n’avez pas accès. Dans ce cas, il peut ressembler aux métriques qui ne sont pas collectées et transférées. Veillez à créer un espace de travail lors de l’activation du module complémentaire ou lors de la création du cluster.

Désactiver les métriques du plan de contrôle sur votre cluster AKS

Vous pouvez désactiver les métriques du plan de contrôle à tout moment, en désactivant l’indicateur de fonctionnalité, en désactivant Prometheus managé ou en supprimant le cluster AKS.

Indicateur de préversion activé après l’installation de Prometheus managé

Si l’indicateur de préversion (AzureMonitorMetricsControlPlanePreview) a été activé sur un cluster Prometheus managé existant, il exige une mise à jour forcée du cluster pour émettre les métriques du plan de contrôle

Vous pouvez exécuter une commande az aks update pour vous assurer que le cluster est mis à jour afin de commencer à collecter les métriques du plan de contrôle.

az aks update -n <cluster-name> -g <resource-group>

Remarque

Cette action ne supprime aucune des données existantes stockées dans votre espace de travail Azure Monitor.

Exécutez la commande suivante pour supprimer le module complémentaire de métriques qui extrait les métriques Prometheus.

az aks update --disable-azure-monitor-metrics -n <cluster-name> -g <cluster-resource-group>

Exécutez la commande suivante pour désactiver le scraping des métriques du plan de contrôle sur le cluster AKS en annulant l’inscription de l’indicateur de fonctionnalité AzureMonitorMetricsControlPlanePreview à l’aide de la commande az feature unregister.

az feature unregister "Microsoft.ContainerService" --name "AzureMonitorMetricsControlPlanePreview"

FAQ

  • Ces métriques peuvent-elles être scrapées avec Prometheus auto-hébergé ?

    • Actuellement, les métriques du plan de contrôle ne peuvent pas être scrapées avec Prometheus auto-hébergé. Prometheus auto-hébergé peut scraper l’instance unique en fonction de l’équilibreur de charge. Ces métriques ne sont pas exactes, car il existe souvent plusieurs réplicas des métriques du plan de contrôle qui ne sont visibles que par le biais de Prometheus managé
  • Pourquoi l’agent utilisateur n’est-il pas disponible via les métriques du plan de contrôle ?

Étapes suivantes

Après avoir évalué cette fonctionnalité d’évaluation, partager vos commentaires. Votre avis nous intéresse.