Fehler beheben

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 Logeinträge analysieren kann.

    Error Reporting ist ein globaler Dienst, der auf Cloud Logging basiert. Logeinträge können analysiert werden, wenn alle folgenden Bedingungen erfüllt sind:

    • Assured Workloads sind deaktiviert. Weitere Informationen finden Sie unter Assured Workloads-Übersicht.
    • Vom Kunden verwaltete Verschlüsselungsschlüssel (CMEK) sind in allen Protokoll-Buckets deaktiviert, in denen der Protokolleintrag gespeichert wird. Informationen zum Ermitteln der CMEK-Konfiguration für einen Log-Bucket finden Sie unter Aktivierung von Schlüsseln prüfen.
    • Der Log-Bucket erfüllt eine der folgenden Bedingungen:
      • Der Log-Bucket wird im selben Projekt gespeichert, in dem die Logeinträge stammen.
      • Die Logeinträge wurden an ein Projekt weitergeleitet und dann in einem zugehörigen Log-Bucket gespeichert.
    Wenn Sie Ihre Protokolleinträge in Protokoll-Buckets mit aktivierter CMEK speichern, können Sie die Fehlerberichte weiterhin verwenden. Sie müssen jedoch die Clientbibliotheken für Error Reporting oder die Error Reporting API verwenden. Weitere Informationen finden Sie unter Error Reporting API – Übersicht und Error Reporting API – Clientbibliotheken.

    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 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 von demselben Projekt gespeichert wird, das die Logeinträge weiterleitet.
    • Error Reporting kann die im Log-Bucket test-logs gespeicherten Logeinträge 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, 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

In diesem Abschnitt finden Sie Informationen zur Fehlerbehebung, wenn Ihre Fehlerdaten in Cloud Logging-Buckets geschrieben werden und Sie Error Reporting verwenden, um diese Log-Buckets automatisch zu analysieren.

Beispiel-Logeintrag generieren

Wenn Sie Ihre Projekteinstellungen bestätigen möchten, können Sie einen Logeintrag programmatisch generieren, der von Error Reporting erfasst wird. Verwenden Sie dazu den folgenden gcloud-Befehl:

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

  1. Enable the required API.

    Enable the API

  2. 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
    
  3. 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.

Ein Stack-Trace wird protokolliert, aber von Error Reporting nicht erkannt

Sie protokollieren einen Fehler mithilfe des Felds message einer jsonPayload und erwarten, dass Error Reporting den Fehler erfasst. Die Fehlerdaten werden jedoch nicht erfasst.

So beheben Sie diesen Fehler:

  • Achten Sie darauf, dass die Datei jsonPayload kein Feld stack_trace oder exception enthält. Wenn diese Felder vorhanden sind, wird das Feld message nicht ausgewertet.

  • Die Struktur des Stack-Traces muss in einem der unterstützten Formate für Programmiersprachen vorliegen. Der Stack-Trace wird von Error Reporting nicht erfasst, wenn ein nicht unterstütztes Format verwendet wird.

Weitere Informationen finden Sie unter Formatfehler in Protokollen.