Configurer la journalisation et la surveillance pour GKE


Google Kubernetes Engine (GKE) inclut une intégration à Cloud Logging et Cloud Monitoring, y compris Google Cloud Managed Service pour Prometheus.

Cette intégration vous permet de surveiller vos clusters GKE en cours d'exécution, de gérer vos journaux système et de débogage, et d'analyser les performances de votre système à l'aide de fonctionnalités de profilage et de traçage avancées.

Cette intégration fournit également un tableau de bord pour observer vos clusters GKE.

Les journaux de sécurité, y compris les journaux d'audit de base, sont disponibles pour GKE et la plupart des autres services Google Cloud, même lorsque Cloud Logging n'est pas activé pour un cluster GKE. Pour en savoir plus, consultez la page Journaux d'audit Cloud.

Cette page explique comment effectuer les opérations suivantes :

  • Créer un cluster et configurer Cloud Logging, Cloud Monitoring et Google Cloud Managed Service pour Prometheus

  • Sélectionnez les journaux et les métriques à collecter.

  • Désactiver Cloud Logging, Cloud Monitoring et Google Cloud Managed Service pour Prometheus pour un cluster

Pour les clusters GKE Autopilot, vous ne pouvez pas désactiver l'intégration de Cloud Logging et Cloud Monitoring.

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 Google Cloud CLI pour cette tâche, installez puis initialisez gcloud CLI. Si vous avez déjà installé gcloud CLI, assurez-vous de disposer de la dernière version en exécutant la commande gcloud components update.
  • Vérifiez que vous êtes le propriétaire du projet contenant votre cluster.

  • Vérifiez que vous avez activé l'API Cloud Logging. Vous pouvez vérifier l'état de l'API Cloud Logging depuis la page de présentation.

Journaux et métriques

Vous pouvez choisir d'envoyer ou non les journaux et les métriques de votre cluster GKE vers Cloud Logging et Cloud Monitoring. Les sections suivantes décrivent les journaux et les métriques disponibles, ainsi que les journaux et les métriques activés par défaut au moment de la création du cluster.

Journaux disponibles

Si vous choisissez d'envoyer des journaux à Cloud Logging, vous devez envoyer des journaux système. Vous pouvez également envoyer des journaux à partir de sources supplémentaires.

En savoir plus sur les tarifs de Cloud Logging.

Le tableau suivant indique les valeurs acceptées pour l'option --logging pour les commandes create et update.

Source de journal Valeur --logging Journaux collectés
Aucune NONE Aucun journal envoyé à Cloud Logging. Aucun agent de collecte de journaux n'est installé dans le cluster. Cette valeur n'est pas acceptée pour les clusters GKE Autopilot.
Système SYSTEM Collecte les journaux des éléments suivants :
  • Tous les pods s'exécutant dans les espaces de noms kube-system, istio-system, knative-serving, gke-system et config-management-system
  • Les services principaux non conteneurisés, y compris l'environnement d'exécution docker/containerd, kubelet, kubelet-monitor, node-problem-detector et kube-container-runtime-monitor
  • La sortie des ports série du nœud, si les métadonnées de l'instance de VM serial-port-logging-enable sont définies sur "true"

Collecte également les événements Kubernetes. Cette valeur est obligatoire pour tous les types de clusters.

Charges de travail WORKLOAD Tous les journaux générés par des conteneurs non-système s'exécutant sur des nœuds utilisateur. Cette valeur est activée par défaut, mais facultative pour tous les types de clusters.
Serveur d'API API_SERVER Tous les journaux générés par kube-apiserver. Cette valeur est facultative pour tous les types de clusters.
Programmeur SCHEDULER Tous les journaux générés par kube-scheduler. Cette valeur est facultative pour tous les types de clusters.
Gestionnaire de contrôleurs CONTROLLER_MANAGER Tous les journaux générés par kube-controller-manager. Cette valeur est facultative pour tous les types de clusters.

Métriques disponibles

Si vous choisissez d'envoyer des métriques à Cloud Monitoring, vous devez envoyer des métriques système et avez également la possibilité d'envoyer des métriques supplémentaires.

Obtenez plus d'informations sur les tarifs de Cloud Monitoring, y compris sur les métriques non facturables.

Le tableau suivant indique les valeurs acceptées pour l'option --monitoring pour les commandes create et update.

