Memecahkan masalah

Jika error aplikasi Anda tidak muncul di Error Reporting, ikuti langkah-langkah di bawah ini untuk memecahkan masalah.

Sebelum memulai

  1. Pastikan Error Reporting dapat menganalisis log Anda.

    Error Reporting adalah layanan global yang dibangun di Cloud Logging dan dapat menganalisis entri log saat semua hal berikut berlaku:

    • Entri log disimpan dalam bucket log di lokasi global.
    • Kunci enkripsi yang dikelola pelanggan (Customer-Managed Encryption Key/CMEK) dinonaktifkan di bucket log. Untuk mengetahui informasi cara menentukan konfigurasi CMEK untuk bucket log, lihat Memverifikasi pengaktifan kunci.
    • Bucket log memenuhi salah satu dari hal berikut:
      • Bucket log disimpan dalam project yang sama tempat log berasal.
      • Log dirutekan ke project, lalu project tersebut menyimpan log tersebut dalam bucket log yang dimilikinya.

    Untuk melihat apakah Error Reporting dapat menganalisis log, pastikan Anda menyimpan log di bucket di region global dengan sumber dan project Google Cloud tujuan yang sama.

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

    gcloud logging sinks list
    

    Perintah tersebut 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 log adalah my-team-project. Sebagai hasilnya:

    • Error Reporting dapat menganalisis log yang dirutekan oleh sink _Default, _Required, dan logs-from-samples karena keduanya merutekan log ke bucket yang berada di region global dalam project yang sama.
    • Error Reporting tidak dapat menganalisis log yang disimpan di bucket log bernama test-logs karena sink di my-team-project merutekan log ke bucket log dalam project yang berbeda.
    • Error Reporting tidak dapat menganalisis log yang dirutekan oleh sink regional_logs karena metode tersebut merutekan log ke bucket regional di region europe-west1.
  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 Error Reporting untuk menganalisis bucket log tersebut secara otomatis.

Membuat contoh entri log

Untuk mengonfirmasi setelan project, Anda dapat secara terprogram membuat entri log yang akan diambil oleh Error Reporting 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 pastikan 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

Mengaktifkan API

Pada panel navigasi konsol Google Cloud, pilih APIs & Services, klik Enable APIs and Services, lalu aktifkan Error Reporting API:

Buka setelan Error Reporting API

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

Konfirmasi payload yang dikirim

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