Déboguer une instance

Vous pouvez activer le mode de débogage pour une VM. En mode débogage, les comptes principaux disposant des rôles "Propriétaire", "Éditeur" et "Administrateur App Engine" sur le projet disposent d'un accès root à la VM. Lorsque le mode de débogage est activé, le déploiement automatique des mises à jour du système d'exploitation et des correctifs de sécurité est désactivé. En revanche, la VM fait toujours partie du pool d'équilibreur de charge et continue de recevoir des requêtes externes.

Chaque fois que vous activez ou désactivez le débogage, un événement "Activer/Désactiver le débogage des instances de VM" s'affiche dans la console Google Cloud et il est enregistré dans le fichier /var/log/syslog.log de la VM.

Activer et désactiver le mode de débogage

Vous pouvez utiliser l'outil gcloud afin d'activer et de désactiver le mode de débogage pour une instance. Pour déboguer une instance, votre rôle doit contenir l'autorisation appengine.instances.enableDebug.

Pour activer et désactiver le mode de débogage dans l'outil gcloud, procédez comme suit :

  1. Exécutez la commande enable-debug app instances gcloud pour déboguer les VM d'une instance et d'une version particulières, comme ci-dessous :
    gcloud app --project PROJECT-ID instances enable-debug
    Remplacez PROJECT-ID par votre ID de projet et suivez les instructions pour spécifier la version de l'instance à déboguer.
  2. Une fois le débogage terminé, désactivez le mode de débogage comme suit :
    gcloud app --project PROJECT-ID instances disable-debug
    Suivez ensuite les instructions pour spécifier la version de l'instance.

Lorsque vous désactivez le mode de débogage, la VM s'arrête, puis une nouvelle instance de votre application démarre et s'exécute sur une nouvelle VM propre.

Se connecter à l'instance

Console

Pour se connecter à une instance dans la console, procédez comme suit :

  1. Consultez la page "Instances" de la console Google Cloud qui correspond à votre projet :

    Accédez à la page "Instances".

  2. Cliquez sur SSH tout à droite de la ligne contenant l'instance à laquelle vous souhaitez accéder :

    L'instance passe alors en mode de débogage. Une session SSH s'ouvre pour l'instance dans une fenêtre de terminal.

    Pour démarrer une session SSH, vous pouvez également sélectionner différentes options dans la liste déroulante.

  3. À ce stade, vous utilisez l'hôte de l'instance, qui exécute plusieurs conteneurs. Pour en savoir plus sur les conteneurs, consultez la section ci-dessous intitulée Comprendre les principaux conteneurs.

  4. Dans la fenêtre de terminal, répertoriez les conteneurs exécutés dans l'instance :

    sudo docker ps

  5. Le résultat de la commande sudo docker ps répertorie chaque conteneur par ligne. Recherchez la ligne contenant votre ID de projet : il s'agit du conteneur qui exécute votre code. Notez le NOM de ce conteneur.

  6. (Facultatif) Vous pouvez afficher les informations de journalisation de votre application en appelant la commande suivante :

    sudo docker logs CONTAINER-NAME

  7. Démarrez un shell dans le conteneur qui exécute le code :

    sudo docker exec -it CONTAINER-NAME /bin/bash

  8. Une fois le débogage terminé, saisissez exit pour quitter le conteneur, puis saisissez de nouveau exit pour quitter la session SSH.

  9. Désactivez le débogage de l'instance pour lui permettre de reprendre un fonctionnement normal.

gcloud

Pour vous connecter à une instance à l'aide de la commande gcloud, procédez comme suit :

  1. Une fois l'instance activée pour le débogage, appelez la commande suivante :

    gcloud beta app instances --project PROJECT-ID ssh INSTANCE-NAME --service SERVICE --version VERSION

  2. À ce stade, vous utilisez l'hôte de l'instance, qui exécute plusieurs conteneurs. Pour en savoir plus sur les conteneurs, consultez la section ci-dessous intitulée Comprendre les principaux conteneurs.

  3. Dans la fenêtre de terminal, répertoriez les conteneurs exécutés dans l'instance :

    sudo docker ps

  4. Le résultat de la commande sudo docker ps répertorie chaque conteneur par ligne. Recherchez la ligne contenant votre ID de projet : il s'agit du conteneur qui exécute votre code. Notez le NOM de ce conteneur.

  5. (Facultatif) Vous pouvez afficher les informations de journalisation de votre application en appelant la commande suivante :

    sudo docker logs CONTAINER-NAME

  6. Démarrez un shell dans le conteneur qui exécute le code :

    docker exec -it CONTAINER-NAME /bin/bash

  7. Une fois le débogage terminé, saisissez exit pour quitter le conteneur, puis saisissez de nouveau exit pour quitter la session SSH.

  8. Désactivez le débogage de l'instance pour lui permettre de reprendre un fonctionnement normal.

Comprendre les principaux conteneurs

En plus du conteneur exécutant le code de votre application, votre instance peut également comporter les conteneurs ci-dessous :

Conteneur et code source Description
cloud-sql Garantit des connexions sécurisées à votre instance Cloud SQL.
fluentd_logger Correspond à l'agent Logging.
nginx_proxy Sert de proxy pour les requêtes envoyées à l'application.
opentelemetry-collector Reçoit, traite et exporte les données de télémétrie.
stackdriver-monitoring-agent Collecte, stocke et surveille les informations système.

Notez que ces conteneurs side-car sont susceptibles d'être modifiés sans préavis.