Rechercher des erreurs dans une application qui a planté à l'aide d'Error Reporting

Error Reporting permet de surveiller les conditions d'erreur de l'ensemble des services et applications d'un projet Google Cloud et des applications Amazon Elastic Compute Cloud (EC2), au même endroit.

Dans ce guide, nous allons apprendre à effectuer les opérations suivantes :

  1. simuler une erreur de service dans un projet Google Cloud ;

  2. utiliser Error Reporting pour afficher l'erreur et modifier son état pour faire savoir aux membres de votre équipe que le problème est en cours de résolution ;

  3. configurer des notifications afin d'être averti lorsque de nouveaux types d'erreurs se produisent.


Pour obtenir des instructions détaillées sur cette tâche directement dans la console Google Cloud, cliquez sur Visite guidée :

Visite guidée


Avant de commencer

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Ouvrez une fenêtre Cloud Shell pour votre projet Google Cloud. Le message Connexion… s'affiche pendant le démarrage de la session.

    Ouvrez Cloud Shell.

Simuler une erreur

  1. Pour générer 11 exemples d'erreurs, exécutez le script suivant dans Cloud Shell :

      COUNTER=0
      while [  $COUNTER -lt 11 ]; do
          gcloud beta error-reporting events report --service tutorial --service-version v$((COUNTER/10+1)) \
              --message "java.lang.RuntimeException: Error rendering template $COUNTER
                at com.example.TestClass.test(TestClass.java:51)
                at com.example.AnotherClass(AnotherClass.java:25)
                at javax.servlet.http.HttpServlet.service (HttpServlet.java:617)
                at javax.servlet.http.HttpServlet.service (HttpServlet.java:717)"
          if [ $COUNTER -eq 10 ]; then
            echo "All sample errors reported."
          fi
          let COUNTER=COUNTER+1
      done
    

    Une fois que le script a généré toutes les erreurs, il renvoie la ligne suivante :

    All sample errors reported.

Afficher les erreurs dans Error Reporting

  1. Dans la console Google Cloud, accédez à la page Error Reporting:

    Accéder à Error Reporting

    Vous pouvez également accéder à cette page à l'aide de la barre de recherche.

    Le tableau de bord Error Reporting affiche un résumé de chaque erreur trouvée et le nombre d'occurrences de chaque erreur. Lorsque l'actualisation automatique est activée, Error Reporting actualise automatiquement la liste des erreurs toutes les 10 secondes.

    La capture d'écran suivante montre un exemple de page de création de rapports d'erreur:

    Interface utilisateur affichant la liste des erreurs.

  2. Cliquez sur le nom de l'erreur pour afficher la page de détails correspondante, qui contient toutes les informations disponibles sur une erreur. Si Gemini est activé dans le projet, vous pouvez l'utiliser pour obtenir des suggestions de dépannage.

Configurer les notifications

Vous pouvez configurer Error Reporting pour vous avertir de l'arrivée d'un nouveau type d'erreur. Les notifications ne sont pas envoyées lorsqu'il y a de nouvelles occurrences d'erreurs existantes :

  1. Dans la console Google Cloud, accédez à la page Error Reporting:

    Accéder à Error Reporting

    Vous pouvez également accéder à cette page à l'aide de la barre de recherche.

  2. Pour activer les notifications par e-mail, cliquez sur Plus , puis sélectionnez Activer l'envoi des nouvelles notifications d'erreur pour le projet dans la liste déroulante.

  3. Pour générer de nouveaux types d'erreurs, cliquez sur Activer Cloud Shell Bouton d'activation de Cloud Shell et exécutez le script suivant :

      COUNTER=0
      while [ $COUNTER -lt 3 ]; do
            gcloud beta error-reporting events report --service tutorial --service-version v1 \
                --message "java.lang.ArrayIndexOutOfBoundsException: $COUNTER
                  at com.example.AppController.createUser(AppController.java:42)
                  at com.example.User(User.java:31)
                  at javax.servlet.http.HttpServlet.service (HttpServlet.java:617)
                  at javax.servlet.http.HttpServlet.service (HttpServlet.java:717)"
          if [ $COUNTER -eq 10 ]; then
            echo "All sample errors reported."
          fi
          let COUNTER=COUNTER+1
      done
    

    Une fois que le script a généré toutes les erreurs, il renvoie la ligne suivante :

    All sample errors reported.

  4. Vérifiez dans votre messagerie si vous avez reçu un message de "Stackdriver Notifications".

