Halaman ini berisi penjelasan mengenai log yang tersedia saat menggunakan Cloud Run, serta bagaimana cara melihat dan menulis log.
Cloud Run memiliki beberapa jenis log yang dikirim secara otomatis ke Cloud Logging:
- Log permintaan (khusus layanan): log permintaan yang dikirim ke layanan Cloud Run. Log ini dibuat secara otomatis.
- Log container (semua resource): log yang dikeluarkan dari instance, biasanya dari kode Anda sendiri, yang ditulis ke lokasi yang didukung seperti yang dijelaskan dalam Menulis log container.
- Log sistem (semua resource): log yang dibuat platform yang berisi informasi tentang workload Anda. Log ini ditulis ke
varlog/system.
Melihat log
Anda dapat melihat log untuk resource Cloud Run dengan beberapa cara:
- Gunakan halaman Cloud Run di konsol Cloud de Confiance
- Menggunakan Cloud Logging
- Gunakan Google Cloud CLI untuk melihat log menggunakan gcloud (khusus layanan)
Kedua metode konsol tersebut memeriksa log yang sama yang disimpan di Cloud Logging. Namun, Cloud Logging, misalnya seperti Logs Explorer, menyediakan detail yang lebih lengkap dan kemampuan pemfilteran yang lebih baik.
Melihat log di Cloud Run
Anda dapat melihat log di halaman Cloud Run untuk resource berikut:
Layanan
Di konsol Cloud de Confiance by S3NS , buka halaman Services Cloud Run:
Klik layanan dalam daftar yang ditampilkan.
Klik tab Logs untuk mendapatkan log permintaan dan container untuk semua revisi layanan ini. Pemfilteran dapat dilakukan berdasarkan tingkat keparahan log.
Pekerjaan
Cara melihat log tugas di halaman Cloud Run:
Di konsol Cloud de Confiance by S3NS , buka halaman Tugas Cloud Run:
Temukan dan klik tugas yang ingin Anda lihat pada daftar tugas.
Klik tab Logs untuk mendapatkan log container untuk semua eksekusi tugas ini. Pemfilteran dapat dilakukan berdasarkan tingkat keparahan log.
Atau, jika Anda ingin melihat log yang sudah difilter untuk eksekusi tugas tertentu, klik eksekusi tugas, lalu klik tab Logs.
Format dan isi log penskalaan instance
Saat instance baru dimulai untuk layanan Cloud Run Anda, Cloud Logging
menyertakan entri log dengan nama log varlog/system yang menjelaskan alasan setiap
instance dibuat. Entri log mengikuti format ini:
Starting new instance. Reason: REASON - DESCRIPTION
Tabel berikut memberikan perincian deskripsi instance:
| Alasan | Deskripsi |
|---|---|
MANUAL_OR_CUSTOMER_MIN_INSTANCE |
Instance dimulai karena instance minimum atau penskalaan manual yang dikonfigurasi pelanggan. |
AUTOSCALING |
Instance dimulai karena faktor penskalaan yang dikonfigurasi (seperti pemanfaatan CPU, throughput permintaan, dan sebagainya) atau kapasitas yang ada tidak cukup untuk traffic saat ini. |
DEPLOYMENT_ROLLOUT |
Instance dimulai karena pengalihan traffic antar-revisi karena deployment, penyesuaian pembagian traffic, atau health check deployment. |
Menulis log container
Saat Anda menulis log dari layanan, tugas, atau kumpulan worker, log tersebut akan diambil secara otomatis oleh Cloud Logging. Hal ini berlaku selama log tersebut ditulis ke salah satu lokasi berikut:
- Aliran data output standar (
stdout) atau error standar (stderr) - Semua file yang ada dalam direktori
/var/log - syslog (
/dev/log) - Log yang tersedia dalam berbagai bahasa populer yang ditulis menggunakan library klien Cloud Logging
Sebagian besar developer diharapkan untuk menggunakan output standar dan error standar saat menulis log.
Log container yang ditulis ke lokasi yang didukung ini akan otomatis dikaitkan dengan layanan, revisi, dan lokasi Cloud Run, kumpulan pekerja, revisi, dan lokasi Cloud Run, atau dengan tugas Cloud Run. Pengecualian yang terdapat dalam log ini direkam dan dilaporkan dalam Error Reporting.
Logging terintegrasi menyeimbangkan keandalan dan penggunaan resource, serta akan berfungsi untuk sebagian besar aplikasi. Menulis entri log menggunakan logging terintegrasi tidak
menggunakan kuota untuk jumlah permintaan entries.write per menit dari
Cloud Logging API.
Jika aplikasi Anda memiliki persyaratan untuk volume atau keandalan yang lebih tinggi, sebaiknya gunakan Cloud Logging API secara langsung, baik sebagai library dalam aplikasi Anda atau sebagai container sidecar terpisah.
Menggunakan teks sederhana vs JSON terstruktur dalam log
Saat menulis log, Anda dapat mengirim string teks sederhana atau mengirim satu baris
JSON yang di-serialisasi. Teks ini juga disebut data "terstruktur". Teks string ini diambil dan
diurai oleh Cloud Logging dan ditempatkan ke jsonPayload. Sebaliknya,
pesan teks sederhana ditempatkan di textPayload.
Menulis log terstruktur
Cuplikan berikut menunjukkan bagaimana cara menulis entri log yang terstruktur. Cuplikan ini juga menunjukkan bagaimana cara menghubungkan pesan log dengan log permintaan yang sesuai.
Node.js
Python
Go
Struktur untuk setiap entri log disediakan oleh jenis Entry:
Saat suatu struct Entri dicatat, metode String akan dipanggil untuk mengonversinya ke
format JSON yang diharapkan oleh Cloud Logging:
Java
Aktifkan logging JSON dengan Logback dan SLF4J dengan mengonfigurasi Logging Logback appender dalam konfigurasi logback.xml Anda:
Konfigurasi LoggingAppender untuk mengalihkan log ke output standar (stdout)
dalam format JSON terstruktur agar dapat diambil oleh Cloud Run. Untuk mengetahui detail selengkapnya, tinjau Konfigurasi Logback.
Hal ini menghasilkan struktur log output berikut:
Kolom JSON khusus dalam pesan
Apabila Anda menyediakan log yang terstruktur sebagai kamus JSON, beberapa kolom khusus
akan dihapus dari jsonPayload dan ditulis ke kolom yang sesuai dalam
LogEntry yang dibuat. Hal ini sebagaimana dijelaskan dalam
dokumentasi untuk kolom khusus.
Misalnya, jika JSON Anda menyertakan properti severity, maka JSON tersebut akan dihapus dari
jsonPayload dan muncul sebagai entri log milik severity.
Properti message digunakan sebagai teks tampilan utama entri log jika ada.
Untuk mengetahui informasi lebih lanjut tentang properti khusus, baca bagian Resource Logging
di bawah ini.
Hubungkan log container Anda dengan log permintaan (khusus layanan)
Di Logs Explorer, log yang dikorelasikan dengan trace yang sama
dapat dilihat dalam format "parent-child": jika Anda mengklik ikon segitiga
di sebelah kiri entri log permintaan, maka log container yang berkaitan dengan permintaan tersebut
akan muncul secara bertingkat.
Log container tidak secara otomatis berkorelasi dengan log permintaan, kecuali jika Anda menggunakan
library klien Cloud Logging.
Untuk menghubungkan log container dengan log permintaan tanpa menggunakan library klien,
Anda dapat menggunakan baris log JSON terstruktur yang berisi
kolom logging.googleapis.com/trace dengan ID trace yang diekstrak dari
header X-Cloud-Trace-Context, seperti yang ditunjukkan pada contoh di atas untuk
logging terstruktur.
Mengontrol permintaan penggunaan resource log (khusus layanan)
Log permintaan dibuat secara otomatis. Meskipun tidak dapat mengontrol jumlah log permintaan dari Cloud Run secara langsung, Anda dapat memanfaatkan fitur pengecualian log dari Cloud Logging.
Catatan tentang agen logging
Jika Anda telah menggunakan Cloud Logging dengan produk Cloud de Confiance by S3NS tertentu, seperti Compute Engine, Anda mungkin telah menggunakan agen logging Cloud Logging. Cloud Run tidak menggunakan agen logging karena memiliki dukungan bawaan untuk pengumpulan log.
Nama resource logging
Berikut nama resource logging untuk Cloud Run:
- Revisi Cloud Run (
cloud_run_revision). - Tugas Cloud Run (
cloud_run_job).
Resource logging
Mengklik entri log di Logs Explorer akan membuka entri log berformat JSON sehingga Anda dapat melihat perincian detail yang diinginkan.
Semua kolom dalam entri log, seperti stempel waktu, tingkat keparahan, dan httpRequest
merupakan hal standar dan dijelaskan dalam dokumentasi untuk suatu
entri log.
Cloud Run menambahkan metadata tambahan agar Anda dapat mengidentifikasi sumber log. Metadata ini mencakup (label yang Anda tetapkan pada layanan Cloud Run) dan label resource yang khusus untuk Cloud Run.
Kolom entri log untuk layanan
Berikut adalah daftar kolom yang dapat ditemukan dalam entri log untuk layanan Cloud Run:
| Kolom | Nilai dan catatan |
|---|---|
LogEntry.labels.instanceId |
ID ini dipetakan ke instance tertentu dalam layanan ini saat layanan tersebut di-scale up dan di-scale down. |
LogEntry.labels.run.googleapis.com/base_image_versions |
Versi image dasar yang digunakan layanan. Hanya muncul untuk layanan yang di-deploy dari sumber dan jika update keamanan otomatis diaktifkan. |
LogEntry.labels.run.googleapis.com/cloud_event_id |
ID CloudEvent. Hanya muncul untuk layanan yang menerima peristiwa dari Eventarc. |
LogEntry.labels.run.googleapis.com/cloud_event_source |
Sumber CloudEvent. Hanya muncul untuk layanan yang menerima peristiwa dari Eventarc. |
LogEntry.labels.mylabel,LogEntry.labels.mysecondlabel |
Label layanan yang ditetapkan oleh Anda. |
LogEntry.logName |
Identifikasi log yang ada, seperti log permintaan, error standar, output standar, dan lain-lain. |
LogEntry.resource.labels.location |
Mengidentifikasi Cloud de Confiance by S3NS lokasi layanan. |
LogEntry.resource.labels.project_id |
Project tempat layanan tersebut di-deploy. |
LogEntry.resource.labels.revision_name |
Revisi yang menyajikan permintaan tersebut. |
LogEntry.resource.labels.service_name |
Layanan yang menyajikan permintaan tersebut. |
LogEntry.resource.type |
cloud_run_revision. Jenis resource milik Cloud Run. |
Berikut adalah contoh entri log permintaan untuk layanan Cloud Run:
{
httpRequest: {…}
insertId: "5c82b3d1000ece0000000000"
labels: {
instanceId: "00bf4bf00000fb59c906a00000c9e29c2c4e06dce91500000000056008d2b6460f163c0057b97b2345f2725fb2423ee5f0bafd36df887fdb1122371563cf1ff453717282afe000001"
mylabel: "mylabelvalue"
mysecondlabel: "mysecondlabelvalue"
}
logName: "projects/my-project/logs/run.googleapis.com%2Frequests"
receiveTimestamp: "2019-03-08T18:26:25.981686167Z"
resource: {
labels: {
configuration_name: "myservice"
location: "europe-west1"
project_id: "my-project"
revision_name: "myservice-00002"
service_name: "myservice"
}
type: "cloud_run_revision"
}
severity: "INFO"
timestamp: "2019-03-08T18:26:25.970397Z"
}
Kolom entri log untuk tugas
Berikut adalah daftar kolom yang dapat ditemukan dalam entri log untuk tugas Cloud Run:
| Kolom | Nilai dan catatan |
|---|---|
LogEntry.labels.instanceId |
ID ini dipetakan ke instance tertentu yang digunakan untuk pengerjaan tugas atau pengerjaan tugas tertentu. |
LogEntry.labels.mylabel,LogEntry.labels.mysecondlabel |
Label tugas yang ditetapkan oleh Anda. |
LogEntry.logName |
Identifikasi log yang ada, misalnya, error standar, output standar, dan lain-lain. |
LogEntry.resource.labels.location |
Mengidentifikasi Cloud de Confiance by S3NS lokasi tugas. |
LogEntry.resource.labels.project_id |
Project tempat tugas di-deploy. |
LogEntry.resource.labels.job_name |
Nama tugas. |
LogEntry.labels.execution_name |
Nama eksekusi tugas. |
LogEntry.labels.task_index |
Indeks tugas. |
LogEntry.labels.task_attempt |
Berapa kali tugas ini telah dicoba. |
LogEntry.resource.type |
cloud_run_job. Jenis resource milik Cloud Run. |