Résoudre les problèmes

Si les erreurs détectées dans vos applications ne s'affichent pas dans Error Reporting, suivez la procédure ci-dessous pour corriger les problèmes.

Avant de commencer

  1. Vérifiez que les clés de chiffrement gérées par le client (CMEK) sont désactivées sur votre bucket de journaux.

    Lorsque les journaux sont protégés par une clé CMEK, ils ne sont pas mis à la disposition d'Error Reporting, et les groupes d'erreurs ne peuvent donc pas être identifiés. Error Reporting n'est disponible pour aucun des journaux suivants:

    • Journaux stockés dans un bucket de journaux où les CMEK sont activées
    • Les journaux stockés dans plusieurs buckets de journaux dans lesquels au moins un bucket de journaux est activé pour les CMEK.
    • Journaux stockés dans n'importe quel bucket de journaux d'une organisation, lorsqu'une stratégie au niveau de l'organisation nécessite l'activation des CMEK.

    Pour savoir comment déterminer la configuration CMEK d'un bucket de journaux, consultez Vérifier l'activation des clés.

  2. Vérifiez qu'Error Reporting peut analyser vos journaux.

    Error Reporting ne peut analyser que les entrées de journal stockées dans des buckets Cloud Logging situés dans la région global, où les projets Google Cloud source et de destination sont identiques.

    Pour savoir si Error Reporting peut analyser vos journaux, vérifiez que vous les stockez dans des buckets de la région global, où les projets Google Cloud source et de destination sont identiques.

    Pour afficher la liste des récepteurs que vous avez configurés, exécutez la commande suivante:

    gcloud logging sinks list
    

    La 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 Google Cloud source des journaux est my-team-project. En conséquence :

    • Error Reporting peut analyser les journaux acheminés par les récepteurs _Default, _Required et logs-from-samples, car ils acheminent les journaux vers des buckets situés dans la région global au sein du même projet.
    • Error Reporting peut analyser les journaux acheminés par des récepteurs de projet vers des projets différents de ceux du projet source. Par conséquent, Error Reporting peut également analyser les journaux acheminés par le récepteur test-logs, qui les achemine vers le projet team-b-project.
    • Error Reporting ne peut pas analyser les journaux acheminés par le récepteur regional_logs, car il les achemine vers un bucket régional de la région europe-west1.
  3. Assurez-vous que la Google Cloud CLI est installée.

  4. Assurez-vous que le composant beta est activé pour la gcloud CLI.

Utilisation des journaux

Cette section fournit une assistance au dépannage lorsque vos données d'erreur sont écrites dans des buckets Cloud Logging et que vous utilisez Error Reporting pour analyser automatiquement ces buckets de journaux.

Générer un exemple d'entrée de journal

Pour confirmer les paramètres de votre projet, vous pouvez générer une entrée de journal de manière automatisée. Celle-ci sera récupérée par Error Reporting à l'aide de la commande gcloud 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}}}'

Ouvrez ensuite Error Reporting, puis vérifiez que vous voyez l'erreur tout juste créée.

Confirmer le format d'entrée de journal

Accédez à la page Cloud Logging, puis recherchez une entrée de journal contenant les données d'exceptions envoyées par votre application.

Vérifiez que l'entrée de journal utilise le format attendu.

Utilisation de l'API Error Reporting

Activer l'API

Dans le panneau de navigation de la console Google Cloud, sélectionnez API et services, cliquez sur Activer les API et les services, puis activez l'API Error Reporting:

Accéder aux paramètres de l'API Error Reporting

Envoyer une erreur de test

Essayez d'envoyer manuellement une erreur au service.

Vous pouvez signaler une erreur de test à Error Reporting à l'aide de la commande gcloud 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)"

Vous pouvez exécuter une commande cURL pour tester vos appels d'API REST. Remplacez PROJECT_ID et API_KEY par des valeurs valides avant d'envoyer la commande suivante :

curl -X POST -H "Content-Type: application/json" \
  -d '{"message":"java.lang.TestError: msg\n\tat com.example.TestClass.test(TestClass.java:51)\n\tat com.example.AnotherClass(AnotherClass.java:25)","serviceContext":{"service":"manual-testing"}}' \
  https://clouderrorreporting.googleapis.com/v1beta1/projects/PROJECT_ID/events:report?key=API_KEY

Confirmer la charge utile envoyée

Assurez-vous que votre application transmet à l'API les données relatives aux exceptions dans le format approprié, et que ces données contiennent les attributs requis.