Wenn Ihre Anwendungsfehler nicht in Error Reporting angezeigt werden, führen Sie die folgenden Schritte zur Fehlerbehebung aus.
Hinweise
Prüfen, ob Error Reporting Ihre Logs analysieren kann
Error Reporting ist ein globaler Dienst, der auf Cloud Logging basiert und Logeinträge analysieren kann, wenn Folgendes zutrifft:
- Die Logeinträge werden in einem Log-Bucket am Standort
global
gespeichert. - Vom Kunden verwaltete Verschlüsselungsschlüssel (CMEKs) sind für den Log-Bucket deaktiviert. Informationen zum Ermitteln der CMEK-Konfiguration für einen Log-Bucket finden Sie unter Schlüsselaktivierung überprüfen.
- Der Log-Bucket erfüllt eine der folgenden Anforderungen:
- Der Log-Bucket wird in dem Projekt gespeichert, aus dem die Logs stammen.
- Die Logs wurden an ein Projekt weitergeleitet, das dann von diesem Projekt in einem eigenen Log-Bucket gespeichert wurde.
Wenn Sie wissen möchten, ob Error Reporting Ihre Logs analysieren kann, müssen Sie Ihre Logs in Buckets in der Region
global
speichern, in der die Quell- und Zielprojekte von Google Cloud identisch sind.Führen Sie den folgenden Befehl aus, um eine Liste der von Ihnen konfigurierten Senken aufzurufen:
gcloud logging sinks list
Die Ausgabe des Befehls sieht in etwa so aus:
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)
In diesem Beispiel lautet das Google Cloud-Quellprojekt der Logs
my-team-project
. Deshalb gilt Folgendes:- Error Reporting kann die von den Senken
_Default
,_Required
undlogs-from-samples
weitergeleiteten Logs analysieren, da sie Logs an Buckets in der Regionglobal
innerhalb desselben Projekts weiterleiten. - Error Reporting kann die im Log-Bucket mit dem Namen
test-logs
gespeicherten Logs nicht analysieren, da die Senke inmy-team-project
die Logs an einen Log-Bucket in einem anderen Projekt weiterleitet. - Error Reporting kann keine Logs analysieren, die von der Senke
regional_logs
weitergeleitet wurden, da Logs an einen regionalen Bucket in der Regioneurope-west1
weitergeleitet werden.
- Die Logeinträge werden in einem Log-Bucket am Standort
Achten Sie darauf, dass die Komponente
beta
für die gcloud CLI aktiviert ist.
Beim Verwenden von Logs
Dieser Abschnitt unterstützt Sie bei der Fehlerbehebung, wenn Ihre Fehlerdaten in Cloud Logging-Buckets geschrieben werden. Sie sind auf Error Reporting angewiesen, um diese Log-Buckets automatisch zu analysieren.
Beispiel-Logeintrag generieren
Zur Bestätigung Ihrer Projekteinstellungen können Sie programmatisch einen Logeintrag generieren, der von Error Reporting mit dem folgenden gcloud
-Befehl erfasst wird:
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}}}'
Öffnen Sie dann Error Reporting und bestätigen Sie, dass der gerade erstellte Fehler angezeigt wird.
Format des Logeintrags bestätigen
Rufen Sie die Cloud Logging-Seite auf und suchen Sie nach einem Logeintrag, der von Ihrer Anwendung gesendete Ausnahmedaten enthält.
Vergewissern Sie sich, dass der Log-Eintrag dem erwarteten Format entspricht.
Beim Verwenden der Error Reporting-API
-
Aktivieren Sie die erforderliche API.
Testfehler senden
Versuchen Sie, manuell einen Fehler an den Dienst zu senden.
Sie können einen Testfehler an Error Reporting mithilfe des folgenden
gcloud
-Befehls melden: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)"
Sie können einen cURL-Befehl verwenden, um Ihre REST API-Aufrufe zu testen. Ersetzen Sie
PROJECT_ID
undAPI_KEY
mit Ihren gültigen Werten, bevor Sie den folgenden Befehl senden: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
Gesendete Nutzlast bestätigen
Achten Sie darauf, dass Ihre Anwendung Ausnahmedaten im richtigen Format an die API sendet und dass sie die erforderlichen Attribute enthalten.