Ce document décrit les scénarios de dépannage courants pour le Error Reporting.
Les événements d'erreur envoyés à l'API Error Reporting ne s'affichent pas
Vous envoyez des événements d'erreur à votre projet Google Cloud à l'aide de l'API Error Reporting. Toutefois, ces événements ne sont pas affichés sur la page Error Reporting.
Pour résoudre ce problème, procédez comme suit :
Assurez-vous que l'API Error Reporting est activée.
Enable the required API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.Ouvrez Cloud Shell et utilisez Google Cloud CLI pour vérifier que vous pouvez envoyer des événements d'erreur à votre projet :
Exécutez la commande suivante :
gcloud beta error-reporting events report --service Manual --service-version test1 \ --message "java.lang.TestError: msg at com.example.TestClass.test(TestClass.java:51) at com.example.AnotherClass(AnotherClass.java:25)"Accédez à la page Error Reporting et vérifiez qu'elle affiche une erreur intitulée
TestError: msg.Accédez à la page "Explorateur de journaux" et recherchez
TestErrordans vos entrées de journal. L'entrée de journal est créée automatiquement.
Vérifiez que votre application envoie l'événement d'erreur au point de terminaison
reportet que le corps de la requête est mis en forme en tant qu'objetReportedErrorEvent. Vous devez également vérifier que des entrées de journal sont créées. Lorsque vous utilisez l'API Error Reporting, des entrées de journal avec des messages d'erreur correctement formatés sont automatiquement générées et écrites dans Cloud Logging. Ces entrées de journal sont écrites dans un journal dont lelogNameest formaté comme suit :projects/PROJECT_ID/clouderrorreporting.googleapis.com%2Freported_errors
Les événements d'erreur s'affichent, mais l'API Error Reporting est désactivée
Vous avez désactivé l'API Error Reporting. Toutefois, la page Error Reporting de la console Google Cloud affiche des événements d'erreur.
Ce comportement est normal. Les événements d'erreur sont créés en réponse aux appels de l'API Error Reporting effectués au point de terminaison report.
Toutefois, les événements d'erreur sont également déduits lorsque Error Reporting peut analyser vos données de journaux.
Les événements d'erreur ne sont pas déduits des données de journaux
Vous vous attendez à ce qu'Error Reporting analyse vos données de journaux et déduise les événements d'erreur. Toutefois, la page Error Reporting n'affiche aucun événement d'erreur, même si les entrées de journaux enregistrent des données d'erreur.
Pour résoudre ce problème, procédez comme suit :
Vérifiez qu'Error Reporting peut analyser vos entrées de journaux.
Error Reporting est un service mondial basé sur Cloud Logging. Il peut analyser les entrées de journaux lorsque toutes les conditions suivantes sont remplies :
- Les charges de travail Assured Workloads sont désactivées. Pour en savoir plus, consultez la présentation d'Assured Workloads.
- Les clés de chiffrement gérées par le client (CMEK) sont désactivées sur tous les buckets de journaux qui stockent l'entrée de journal. Error Reporting ne peut pas stocker les entrées de journaux dans des buckets de journaux pour lesquels CMEK est activé. Pour savoir comment déterminer la configuration CMEK d'un bucket de journaux, consultez Vérifier l'activation des clés.
- Le bucket de journaux remplit l'une des conditions suivantes :
- Le bucket de journaux est stocké dans le même projet que celui d'où proviennent les entrées de journal.
- Les entrées de journal ont été acheminées vers un projet, puis ce projet les a stockées dans un bucket de journaux dont il est propriétaire.
Pour afficher la liste des récepteurs que vous avez configurés, exécutez la commande suivante :
gcloud logging sinks listLa commande renvoie un résultat semblable à celui-ci :
NAME DESTINATION FILTER _Default logging.googleapis.com/projects/my-team-project/locations/global/buckets/_Default NOT LOG_ID("cloudaudit.googleapis.com/activity") AND NOT LOG_ID("externalaudit.googleapis.com/activity") AND NOT LOG_ID("cloudaudit.googleapis.com/system_event") AND NOT LOG_ID("externalaudit.googleapis.com/system_event") AND NOT LOG_ID("cloudaudit.googleapis.com/access_transparency") AND NOT LOG_ID("externalaudit.googleapis.com/access_transparency") _Required logging.googleapis.com/projects/my-team-project/locations/global/buckets/_Required LOG_ID("cloudaudit.googleapis.com/activity") OR LOG_ID("externalaudit.googleapis.com/activity") OR LOG_ID("cloudaudit.googleapis.com/system_event") OR LOG_ID("externalaudit.googleapis.com/system_event") OR LOG_ID("cloudaudit.googleapis.com/access_transparency") OR LOG_ID("externalaudit.googleapis.com/access_transparency") logs-from-samples logging.googleapis.com/projects/my-team-project/locations/global/buckets/sample-bucket (empty filter) regional_logs logging.googleapis.com/projects/my-team-project/locations/europe-west1/buckets/bucket_for_regional_logs (empty filter) test-logs logging.googleapis.com/projects/team-b-project/locations/global/buckets/test-bucket (empty filter)Dans cet exemple, le projet source Google Cloud des entrées de journal est
my-team-project. En conséquence :- Error Reporting peut analyser les entrées de journaux acheminées par les récepteurs
_Default,_Requiredetlogs-from-samples, car le bucket de journaux est stocké par le même projet qui achemine les entrées de journaux. - Error Reporting ne peut pas analyser les entrées de journaux stockées dans le bucket de journaux nommé
test-logs, car le récepteur dansmy-team-projectachemine les entrées de journaux vers un bucket de journaux dans un autre projet.
Utilisez Google Cloud CLI pour vérifier que vous pouvez écrire des entrées de journal qui génèrent un événement d'erreur.
Exécutez la commande suivante :
gcloud logging write --payload-type=json test-errors-log \ '{"serviceContext": {"service": "manual-testing"}, "message": "Test Error\n at /test.js:42:42", "context": {"httpRequest": {"url": "/test","method": "GET","responseStatusCode": 500}}}'Accédez à la page "Explorateur de journaux" et recherchez
Test Errordans vos entrées de journal.Accéder à l'explorateur de journaux
Cette entrée de journal est générée par la gcloud CLI. Si l'entrée de journal n'est pas associée à un groupe d'erreurs, patientez environ une minute, puis actualisez la page. Les événements d'erreur sont détectés après l'ingestion d'une entrée de journal.
Accédez à la page Error Reporting et vérifiez qu'une erreur intitulée
Test Errors'affiche.
Accédez à la page "Explorateur de journaux" et vérifiez que votre application écrit des entrées de journal au format attendu.
Accéder à l'explorateur de journaux
Recherchez une entrée de journal contenant les données d'exceptions envoyées par votre application et vérifiez le format. Si le format n'est pas correct, mettez à jour votre application.
Une entrée de journal contient une trace de pile, mais aucun événement d'erreur n'est créé
Vous générez une entrée de journal dont le champ message contient une trace de pile.
Toutefois, la page Error Reporting ne répertorie aucun événement d'erreur correspondant.
Pour résoudre ce problème, procédez comme suit :
Assurez-vous que
jsonPayloadn'inclut pas de champstack_traceniexception. Lorsque ces champs sont présents, le champmessagen'est pas évalué.Assurez-vous que la structure de la trace de pile est dans l'un des formats de langage de programmation compatibles. La trace de pile n'est pas capturée par Error Reporting lorsqu'un format non compatible est utilisé.
Pour en savoir plus, consultez Mettre en forme une entrée de journal pour signaler des événements d'erreur.