Ce document explique aux opérateurs comment configurer Google Cloud Managed Service pour Prometheus afin de filtrer et de collecter des métriques Kubernetes spécifiques à partir des clusters et des charges de travail Google Kubernetes Engine (GKE).
Vous devez déjà connaître les éléments suivants :
Collecte de métriques dans GKE
Les composants système des clusters GKE émettent et exposent des métriques Prometheus. Par défaut, tous les clusters ingèrent des métriques système spécifiques à GKE. Des packages de métriques intégrés supplémentaires sont disponibles pour ingérer des collections de métriques sélectionnées pour différents composants.
Indépendamment des packages de métriques GKE intégrés, vous pouvez configurer manuellement Google Cloud Managed Service pour Prometheus afin d'ingérer des métriques Prometheus spécifiques. Cette configuration personnalisée est bien adaptée aux cas d'utilisation suivants :
- Surveillez les signaux spécifiques dans votre cluster et vos charges de travail.
- Optimisez les coûts en désactivant les packages de métriques dont vous n'avez pas besoin et en n'ingérant qu'un sous-ensemble de métriques.
- Collectez les métriques émises par les composants, mais qui ne sont pas incluses dans un package de métriques.
Pour les opérateurs, les métriques de nœud, qui sont émises par le processus kubelet sur chaque nœud, peuvent être utiles pour surveiller les charges de travail et les nœuds afin de détecter des signaux spécifiques.
Ressources personnalisées pour la collecte de métriques
Pour filtrer et ingérer une métrique spécifique, configurez des règles de réétiquetage Prometheus dans l'une des ressources personnalisées suivantes :
PodMonitoring: configure la collecte de métriques à partir des pods d'un espace de noms spécifique.ClusterPodMonitoring: configurez la collecte de métriques à partir des pods dans n'importe quel espace de noms.ClusterNodeMonitoring: configurez la collecte de métriques à partir des composants de nœud tels quekubeletet cAdvisor.
Duplication des métriques
Si vous filtrez une métrique également incluse dans un package de métriques actif pour un cluster, elle s'affiche plusieurs fois dans Google Cloud Managed Service pour Prometheus. Par exemple, si le package de métriques KUBELET est activé dans votre cluster et que vous configurez la collecte de la métrique kubelet_running_containers, des valeurs en double s'affichent.
Pour éviter les doublons, vérifiez que les métriques que vous collectez ne sont pas incluses dans l'un des packages de métriques actifs. Pour en savoir plus sur les métriques incluses, consultez les packages de métriques suivants :
- Métriques système GKE
- Métriques du plan de contrôle
- Métriques d'état des objets Kubernetes
- Métriques cAdvisor et
kubelet - Métriques NVIDIA DCGM
Avant de commencer
Avant de commencer, effectuez les tâches suivantes :
- Activez l'API Google Kubernetes Engine. Activer l'API Google Kubernetes Engine
- Si vous souhaitez utiliser la Google Cloud CLI pour cette tâche, installez puis initialisez la gcloud CLI. Si vous avez déjà installé la gcloud CLI, obtenez la dernière version en exécutant la commande
gcloud components update. Il est possible que les versions antérieures de la gcloud CLI ne permettent pas d'exécuter les commandes de ce document.
- Vérifiez que vous disposez des autorisations requises pour ce document.
- Utilisez un cluster GKE existant ou créez-en un.
Rôles requis
Pour obtenir les autorisations nécessaires pour collecter et afficher des métriques, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre projet :
-
Créez des ressources Kubernetes dans votre cluster :
Développeur Kubernetes Engine (
roles/container.developer) -
Afficher les métriques dans Monitoring :
Lecteur Monitoring (
roles/monitoring.viewer)
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Activer Google Cloud Managed Service pour Prometheus
Google Cloud Managed Service pour Prometheus est activé par défaut dans tous les clusters GKE et ne peut pas être désactivé dans les clusters Autopilot. Si vous utilisez un cluster Autopilot, passez à la section Configurer la collecte de métriques.
Pour vérifier que Google Cloud Managed Service pour Prometheus est activé dans votre cluster Standard, sélectionnez l'une des options suivantes :
Console
Dans la console Google Cloud , accédez à la page Clusters Kubernetes.
Sur la ligne du cluster que vous souhaitez vérifier, cliquez sur Actions > Modifier. La page Détails du cluster s'ouvre.
Dans la section Fonctionnalités, vérifiez la valeur du champ Service géré pour Prometheus. Si la valeur est Activé, passez à la section Configurer la collecte de métriques. Si la valeur est Désactivé, activez Google Cloud Managed Service pour Prometheus :
- Cliquez sur Modifier Managed Service pour Prometheus. La boîte de dialogue Modifier Managed Service pour Prometheus s'ouvre.
- Cochez la case Activer Managed Service pour Prometheus.
- Cliquez sur Enregistrer les modifications.
gcloud
Vérifiez si Google Cloud Managed Service pour Prometheus est activé dans le cluster :
gcloud container clusters describe CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--format='value(monitoringConfig.managedPrometheusConfig.enabled)'
Remplacez les éléments suivants :
CLUSTER_NAME: nom de votre cluster Standard.CONTROL_PLANE_LOCATION: région ou zone du plan de contrôle du cluster, par exempleus-central1ouus-central1-a.
Si le résultat est True, cela signifie que Google Cloud Managed Service pour Prometheus est activé.
Si le résultat est False, activez Google Cloud Managed Service pour Prometheus :
gcloud container clusters update CLUSTER_NAME \
--location=CONTROL_PLANE_LOCATION \
--enable-managed-prometheus
Configurer la collecte de métriques
Pour configurer Google Cloud Managed Service pour Prometheus afin d'ingérer une métrique émise spécifique, vous avez besoin des informations suivantes sur la métrique :
- Nom de la métrique, par exemple
kubelet_working_pods. - Point de terminaison qui expose la métrique, comme
/metrics/cadvisorou/metrics.
Pour trouver des métriques et configurer la collecte, procédez comme suit :
Recherchez une métrique dans la documentation de référence du composant spécifique. Par exemple, vous pouvez utiliser les ressources suivantes pour trouver une métrique de nœud :
Vérifiez les packages de métriques actifs pour le cluster :
gcloud container clusters describe CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --flatten=monitoringConfig.componentConfig \ --format='value(enableComponents)'Le résultat ressemble à ce qui suit :
SYSTEM_COMPONENTS;STORAGE;POD;DEPLOYMENT;STATEFULSET;DAEMONSET;HPA;JOBSET;CADVISOR;KUBELET;DCGMVérifiez si la métrique que vous souhaitez collecter se trouve dans l'un de ces packages actifs à l'aide des informations de la section Métriques disponibles. Si votre métrique est incluse dans un package de métriques actif, des métriques en double peuvent apparaître dans la section "Surveillance". Si votre métrique ne figure pas dans un package de métriques actif, passez à l'étape suivante.
Facultatif : Pour vérifier que la métrique est disponible au niveau du point de terminaison des métriques, interrogez le point de terminaison à l'aide de la commande
kubectl get --raw. Par exemple, la commande suivante interroge le point de terminaison/metricspour la métriquekubelet_working_pods:kubectl get --raw "/api/v1/nodes/NODE_NAME/proxy/metrics" | grep "kubelet_working_pods"Remplacez
NODE_NAMEpar le nom du nœud à interroger.Le résultat ressemble à ce qui suit, ce qui indique que la métrique est disponible :
# HELP kubelet_working_pods [ALPHA] Number of pods the kubelet is actually running, broken down by lifecycle phase, whether the pod is desired, orphaned, or runtime only (also orphaned), and whether the pod is static. An orphaned pod has been removed from local configuration or force deleted in the API and consumes resources that are not otherwise visible. # TYPE kubelet_working_pods gauge kubelet_working_pods{config="desired",lifecycle="sync",static=""} 8 kubelet_working_pods{config="desired",lifecycle="sync",static="true"} 1 kubelet_working_pods{config="desired",lifecycle="terminated",static=""} 0 kubelet_working_pods{config="desired",lifecycle="terminated",static="true"} 0 kubelet_working_pods{config="desired",lifecycle="terminating",static=""} 0 kubelet_working_pods{config="desired",lifecycle="terminating",static="true"} 0Après avoir identifié la métrique que vous souhaitez collecter, utilisez une règle de réétiquetage Prometheus dans une ressource personnalisée PodMonitoring, ClusterPodMonitoring ou ClusterNodeMonitoring pour filtrer cette métrique. La ressource personnalisée que vous utilisez dépend des propriétés de la métrique, comme décrit dans la section Ressources personnalisées de collecte de métriques.
Par exemple, examinez le fichier manifeste ClusterNodeMonitoring suivant :
apiVersion: monitoring.googleapis.com/v1 kind: ClusterNodeMonitoring metadata: name: kubelet-pod-counts spec: selector: matchLabels: {} endpoints: - path: "/metrics" scheme: "https" interval: "30s" tls: insecureSkipVerify: true # metricRelabeling specifies the metrics to ingest. The metrics must be # available at the specified endpoint. metricRelabeling: - action: keep sourceLabels: [__name__] regex: kubelet_(active|working)_podsCe fichier manifeste possède les propriétés suivantes :
- Le champ
selector.matchLabelsest un ensemble vide ({}), qui correspond à tous les nœuds. - Le champ
endpoints.pathidentifie le point de terminaison des métriques à extraire. - Le champ
metricRelabelingidentifie les métriques spécifiques à collecter. Dans cet exemple, Google Cloud Managed Service pour Prometheus collecte les métriques dont le nom estkubelet_active_podsetkubelet_working_podsà partir du point de terminaison.
- Le champ
Lorsque vous déployez la ressource personnalisée, Google Cloud Managed Service pour Prometheus ingère les métriques qui correspondent à la configuration spécifiée. Vous pouvez afficher et interroger ces métriques en utilisant les mêmes méthodes que pour les autres métriques, telles que Cloud Monitoring.
Vérifier la collecte de métriques pour un exemple de métrique
Les étapes suivantes vous montrent comment configurer Google Cloud Managed Service pour Prometheus afin de collecter la métrique kubelet_runtime_operations_errors_total à partir de kubelet.
Dans ces exemples de procédure, vous vérifiez que la métrique n'est pas collectée actuellement, vous créez un ClusterNodeMonitoring (car kubelet est un composant de nœud), puis vous vérifiez que la métrique s'affiche dans Monitoring.
Vérifiez que la métrique
kubelet_runtime_operations_errors_totaln'est pas déjà présente dans Monitoring :Dans la console Google Cloud , accédez à la page Explorateur de métriques.
Dans la section Requêtes, dans le champ Métrique, essayez de sélectionner la métrique
prometheus/kubelet_runtime_operations_errors_total/counter. Si aucun résultat de recherche ne s'affiche, cela signifie que la métrique n'est pas collectée.
Créez un ClusterNodeMonitoring pour filtrer la métrique
kubelet_runtime_operations_errors_total:Enregistrez le fichier manifeste ClusterNodeMonitoring suivant sous le nom
kubelet-runtime-errors-collector.yaml:apiVersion: monitoring.googleapis.com/v1 kind: ClusterNodeMonitoring metadata: name: kubelet-runtime-errors-collector spec: selector: matchLabels: {} endpoints: - path: /metrics scheme: https interval: 30s tls: insecureSkipVerify: true metricRelabeling: - action: keep sourceLabels: [__name__] regex: kubelet_runtime_operations_errors_totalCréez ClusterNodeMonitoring :
kubectl apply -f kubelet-runtime-errors-collector.yaml
L'affichage de la métrique dans Monitoring peut prendre jusqu'à 10 minutes.
Dans la console Google Cloud , vérifiez que la métrique apparaît dans Monitoring :
Accédez à la page Explorateur de métriques.
Dans la section Requêtes, dans le champ Métrique, sélectionnez la métrique
prometheus/kubelet_runtime_operations_errors_total/counter.Facultatif : Dans le menu déroulant Filtre, sélectionnez votre cluster.
La section Résultats affiche un graphique avec la métrique collectée.
Étapes suivantes
- Explorer les packages de métriques disponibles dans GKE
- Configurer la surveillance automatique des applications pour les charges de travail
- Créer et gérer des tableaux de bord Monitoring personnalisés