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 :
simuler une erreur de service dans un projet Google Cloud ;
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 ;
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 :
Avant de commencer
- 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.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- Ouvrez une fenêtre Cloud Shell pour votre projet Google Cloud. Le message Connexion… s'affiche pendant le démarrage de la session.
Simuler une erreur
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
-
Dans la console Google Cloud, accédez à la page 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:
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 :
-
Dans la console Google Cloud, accédez à la page Error Reporting:
Vous pouvez également accéder à cette page à l'aide de la barre de recherche.
Pour activer les notifications par e-mail, cliquez sur Plus more_vert, puis sélectionnez Activer l'envoi des nouvelles notifications d'erreur pour le projet dans la liste déroulante.
Pour générer de nouveaux types d'erreurs, cliquez sur Activer 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.
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 :
Téléchargez et configurez l'application à partir du projet GitHub python-docs-samples :
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'...
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
Installez les dépendances :
pip install -r requirements.txt
Vérifiez que l'installation et la configuration de l'application ont réussi :
Exécutez l'application :
python main.py
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!
.Pour arrêter votre application en cours d'exécution, saisissez
Ctrl-C
dans Cloud Shell.
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.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 :
Modifiez le fichier
main.py
en remplaçantreturn '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.Téléchargez l'application modifiée sur App Engine :
gcloud app deploy
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 :
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.