Halaman ini berisi penjelasan mengenai log yang tersedia saat menggunakan Knative serving, serta bagaimana cara melihat dan menulis log.
Knative serving memiliki dua jenis log:
- Log permintaan: log permintaan yang dikirim ke layanan Knative serving. Log ini dibuat secara otomatis.
- Log container: log yang dikeluarkan dari instance container, biasanya dari kode Anda sendiri, yang ditulis ke lokasi yang didukung seperti yang dijelaskan dalam Menulis log container.
Mengaktifkan log
Log secara otomatis dikirim ke Cloud Logging. Google Cloud Untuk Google Distributed Cloud, Anda harus mengaktifkan log terlebih dahulu.
Melihat log
Anda dapat melihat log untuk layanan Anda dengan beberapa cara:
- Menggunakan halaman Knative serving di Google Cloud konsol
- Menggunakan Logs Explorer Cloud Logging di Google Cloud konsol.
Kedua metode tampilan ini memeriksa log yang sama yang disimpan di Cloud Logging, tetapi Logs Explorer Cloud Logging memberikan detail yang lebih lengkap dan kemampuan pemfilteran yang lebih baik.
Melihat log di Knative serving
Cara melihat log di halaman Knative serving:
Klik layanan yang diinginkan pada daftar yang ditampilkan.
Klik tab LOGS untuk mendapatkan log permintaan dan log container untuk semua revisi layanan ini. Pemfilteran dapat dilakukan berdasarkan tingkat keparahan log.
Melihat log di Cloud Logging
Cara melihat log Knative serving Anda di Logs Explorer Cloud Logging:
Buka halaman Logs Explorer di Google Cloud konsol.
Pilih project yang sudah ada di bagian atas halaman, atau buat project baru. Google Cloud
Menggunakan menu drop-down, pilih resource: Kubernetes Container.
Untuk mengetahui informasi selengkapnya, lihat Menggunakan Logs Explorer.
Melihat log di Cloud Code
Untuk melihat log Anda di Cloud Code, bacalah panduan untuk IntelliJ dan Visual Studio Code.
Membaca log secara terprogram
Jika ingin membaca log secara terprogram, Anda dapat menggunakan salah satu metode berikut:
- Gunakan sink log ke Pub/Sub dan skrip untuk mengambil dari Pub/Sub.
- Panggil Logging API melalui Library Klien untuk bahasa pemrograman Anda.
- Panggil endpoint REST Logging API secara langsung.
Menulis log container
Saat menulis log dari layanan Anda, 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) - 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 secara otomatis dikaitkan dengan layanan, revisi, dan lokasi Knative serving.
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 mengaktifkan Logstash JSON Encoder dalam konfigurasi logback.xml Anda.
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.
Menghubungkan log container Anda dengan log permintaan
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
logging.googleapis.com/trace kolom dengan ID trace yang diekstrak dari
header X-Cloud-Trace-Context seperti yang ditunjukkan pada contoh di atas untuk
logging terstruktur.
Mengontrol penggunaan resource log permintaan
Log permintaan dibuat secara otomatis. Meskipun tidak dapat mengontrol jumlah log permintaan dari Knative serving secara langsung, Anda dapat memanfaatkan fitur pengecualian log dari Cloud Logging.
Catatan tentang agen logging
Anda mungkin telah menggunakan agen logging Cloud Logging dengan produk tertentu Google Cloud seperti Compute Engine. Knative serving tidak menggunakan agen logging karena memiliki dukungan bawaan untuk pengumpulan log.
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.
Namun, ada beberapa label atau label resource yang khusus untuk Knative serving. Label tersebut tercantum di sini dengan contoh konten:
{
httpRequest: {…}
insertId: "5c82b3d1000ece0000000000"
labels: {
instanceId: "00bf4bf00000fb59c906a00000c9e29c2c4e06dce91500000000056008d2b6460f163c0057b97b2345f2725fb2423ee5f0bafd36df887fdb1122371563cf1ff453717282afe000001"
}
logName: "projects/my-project/logs/kubernetes-engine/enterprise/knative-serving/.googleapis.com%2Frequests"
receiveTimestamp: "2019-03-08T18:26:25.981686167Z"
resource: {
labels: {
configuration_name: "myservice"
location: "us-central1"
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 | Nilai dan catatan |
|---|---|
instanceId |
Instance container yang menangani permintaan. |
logName |
Identifikasi log yang ada, seperti log permintaan, error standar, output standar, dan lain-lain. |
configuration_name |
Resource Konfigurasi yang membuat revisi yang menyajikan permintaan. |
location |
Identifikasi lokasi GCP layanan. |
project_id |
Project tempat layanan tersebut di-deploy. |
revision_name |
Revisi yang menyajikan permintaan tersebut. |
service_name |
Layanan yang menyajikan permintaan tersebut. |
type |
cloud_run_revision. Jenis resource Knative serving. |