Mit diesen Schritten zur Fehlerbehebung können Sie Probleme mit Error Reporting diagnostizieren und beheben, wenn erwartete Fehlerereignisse nicht in der Console oder API angezeigt werden.
Error Reporting erfasst Fehler auf zwei Arten: durch direkte Aufrufe der Error Reporting API und durch die automatische Analyse von Logeinträgen, die von Cloud Logging aufgenommen werden. In den folgenden Abschnitten erfahren Sie, wie Sie prüfen, ob Ihre API-Aufrufe richtig formatiert sind, Ihre Logs in unterstützte Buckets weitergeleitet werden und Ihre Ausnahme-Payloads den unterstützten Sprachstrukturen entsprechen.
An die Error Reporting API gesendete Fehlerereignisse werden nicht angezeigt
Sie senden Fehlerereignisse an Ihr Google Cloud -Projekt über die Error Reporting API. Diese Ereignisse werden jedoch nicht auf der Seite Error Reporting angezeigt.
So beheben Sie das Problem:
Prüfen Sie, ob die Error Reporting API aktiviert ist.
Aktivieren Sie die Error Reporting API, falls sie noch nicht aktiviert ist.
Rollen, die zum Aktivieren von APIs erforderlich sind
Zum Aktivieren von APIs benötigen Sie die Berechtigung
serviceusage.services.enable. Wenn Sie das Projekt erstellt haben, haben Sie diese Berechtigung wahrscheinlich bereits über die Rolle „Inhaber“ (roles/owner). Andernfalls können Sie diese Berechtigung über die Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin) erhalten. Informationen zum Zuweisen von RollenÖffnen Sie Cloud Shell und prüfen Sie mit der Google Cloud CLI, ob Sie Fehlerereignisse an Ihr Projekt senden können:
Führen Sie dazu diesen Befehl aus:
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)"Rufen Sie die Seite Error Reporting auf und prüfen Sie, ob dort ein Fehler mit dem Titel
TestError: msgangezeigt wird.Rufen Sie die Seite „Log-Explorer“ auf und suchen Sie in Ihren Logeinträgen nach
TestError. Der Logeintrag wird automatisch erstellt.
Prüfen Sie, ob Ihre Anwendung das Fehlerereignis an den
report-Endpunkt sendet, ob der Anfragetext alsReportedErrorEvent-Objekt formatiert wird und ob Logeinträge erstellt werden. Wenn Sie die Error Reporting API verwenden, werden Logeinträge mit korrekt formatierten Fehlermeldungen automatisch generiert und in Cloud Logging geschrieben. Diese Logeinträge werden in ein Log geschrieben, dessenlogNameso formatiert ist:projects/PROJECT_ID/clouderrorreporting.googleapis.com%2Freported_errors
Fehlerereignisse werden angezeigt, die Error Reporting API ist jedoch deaktiviert
Sie haben die Error Reporting API deaktiviert. Auf der Seite Error Reporting der Google Cloud -Konsole werden jedoch Fehlerereignisse angezeigt.
Das ist ganz normal. Fehlerereignisse werden als Reaktion auf Error Reporting API-Aufrufe an den report-Endpunkt erstellt.
Fehlerereignisse werden jedoch auch abgeleitet, wenn Error Reporting Ihre Protokolldaten analysieren kann.
Fehlerereignisse werden nicht aus Protokolldaten abgeleitet
Sie erwarten, dass Error Reporting Ihre Protokolldaten scannt und Fehlerereignisse ableitet. Auf der Seite Error Reporting werden jedoch keine Fehlerereignisse angezeigt, obwohl in den Logeinträgen Fehlerdaten aufgezeichnet werden.
So beheben Sie das Problem:
Prüfen Sie, ob Error Reporting Ihre Logeinträge analysieren kann.
Error Reporting ist ein globaler Dienst, der auf Cloud Logging basiert. Logeinträge können analysiert werden, wenn alle der folgenden Bedingungen erfüllt sind:
- Assured Workloads ist deaktiviert. Weitere Informationen finden Sie unter Übersicht über Assured Workloads.
- Kundenverwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) sind für alle Log-Buckets deaktiviert, in denen der Logeintrag gespeichert wird. Error Reporting kann keine Logeinträge in Log-Buckets mit aktiviertem CMEK speichern. Informationen dazu, wie Sie die CMEK-Konfiguration für einen Log-Bucket ermitteln, finden Sie unter Schlüsselaktivierung prüfen.
- Der Log-Bucket erfüllt eine der folgenden Bedingungen:
- Der Log-Bucket wird im selben Projekt gespeichert, aus dem die Logeinträge stammen.
- Die Logeinträge wurden an ein Projekt weitergeleitet und dieses Projekt hat die Logeinträge dann in einem eigenen Log-Bucket gespeichert.
Führen Sie den folgenden Befehl aus, um eine Liste der konfigurierten Senken aufzurufen:
gcloud logging sinks listDie 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 Logeinträge
my-team-project. Deshalb gilt Folgendes:- Error Reporting kann die von den Senken
_Default,_Requiredundlogs-from-samplesweitergeleiteten Logeinträge analysieren, da der Log-Bucket im selben Projekt gespeichert ist, das die Logeinträge weiterleitet. - Error Reporting kann die im Log-Bucket
test-logsgespeicherten Logeinträge nicht analysieren, da die Senke inmy-team-projectdie Logeinträge an einen Log-Bucket in einem anderen Projekt weiterleitet.
Mit der Google Cloud CLI können Sie prüfen, ob Sie Logeinträge schreiben können, die ein Fehlerereignis generieren.
Führen Sie dazu diesen Befehl aus:
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}}}'Rufen Sie die Seite „Log-Explorer“ auf und suchen Sie in Ihren Logeinträgen nach
Test Error.Dieser Logeintrag wird von der gcloud CLI generiert. Wenn der Logeintrag nicht mit einer Fehlergruppe verknüpft ist, warten Sie etwa eine Minute und aktualisieren Sie die Seite. Fehlerereignisse werden erkannt, nachdem ein Logeintrag aufgenommen wurde.
Rufen Sie die Seite Error Reporting auf und prüfen Sie, ob dort ein Fehler mit dem Titel
Test Errorangezeigt wird.
Rufen Sie die Seite „Log-Explorer“ auf und prüfen Sie, ob Ihre Anwendung Logeinträge im erwarteten Format schreibt.
Suchen Sie nach einem Logeintrag, der von Ihrer Anwendung gesendete Ausnahmedaten enthält, und prüfen Sie das Format. Wenn das Format nicht korrekt ist, müssen Sie Ihre Anwendung aktualisieren.
Ein Logeintrag enthält einen Stacktrace, aber es wird kein Fehlerereignis erstellt
Sie generieren einen Logeintrag, dessen Feld message einen Stacktrace enthält.
Auf der Seite Error Reporting ist jedoch kein entsprechendes Fehlerereignis aufgeführt.
Versuchen Sie Folgendes, um diesen Fehler zu beheben:
Achten Sie darauf, dass
jsonPayloadkein Feldstack_traceoderexceptionenthält. Wenn diese Felder vorhanden sind, wird das Feldmessagenicht ausgewertet.Achten Sie darauf, dass die Struktur des Stacktrace einem der unterstützten Programmiersprachenformate entspricht. Der Stacktrace wird von Error Reporting nicht erfasst, wenn ein nicht unterstütztes Format verwendet wird.
Weitere Informationen finden Sie unter Logeintrag zum Melden von Fehlerereignissen formatieren.