Dokumen ini menjelaskan skenario pemecahan masalah umum untuk Pelaporan Error.
Peristiwa error yang dikirim ke Error Reporting API tidak ditampilkan
Anda mengirim peristiwa error ke project Google Cloud menggunakan Error Reporting API. Namun, peristiwa tersebut tidak ditampilkan di halaman Pelaporan Error.
Untuk mengatasi masalah ini, lakukan langkah berikut:
Pastikan Error Reporting API diaktifkan.
Enable the required API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.Buka Cloud Shell dan gunakan Google Cloud CLI untuk memverifikasi bahwa Anda dapat mengirim peristiwa error ke project Anda:
Jalankan perintah 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)"Buka halaman Pelaporan Error dan pastikan halaman menampilkan error berjudul
TestError: msg.Buka halaman Logs Explorer dan telusuri entri log Anda untuk
TestError. Entri log dibuat secara otomatis.
Pastikan aplikasi Anda mengirimkan peristiwa error ke endpoint
report, dan aplikasi memformat isi permintaan sebagai objekReportedErrorEvent. Anda juga harus memverifikasi bahwa entri log sedang dibuat. Saat Anda menggunakan Error Reporting API, entri log dengan pesan error yang diformat dengan benar akan otomatis dibuat dan ditulis ke Cloud Logging. Entri log ini ditulis ke log yanglogName-nya diformat sebagai berikut:projects/PROJECT_ID/clouderrorreporting.googleapis.com%2Freported_errors
Peristiwa error ditampilkan, tetapi Error Reporting API dinonaktifkan
Anda menonaktifkan Error Reporting API. Namun, halaman Error Reporting di konsol Google Cloud menampilkan peristiwa error.
Ini adalah perilaku yang diharapkan. Peristiwa error dibuat sebagai respons terhadap panggilan Error Reporting API yang dilakukan ke endpoint report.
Namun, peristiwa error juga disimpulkan saat Error Reporting dapat menganalisis data log Anda.
Peristiwa error tidak disimpulkan dari data log
Anda mengharapkan Error Reporting memindai data log dan menyimpulkan peristiwa error. Namun, halaman Pelaporan Error tidak menampilkan peristiwa error apa pun meskipun entri log mencatat data error.
Untuk mengatasi situasi ini, lakukan hal berikut:
Pastikan Error Reporting dapat menganalisis entri log Anda.
Error Reporting adalah layanan global yang dibangun di atas Cloud Logging dan dapat menganalisis entri log jika semua hal berikut benar:
- Assured Workloads dinonaktifkan. Untuk mengetahui informasi selengkapnya, lihat Ringkasan Assured Workloads.
- Kunci enkripsi yang dikelola pelanggan (CMEK) dinonaktifkan di semua bucket log yang menyimpan entri log. Error Reporting tidak dapat menyimpan entri log di bucket log yang mengaktifkan CMEK. 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 dalam project yang sama dengan tempat entri log berasal.
- Entri log diarahkan ke project, lalu project tersebut menyimpan entri log tersebut dalam bucket log yang dimilikinya.
Untuk melihat daftar sink yang telah Anda konfigurasi, jalankan perintah berikut:
gcloud logging sinks listPerintah ini akan 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, danlogs-from-sampleskarena 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-logskarena sink dimy-team-projectmerutekan entri log ke bucket log di project lain.
Gunakan Google Cloud CLI untuk memverifikasi bahwa Anda dapat menulis entri log yang menghasilkan peristiwa error.
Jalankan perintah 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}}}'Buka halaman Logs Explorer dan telusuri entri log Anda untuk
Test Error.Entri log ini dibuat oleh gcloud CLI. Jika entri log tidak ditautkan dengan grup error, tunggu sekitar satu menit, lalu muat ulang halaman. Peristiwa error terdeteksi setelah entri log diproses.
Buka halaman Error Reporting dan pastikan halaman tersebut menampilkan error berjudul
Test Error.
Buka halaman Logs Explorer dan pastikan aplikasi Anda menulis entri log yang memiliki format yang diharapkan.
Temukan entri log yang berisi data pengecualian yang dikirim dari aplikasi Anda dan verifikasi formatnya. Jika formatnya tidak benar, perbarui aplikasi Anda.
Entri log berisi pelacakan tumpukan, tetapi tidak ada peristiwa error yang dibuat
Anda membuat entri log yang kolom message-nya berisi stack trace.
Namun, halaman Error Reporting tidak mencantumkan peristiwa error yang sesuai.
Untuk mengatasi kegagalan ini, coba langkah-langkah berikut:
Pastikan
jsonPayloadtidak menyertakan kolomstack_traceatauexception. Jika kolom tersebut ada, kolommessagetidak dievaluasi.Pastikan struktur rekaman aktivitas panggilan dalam salah satu format bahasa pemrograman yang didukung. Stack trace tidak direkam oleh Error Reporting saat format yang tidak didukung digunakan.
Untuk mengetahui informasi selengkapnya, lihat Memformat entri log untuk melaporkan peristiwa error.