Jika error aplikasi Anda tidak muncul di Pelaporan Error, gunakan langkah-langkah berikut untuk memecahkan masalah.
Sebelum memulai
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.
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
, danlogs-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 dimy-team-project
merutekan entri log ke bucket log di project lain.
Pastikan Anda telah menginstal Google Cloud CLI.
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
-
Enable the required 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
danAPI_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
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 kolomstack_trace
atauexception
. Jika kolom tersebut ada, kolommessage
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.