Fehler beheben

In diesem Dokument werden häufige Szenarien zur Fehlerbehebung für Error Reporting beschrieben.

An die Error Reporting API gesendete Fehlerereignisse werden nicht angezeigt

Sie senden Fehlerereignisse an Ihr Google Cloud Projekt mit der Error Reporting API. Diese Ereignisse werden jedoch nicht auf der Seite Error Reporting angezeigt.

So beheben Sie das Problem:

  1. Prüfen Sie, ob die Error Reporting API aktiviert ist.

    Error Reporting API aktivieren

    Rollen, die zum Aktivieren von APIs erforderlich sind

    Zum Aktivieren von APIs benötigen Sie die IAM-Rolle „Service Usage-Administrator“ (roles/serviceusage.serviceUsageAdmin), die die Berechtigung serviceusage.services.enable enthält. Informationen zum Zuweisen von Rollen.

    API aktivieren

  2. Öffnen Sie die Cloud Shell und prüfen Sie mit der Google Cloud CLI, ob Sie Fehlerereignisse an Ihr Projekt senden können:

    1. 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)"
      
    2. Rufen Sie die Seite Error Reporting auf und prüfen Sie, ob dort ein Fehler mit dem Titel TestError: msg angezeigt wird.

      **Error Reporting** aufrufen

    3. Rufen Sie die Seite „Log-Explorer“ auf und suchen Sie in Ihren Logeinträgen nach TestError. Der Logeintrag wird automatisch erstellt.

      Log-Explorer aufrufen

  3. Prüfen Sie, ob Ihre Anwendung das Fehlerereignis an den report Endpunkt sendet und ob die Anwendung den Anfragetext als ReportedErrorEvent Objekt formatiert. Prüfen Sie außerdem, ob Logeinträge erstellt werden. Wenn Sie die Error Reporting API verwenden, werden Logeinträge mit korrekt formatierten Fehlermeldungen automatisch generiert und in Cloud Logginggeschrieben. Diese Logeinträge werden in ein Log geschrieben, dessen logName so 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 Console 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 Logdaten analysieren kann.

Fehlerereignisse werden nicht aus Logdaten abgeleitet

Sie erwarten, dass Error Reporting Ihre Logdaten scannt und Fehlerereignisse ableitet. Auf der Seite Error Reporting werden jedoch keine Fehlerereignisse angezeigt, obwohl in den Logeinträgen Fehlerdaten erfasst werden.

Versuchen Sie Folgendes, um dieses Problem zu beheben:

  1. Prüfen Sie, ob Error Reporting Ihre Logeinträge analysieren kann.

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

    • Assured Workloads ist deaktiviert. Weitere Informationen finden Sie unter Übersicht über Assured Workloads.
    • Vom Kunden verwaltete Verschlüsselungsschlüssel (Customer-Managed Encryption Keys, CMEK) sind für alle Log-Buckets deaktiviert, in denen der Logeintrag gespeichert ist. Error Reporting kann Logeinträge nicht in Log-Buckets speichern, für die CMEK aktiviert ist. Informationen zum Bestimmen der CMEK-Konfiguration für einen Log-Bucket 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 sie dann in einem eigenen Log-Bucket gespeichert.

    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 ist das Quell Google Cloud projekt der Logeinträge my-team-project. Deshalb gilt Folgendes:

    • Error Reporting kann die Logeinträge analysieren, die von den Senken _Default, _Required und logs-from-samples weitergeleitet werden, da der Log-Bucket vom selben Projekt gespeichert wird, das die Logeinträge weiterleitet.
    • Error Reporting kann die Logeinträge, die im Log-Bucket test-logs gespeichert sind, nicht analysieren, da die Senke in my-team-project die Logeinträge an einen Log-Bucket in einem anderen Projekt weiterleitet.
  2. Prüfen Sie mit der Google Cloud CLI, ob Sie Logeinträge schreiben können, die ein Fehlerereignis generieren.

    1. 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}}}'
      
    2. Rufen Sie die Seite „Log-Explorer“ auf und suchen Sie in Ihren Logeinträgen nach Test Error.

      Log-Explorer aufrufen

      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.

    3. Rufen Sie die Seite Error Reporting auf und prüfen Sie, ob dort ein Fehler mit dem Titel Test Error angezeigt wird.

      **Error Reporting** aufrufen

  3. Rufen Sie die Seite „Log-Explorer“ auf und prüfen Sie, ob Ihre Anwendung Logeinträge im erwarteten Formatschreibt.

    Log-Explorer aufrufen

    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, aktualisieren Sie Ihre Anwendung.

Ein Logeintrag enthält einen Stacktrace, es wird jedoch kein Fehlerereignis erstellt

Sie generieren einen Logeintrag, dessen Feld message einen Stacktrace enthält. Auf der Seite Error Reporting wird jedoch kein entsprechendes Fehlerereignis aufgeführt.

Versuchen Sie Folgendes, um dieses Problem zu beheben:

  • Prüfen Sie, ob jsonPayload kein Feld stack_trace oder exception enthält. Wenn diese Felder vorhanden sind, wird das Feld message nicht ausgewertet.

  • Prüfen Sie, ob die Struktur des Stacktrace in einem der unterstützten Formate für Programmiersprachen vorliegt. 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.