Générer des messages d'erreur à partir d'une application App Engine

Bien que les exemples de messages que vous avez générés à partir des scripts simulent entièrement les conditions d'erreur dans Error Reporting, si vous souhaitez générer des erreurs à partir d'un service réel qui s'exécute dans votre projet Google Cloud, suivez la procédure décrite dans cette section.

Déployer une application

Pour télécharger et déployer une application sur App Engine, procédez comme suit :

  1. Téléchargez et configurez l'application à partir du projet GitHub python-docs-samples :

    1. Clonez le projet dans l'environnement Cloud Shell :

      git clone https://github.com/GoogleCloudPlatform/python-docs-samples
      

      Git renvoie un message semblable à celui indiqué ci-dessous :

      git clone https://github.com/GoogleCloudPlatform/python-docs-samples
      Cloning into 'python-docs-samples'...
      
    2. Créez un environnement Python isolé et activez-le :

      cd python-docs-samples/appengine/standard_python3/hello_world
      virtualenv env -p python3
      source env/bin/activate
      
    3. Installez les dépendances :

      pip install -r requirements.txt
      
  2. Vérifiez que l'installation et la configuration de l'application ont réussi :

    1. Exécutez l'application :

      python main.py
      
    2. Pour afficher l'application sur une page Web locale, cliquez sur le lien affiché dans Cloud Shell. La page Web affiche le message Hello World!.

    3. Pour arrêter votre application en cours d'exécution, saisissez Ctrl-C dans Cloud Shell.

  3. Transférez l'application sur App Engine.

    gcloud app deploy
    

    Si vous êtes invité à indiquer une région de déploiement, sélectionnez-en une près de chez vous. Lorsque vous êtes invité à poursuivre l'opération, entrez Y. L'importation se termine après quelques instants.

  4. Affichez l'application dans un navigateur en exécutant la commande suivante dans Cloud Shell :

    gcloud app browse
    

    Si la Google Cloud CLI ne trouve pas votre navigateur, la commande précédente affiche un message d'erreur et un lien. Cliquez sur le lien affiché. Le message Hello, World! s'affiche dans le navigateur.

Générer une erreur

Pour créer une erreur qu'Error Reporting détecte et affiche, procédez comme suit :

  1. Modifiez le fichier main.py en remplaçant

    return 'Hello World!
    

    à

    return 'Hello World!' + 1000
    

    Lorsqu'elle est exécutée, cette modification entraîne une exception TypeError Python, car il est illégal de concaténer une chaîne et un entier.

  2. Téléchargez l'application modifiée sur App Engine :

    gcloud app deploy
    
  3. Retournez à l'onglet du navigateur contenant l'application en cours d'exécution et actualisez la page. En raison de la modification, la page affiche un message d'erreur au lieu du message Hello, World! :

    Internal Server Error
    The server encountered an internal error and was unable to complete your
    request. Either the server is overloaded or there is an error in the
    application.
    

    Si vous ne voyez pas ce message, attendez une minute et actualisez à nouveau la page. L'activation de la nouvelle version peut prendre quelques instants.

Afficher l'erreur dans Error Reporting

Pour afficher l'erreur, suivez les instructions de la section précédente Afficher les erreurs dans Error Reporting.

Effectuer un nettoyage

Pour éviter que les ressources utilisées dans cette page soient facturées sur votre compte Google Cloud, procédez comme suit :

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

Étape suivante