Fehlerbehebung

Falls Ihre Anwendungsfehler nicht in Error Reporting angezeigt werden, gehen Sie zur Fehlerbehebung wie unten beschrieben vor.

Hinweise

  1. Prüfen Sie, ob Error Reporting Ihre Logs analysieren kann.

    Error Reporting ist ein globaler Dienst, der auf Cloud Logging basiert und Logeinträge analysieren kann, wenn alle folgenden Bedingungen erfüllt sind:

    • Die Logeinträge werden in einem Log-Bucket am Standort global gespeichert.
    • Vom Kunden verwaltete Verschlüsselungsschlüssel (CMEK) sind für den Log-Bucket deaktiviert. Informationen zum Ermitteln der CMEK-Konfiguration für einen Log-Bucket finden Sie unter Schlüsselaktivierung prüfen.
    • Der Log-Bucket erfüllt eines der folgenden Kriterien:
      • Der Log-Bucket wird in dem Projekt gespeichert, aus dem die Logs stammen.
      • Die Logs wurden an ein Projekt weitergeleitet, das dann in einem eigenen Log-Bucket gespeichert wurde.

    Wenn Sie herausfinden möchten, ob Error Reporting Ihre Logs analysieren kann, müssen Sie die 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
    

    Der Befehl gibt eine Ausgabe wie diese zurück:

    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 Logs analysieren, die von den Senken _Default, _Required und logs-from-samples weitergeleitet werden, da sie Logs an Buckets weiterleiten, die sich in der Region global innerhalb desselben Projekts befinden.
    • Error Reporting kann die im Log-Bucket namens test-logs gespeicherten Logs nicht analysieren, da die Senke in my-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 werden, da sie Logs an einen regionalen Bucket in der Region europe-west1 weiterleitet.
  2. Prüfen Sie, ob die Google Cloud CLI installiert ist.

  3. Prüfen Sie, ob die Komponente beta für die gcloud CLI aktiviert ist.

Beim Verwenden von Logs

Dieser Abschnitt bietet Unterstützung bei der Fehlerbehebung, wenn Ihre Fehlerdaten in Cloud Logging-Buckets geschrieben werden. Error Reporting zum automatischen Analysieren dieser Log-Buckets.

Beispiel-Logeintrag generieren

Um Ihre Projekteinstellungen zu bestätigen, 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

API aktivieren

Wählen Sie im Navigationsbereich der Google Cloud Console APIs und Dienste aus, klicken Sie auf APIs und Dienste aktivieren und aktivieren Sie dann die Error Reporting API:

Zu den Einstellungen für die Error Reporting 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 und API_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 diese die erforderlichen Attribute enthalten.