Source Valeur --monitoring Métriques collectées
Aucune NONE Aucune métrique envoyée à Cloud Monitoring. Aucun agent de collecte de métriques n'est installé dans le cluster. Cette valeur n'est pas acceptée pour les clusters GKE Autopilot.
Image SYSTEM Métriques des composants système essentiels requises pour Kubernetes. Consultez la liste complète de ces métriques Kubernetes.
Serveur d'API API_SERVER Métriques de kube-apiserver. Consultez la liste complète des métriques du serveur d'API.
Programmeur SCHEDULER Métriques de kube-scheduler. Consultez la liste complète des métriques du programmeur.
Gestionnaire de contrôleurs CONTROLLER_MANAGER Métriques de kube-controller-manager. Consultez la liste complète des métriques du gestionnaire de contrôleurs.
Volume persistant (stockage) STORAGE Métriques de stockage provenant de kube-state-metrics. Inclut les métriques pour les volumes persistants et les revendications de volume persistant. Consultez la liste complète des métriques de stockage.
Pod POD Métriques de pod provenant de kube-state-metrics. Consultez la liste complète des métriques de pod.
Déploiement DEPLOYMENT Métriques de déploiement provenant de kube-state-metrics. Consultez la liste complète des métriques de déploiement.
StatefulSet STATEFULSET Métriques StatefulSet provenant de kube-state-metrics. Consultez la liste complète des métriques StatefulSet.
DaemonSet DAEMONSET Métriques DaemonSet provenant de kube-state-metrics. Consultez la liste complète des métriques DaemonSet.
HorizonalPodAutoscaler HPA Métriques HPA provenant de kube-state-metrics. Consultez la liste complète des métriques HorizonalPodAutoscaler.

Vous pouvez également collecter des métriques de style Prometheus exposées par n'importe quelle charge de travail GKE en utilisant le service géré Google Cloud pour Prometheus, ce qui vous permet de surveiller vos charges de travail et d'envoyer des alertes via Prometheus, sans avoir à gérer et exploiter manuellement Prometheus à grande échelle.

Journaux et métriques activés par défaut

Lorsque vous créez un cluster GKE sur Google Cloud, certains journaux et métriques sont activés par défaut lors de la création du cluster.

  • Les journaux système et les métriques sont activés pour tous les types de clusters et ne peuvent pas être désactivés.
  • Les journaux de charge de travail sont activés par défaut pour tous les clusters Autopilot, mais peuvent être désactivés. Nous vous déconseillons de désactiver les journaux de charge de travail en raison de leur impact sur la compatibilité.
  • Pour les projets de l'édition GKE Enterprise, des journaux et des métriques supplémentaires utiles sont activés par défaut si vous vous enregistrez dans un parc lors de la création du cluster. Si vous souhaitez activer ces journaux et métriques après la création d'un cluster, consultez la page Modifier votre cluster.

Dans les tableaux suivants, une coche () indique les journaux et les métriques activés par défaut lorsque vous créez et enregistrez un cluster dans un projet avec GKE Enterprise activé :

Journaux

Nom du journal Autopilot Standard
Système
Charges de travail -
Serveur d'API
Programmeur
Gestionnaire de contrôleurs

