Memecahkan masalah

Jika error aplikasi Anda tidak muncul di Pelaporan Error, gunakan langkah-langkah berikut untuk memecahkan masalah.

Sebelum memulai

  1. Pastikan Error Reporting dapat menganalisis entri log Anda.

    Error Reporting adalah layanan global yang dibuat di Cloud Logging dan dapat menganalisis entri log jika semua hal berikut terpenuhi:

    • Assured workloads dinonaktifkan. Untuk informasi selengkapnya, lihat Ringkasan Assured Workloads.
    • Kunci enkripsi yang dikelola pelanggan (CMEK) dinonaktifkan di semua bucket log yang menyimpan entri log. Untuk mengetahui informasi tentang cara menentukan konfigurasi CMEK untuk bucket log, lihat Memverifikasi pengaktifan kunci.
    • Bucket log memenuhi salah satu hal berikut:
      • Bucket log disimpan di project yang sama dengan tempat entri log berasal.
      • Entri log dirutekan ke project, lalu project tersebut menyimpan entri log tersebut dalam bucket log yang dimilikinya.
    Jika menyimpan entri log di bucket log dengan CMEK diaktifkan, Anda masih dapat menggunakan Pelaporan Error. Namun, Anda harus menggunakan library klien Error Reporting atau Error Reporting API. Untuk informasi selengkapnya, lihat ringkasan Error Reporting API dan library klien Error Reporting.

    Untuk melihat daftar sink yang telah Anda konfigurasi, jalankan perintah berikut:

    gcloud logging sinks list
    

    Perintah ini menampilkan output yang mirip dengan berikut ini:

    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)
    

    Dalam contoh ini, project Google Cloud sumber entri log adalah my-team-project. Sebagai hasilnya:

    • Error Reporting dapat menganalisis entri log yang dirutekan oleh sink _Default, _Required, dan logs-from-samples karena bucket log disimpan oleh project yang sama yang merutekan entri log.
    • Pelaporan Error tidak dapat menganalisis entri log yang disimpan di bucket log bernama test-logs karena sink di my-team-project merutekan entri log ke bucket log di project lain.
  2. Pastikan Anda telah menginstal Google Cloud CLI.

  3. Pastikan Anda telah mengaktifkan komponen beta untuk gcloud CLI.

Saat menggunakan log

Bagian ini memberikan dukungan pemecahan masalah saat data error Anda ditulis ke bucket Cloud Logging, dan Anda mengandalkan Pelaporan Error untuk menganalisis bucket log tersebut secara otomatis.

Membuat contoh entri log

Untuk mengonfirmasi setelan project, Anda dapat membuat entri log secara terprogram yang akan diambil oleh Pelaporan Error dengan perintah gcloud berikut:

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}}}'

Kemudian, buka Error Reporting dan konfirmasi bahwa Anda melihat error yang baru dibuat.

Konfirmasi format entri log

Buka halaman Cloud Logging dan temukan entri log yang berisi data pengecualian yang dikirim dari aplikasi Anda.

Pastikan entri log menggunakan format yang diharapkan.

Saat menggunakan Error Reporting API

  1. Enable the required API.

    Enable the API

  2. Mengirim error pengujian

    Coba kirim error ke layanan secara manual.

    Anda dapat melaporkan error pengujian ke Error Reporting menggunakan perintah gcloud berikut:

    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)"
    

    Anda dapat menggunakan perintah cURL untuk menguji panggilan REST API. Ganti PROJECT_ID dan API_KEY dengan nilai yang valid sebelum mengirim perintah berikut:

    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. Mengonfirmasi payload yang dikirim

    Pastikan aplikasi Anda mengirim data pengecualian ke API dalam format yang benar dan berisi atribut yang diperlukan.

Pelacakan tumpukan dicatat ke dalam log, tetapi tidak dikenali oleh Pelaporan Error

Anda mencatat error ke dalam log menggunakan kolom message dari jsonPayload, dan Anda mengharapkan Error Reporting untuk merekam error tersebut. Namun, data error tidak diambil.

Untuk mengatasi kegagalan ini, coba langkah berikut:

  • Pastikan jsonPayload tidak menyertakan kolom stack_trace atau exception. Jika kolom tersebut ada, kolom message tidak akan dievaluasi.

  • Pastikan struktur pelacakan tumpukan berada dalam salah satu format bahasa pemrograman yang didukung. Stack trace tidak diambil oleh Error Reporting saat format yang tidak didukung digunakan.

Untuk mengetahui informasi selengkapnya, lihat Error format dalam log.