Les journaux du plan de contrôle (serveur d'API, programmeur et gestionnaire de contrôleurs) entraînent des frais Cloud Logging.

Métriques

Nom de la métrique Autopilot Standard
Système
Serveur d'API
Programmeur
Gestionnaire de contrôleurs
Volume persistant (stockage)
Pods
Déploiement
StatefulState
DaemonSet
HorizonalPodAutoscaler

Tous les clusters enregistrés dans un projet sur lequel GKE Enterprise est activé peuvent utiliser les métriques du plan de contrôle et les métriques Kube sans frais supplémentaires. Sinon, ces métriques entraînent des frais Cloud Monitoring.

Vous pouvez choisir de désactiver les journaux et les métriques par défaut lors de la création du cluster ou après la création du cluster.

Configurer la surveillance et la journalisation pour un nouveau cluster

Les instructions de création d'un cluster figurant dans cette section ne portent que sur les options relatives à Cloud Logging et à Cloud Monitoring. Pour obtenir des instructions complètes sur la création d'un cluster GKE, consultez la documentation sur la création d'un cluster standard ou Autopilot.

Pour configurer manuellement la journalisation et la surveillance lors de la création d'un cluster GKE, procédez comme suit :

Console

Pour un cluster Autopilot :

  1. Dans le volet de navigation de la page de création de cluster Autopilot, cliquez sur Paramètres avancés.

    Créer un cluster Autopilot

  2. Dans la liste Opérations, sélectionnez les journaux et les métriques que vous souhaitez collecter.

    • Dans la liste Composants de Cloud Logging, sélectionnez les composants à partir desquels vous souhaitez collecter les journaux.

    • Dans la liste Composants de Cloud Monitoring, sélectionnez les composants à partir desquels vous souhaitez collecter des métriques.

    Les clusters Autopilot utilisent toujours les bonnes pratiques de Google pour la collecte de la télémétrie, ce qui signifie que la journalisation du système et des charges de travail ainsi que la surveillance du système sont toujours activées.

  3. Cliquez sur Créer.

Pour un cluster Standard :

  1. Dans le volet de navigation de la page de création de cluster Standard, sous Cluster, cliquez sur Fonctionnalités.

    Créer un cluster Kubernetes

  2. Dans la liste Opérations, sélectionnez les journaux et les métriques que vous souhaitez collecter.

    • Dans la liste Composants de Cloud Logging, sélectionnez les composants à partir desquels vous souhaitez collecter les journaux.

    • Dans la liste Composants de Cloud Monitoring, sélectionnez les composants à partir desquels vous souhaitez collecter des métriques.

    • Pour désactiver Cloud Logging (sauf pour les journaux d'audit), décochez la case Activer Cloud Logging.

    • Pour désactiver Cloud Monitoring, décochez la case Activer Cloud Monitoring.

    • Pour désactiver Google Cloud Managed Service pour Prometheus, décochez la case Activer Google Cloud Managed Service pour Prometheus.

gcloud

  1. Pour les nouveaux clusters, Cloud Logging et Cloud Monitoring sont activés par défaut. Pour créer votre cluster, exécutez la commande suivante.

    gcloud container clusters create CLUSTER_NAME \
        --location=COMPUTE_LOCATION
    

    Remplacez les éléments suivants :

    1. Vous pouvez également configurer les journaux envoyés à Cloud Logging en transmettant une liste de valeurs séparées par des virgules à l'option --logging de la commande create. Pour ne collecter aucun journal, transmettez --logging=NONE. Pour collecter les journaux système, du serveur d'API, du programmeur et du gestionnaire de contrôleurs, transmettez --logging=SYSTEM,API_SERVER,SCHEDULER,CONTROLLER_MANAGER. Pour collecter les journaux système et des charges de travail, transmettez --logging=SYSTEM,WORKLOAD. Par exemple :

      gcloud container clusters create CLUSTER_NAME \
          --location=COMPUTE_LOCATION \
          --logging=SYSTEM,WORKLOAD
      
    2. De même, vous pouvez configurer les métriques envoyées à Cloud Monitoring en transmettant une liste de valeurs séparées par une virgule à l'option --monitoring. Pour ne collecter aucune métrique, transmettez --monitoring=NONE. Pour collecter les métriques système, transmettez --monitoring=SYSTEM. Pour collecter toutes les métriques, transmettez --monitoring=SYSTEM,API_SERVER,SCHEDULER,CONTROLLER_MANAGER,STORAGE,POD,DEPLOYMENT,STATEFULSET, DAEMONSET,HPA. Par exemple :

      gcloud container clusters create CLUSTER_NAME \
          --location=COMPUTE_LOCATION \
          --monitoring=SYSTEM,API_SERVER,SCHEDULER,CONTROLLER_MANAGER,STORAGE,POD,DEPLOYMENT,STATEFULSET,DAEMONSET,HPA
      
    3. Vous pouvez également activer Google Managed Service pour Prometheus à l'aide de l'option --enable-managed-prometheus. Par exemple :

      gcloud container clusters create CLUSTER_NAME \
          --location=COMPUTE_LOCATION \
          --enable-managed-prometheus
      

      L'option --enable-managed-prometheus active le collecteur géré, qui doit être configuré.

Terraform

  • Pour configurer la collecte de journaux et de métriques à l'aide de Terraform, accédez aux blocs logging_config et monitoring_config dans le registre Terraform pour google_container_cluster. L'activation de la collecte de journaux à partir du serveur d'API, du programmeur et du gestionnaire de contrôleurs nécessite le fournisseur Terraform pour Google Cloud version 4.44.0 ou ultérieure.

  • Pour obtenir des informations générales sur l'utilisation de Google Cloud avec Terraform, consultez la page Terraform avec Google Cloud.

Configurer la surveillance et la journalisation pour un cluster existant

La section suivante explique comment modifier l'intégration Cloud Logging et Cloud Monitoring pour un cluster GKE existant.

Modifier la compatibilité des fonctionnalités de surveillance et de journalisation, et modifier la version Kubernetes de votre cluster sont des actions distinctes. Si vous changez la version Kubernetes de votre cluster, cela ne modifie pas la compatibilité configurée de Monitoring et Logging.

Quelle compatibilité de Monitoring et Logging mon cluster utilise-t-il ?

Pour afficher les paramètres d'intégration de Cloud Logging et Cloud Monitoring pour votre cluster, procédez comme suit :

  1. Dans le panneau de navigation de la console Google Cloud, sélectionnez Kubernetes Engine, puis Clusters :

    Accéder à la page Clusters Kubernetes

  2. Dans le panneau Informations détaillées de votre cluster, consultez l'état indiqué dans les champs Cloud Logging, Cloud Monitoring et Google Cloud Managed Service pour Prometheus

Modifier le cluster

Pour modifier les paramètres d'intégration de Cloud Logging ou Cloud Monitoring pour un cluster existant, procédez comme suit :

Console

  1. Dans le panneau de navigation de la console Google Cloud, sélectionnez Kubernetes Engine, puis Clusters :

    Accéder à la page Clusters Kubernetes

  2. Cliquez sur le nom de votre cluster.

  3. Pour modifier les journaux envoyés à Cloud Logging, les métriques envoyées à Cloud Monitoring ou définir si Google Cloud Managed Service pour Prometheus est activé ou non, cliquez sur le bouton Modifier situé en regard de Cloud Logging, Cloud Monitoring ou Google Cloud Managed Service pour Prometheus.

  4. Cliquez sur Enregistrer.

gcloud

Les instructions gcloud suivantes concernent la mise à niveau de la compatibilité des fonctionnalités de surveillance et de journalisation de votre cluster à l'aide de la commande gcloud container clusters update. Notez que vous utilisez la commande update, et non la commande upgrade.

  • Configurez les journaux envoyés à Cloud Logging en transmettant une liste de valeurs séparées par des virgules à l'option --logging de la commande gcloud container clusters update. Consultez la liste complète des sources de journaux disponibles. Par exemple, pour collecter les journaux système et des charges de travail, transmettez --logging=SYSTEM,WORKLOAD. Pour ne collecter que les journaux système, transmettez --logging=SYSTEM. Ou, pour ne collecter aucun journal, transmettez --logging=NONE :

    gcloud container clusters update CLUSTER_NAME \
        --location=COMPUTE_LOCATION \
        --logging=NONE
    
  • Configurez les métriques envoyées à Cloud Monitoring en transmettant une liste de valeurs séparées par une virgule à l'option --monitoring de la commande gcloud container clusters update. Consultez la liste complète des sources de métriques disponibles. Par exemple, pour collecter les métriques système, transmettez --monitoring=SYSTEM. Ou, pour ne pas collecter de métriques, transmettez --monitoring=NONE :

    gcloud container clusters update CLUSTER_NAME \
        --location=COMPUTE_LOCATION \
        --monitoring=NONE
    
  • Configurez l'activation de Google Cloud Managed Service pour Prometheus à l'aide des options --enable-managed-prometheus ou --disable-managed-prometheus. Par exemple :

    gcloud container clusters update CLUSTER_NAME \
        --location=COMPUTE_LOCATION \
        --enable-managed-prometheus
    

Terraform

  • Pour configurer la collecte de journaux et de métriques à l'aide de Terraform, accédez aux blocs logging_config et monitoring_config dans le registre Terraform pour google_container_cluster. L'activation de la collecte de journaux à partir du serveur d'API, du programmeur et du gestionnaire de contrôleurs nécessite le fournisseur Terraform pour Google Cloud version 4.44.0 ou ultérieure.

  • Pour obtenir des informations générales sur l'utilisation de Google Cloud avec Terraform, consultez la page Terraform avec Google Cloud.

Paramètres de configuration obsolètes

Si vous utilisiez auparavant les anciens paramètres de configuration pour configurer la compatibilité de la journalisation et de la surveillance pour votre cluster GKE, ces paramètres sont obsolètes. Le tableau suivant présente les paramètres de configuration équivalents qui remplacent les indicateurs obsolètes.

Ancienne configuration Anciens arguments create Anciens arguments update Nouveaux arguments create et update
Désactivé --no-enable-stackdriver-kubernetes --no-enable-stackdriver-kubernetes --logging=NONE
--monitoring=NONE
Surveillance du système uniquement (Logging désactivé) --enable-stackdriver-kubernetes
--no-enable-cloud-logging
--logging-service=none
--monitoring-service=monitoring.googleapis.com/kubernetes
--logging=NONE
--monitoring=SYSTEM
Journalisation du système et de la charge de travail uniquement (Monitoring désactivé) --enable-stackdriver-kubernetes
--no-enable-cloud-monitoring
--logging-service=logging.googleapis.com/kubernetes
--monitoring-service=none
--logging=SYSTEM,WORKLOAD
--monitoring=NONE
Journalisation et surveillance du système uniquement (bêta) --enable-logging-monitoring-system-only --enable-logging-monitoring-system-only --logging=SYSTEM
--monitoring=SYSTEM
Journalisation et surveillance du système et de la charge de travail --enable-stackdriver-kubernetes --enable-stackdriver-kubernetes --logging=SYSTEM,WORKLOAD
--monitoring=SYSTEM

Étapes suivantes

  • Pour en savoir plus sur les coûts associés à Cloud Logging, à Cloud Monitoring et à Google Cloud Managed Service pour Prometheus, consultez la page Tarifs.