Logging di runtime generasi kedua berbeda dengan runtime generasi pertama. Salah satu perubahan terbesar saat mengupgrade ke runtime yang lebih baru adalah bahwa logging yang telah terintegrasi dengan App Engine tidak didukung di runtime generasi kedua, dan log tidak dikorelasikan secara otomatis. Jika Anda bermigrasi ke runtime generasi kedua, Anda harus menggunakan library klien Cloud Logging.
Panduan ini menjelaskan cara mengupdate aplikasi untuk menggunakan Cloud Logging dan mendapatkan fitur pemfilteran dan korelasi log yang hampir sama seperti yang tersedia dengan integrasi logging di App Engine.
Cloud Logging adalah sistem pengelolaan log real-time dengan dukungan penyimpanan, penelusuran, analisis, dan pemantauan. Cloud Logging otomatis mengumpulkan log dari Google Cloud resource. Anda juga dapat mengumpulkan log dari aplikasi, resource lokal, dan resource dari penyedia cloud lainnya.
Perbedaan utama
Tabel berikut mencakup perbedaan dalam logging antara runtime generasi pertama dan kedua:
Runtime generasi pertama | Runtime generasi kedua | |
---|---|---|
Log permintaan dan aplikasi (juga disebut log aplikasi) |
App Engine menyematkan semua log aplikasi dalam log permintaan. Login di
runtime generasi pertama menggunakan kolom protoPayload.line.logMessage
log permintaan untuk menyematkan log aplikasi. |
App Engine tidak menyematkan
log aplikasi dalam log permintaan terkait.
App Engine menghilangkan atribut protoPayload.line dalam log
permintaan.
Log aplikasi dirutekan berdasarkan metode logging Anda:
|
Melihat log di Logs Explorer |
Runtime generasi pertama hanya berisi satu jenis log,
appengine.googleapis.com/request_log . Saat memperluas log permintaan, Anda dapat
melihat log aplikasi yang bersusun tingkat di bawahnya.
|
Runtime generasi kedua mencakup log dari beberapa jenis log seperti,
log permintaan di appengine.googleapis.com/request_log , stdout ,
stderr , logs/python , dan banyak lagi, bergantung pada cara
aplikasi Anda memancarkan log.
Log internal Google juga tersedia di /var/log/google_init.log .
Karena log aplikasi tidak otomatis dikorelasikan dengan log permintaan, langkah-langkah tambahan diperlukan untuk menampilkan tampilan bertingkat dari log permintaan dan aplikasi di Logs Explorer. Untuk mengetahui informasi selengkapnya, lihat Mengorelasikan log permintaan dengan log aplikasi dan Melihat log terkait di Logs Explorer. |
Integrasi Cloud Trace | Terintegrasi secara otomatis dengan Cloud Trace untuk pengumpulan data latensi. | Anda harus mengintegrasikan aplikasi secara manual dengan Cloud Trace untuk mengumpulkan data latensi dari App Engine. Untuk mengetahui informasi selengkapnya, lihat Mengukur untuk Cloud Trace. |
Korelasi tingkat error | Mencatat error yang terjadi di log permintaan App Engine dengan tingkat keparahan ERROR. Error Reporting secara otomatis mengorelasikan detail ini di dasbor Error Reporting. | Secara default, App Engine tidak mengintegrasikan Error Reporting di runtime generasi kedua. Untuk menyiapkan integrasi logging dengan Error Reporting, lihat, Melengkapi aplikasi dengan menggunakan library klien . |
Tingkat keparahan | Logs Explorer menetapkan tingkat keseriusan untuk log permintaan, dan tingkat keseriusan mencerminkan tingkat keseriusan tertinggi dari setiap entri log aplikasi yang berkorelasi dengan entri log permintaan. Misalnya, jika permintaan menyebabkan aplikasi Anda memunculkan entri log peringatan, Logs Explorer akan menampilkan ikon peringatan di samping entri log permintaan. Saat memperluas entri permintaan, Anda akan melihat entri log peringatan bersusun tingkat dalam entri permintaan. | Secara default, semua log permintaan memiliki tingkat keparahan DEFAULT atau INFO .
Meskipun log permintaan Anda dikorelasikan dengan log aplikasi, dan
Logs Explorer dikonfigurasi untuk melihat log terkait,
log permintaan tidak mencerminkan tingkat keparahan log aplikasi terkait.
|
Logservice API | Logservice API adalah bagian dari SDK layanan yang dipaketkan. | Logservice API telah dihapus dari Bundled Services SDK. Untuk mengetahui informasi selengkapnya, lihat daftar API yang tersedia. |
Sebelum memulai migrasi
Aktifkan Cloud Logging API di project yang berisi aplikasi Anda.
Pastikan aplikasi Anda memiliki izin untuk menulis log.
Secara default, akun layanan default aplikasi Anda memiliki izin untuk menulis log.
Jika aplikasi Anda menggunakan akun layanan yang berbeda, atau jika Anda telah mengubah izin untuk akun layanan default, pastikan akun yang Anda gunakan memiliki izin
logging.logEntries.create
untuk menulis log.Pahami berbagai jenis log di App Engine.
Ringkasan proses migrasi
Untuk memigrasikan aplikasi Anda agar menggunakan Cloud Logging:
- Instal Library Klien Cloud untuk Cloud Logging
- Menulis log dengan Cloud Logging
- Menghubungkan log permintaan dengan log aplikasi
- Lihat log
- Menguji aplikasi
Menginstal Library Klien Cloud untuk Cloud Logging
Untuk menginstal dan memperbarui file konfigurasi, tambahkan Library Klien Cloud
untuk Cloud Logging ke daftar dependensi Anda dalam file requirements.txt
, seperti berikut:
google-cloud-logging
Menulis log dengan modul logging Python standar
Di setiap file yang menulis entri log:
- Impor library klien Cloud Logging.
- Buat instance klien Cloud Logging.
- Jalankan metode
setup_logging()
klien Cloud Logging, yang memasang pemroses default-nya sebagai pengendali logging untuk logger root Python.
Contoh:
Setelah pengendali terpasang, setiap log pada level INFO
atau yang lebih tinggi
yang dimunculkan dalam aplikasi Anda akan dikirim ke Logging
secara default:
Mengorelasikan log permintaan dengan log aplikasi
Beberapa fitur yang tersedia di runtime generasi pertama seperti, korelasi otomatis log permintaan dengan log aplikasi, tidak tersedia di runtime generasi kedua.
Aplikasi yang menggunakan runtime generasi kedua dapat mencapai perilaku logging bertingkat yang serupa dengan runtime generasi pertama dengan:
- Menyiapkan klien Cloud Logging di aplikasi Anda dan menghubungkan log.
- Menggunakan ID
trace
denganstdout
danstderr
.
Perilaku logging di runtime generasi pertama dan generasi kedua berbeda dalam hal berikut:
Di runtime generasi pertama, App Engine menyematkan semua log aplikasi yang dikeluarkan saat menangani permintaan ke dalam kolom
protoPayload.line.logMessage
dari log permintaan. Log ini dapat dilihat di Logs Explorer melaluiappengine.googleapis.com/request_log
.Gambar berikut menunjukkan log aplikasi dan permintaan terkait di runtime generasi pertama:
Di runtime generasi kedua, App Engine menghilangkan atribut
protoPayload.line
dalam log permintaan. Konten log aplikasi tidak ada dalam log permintaan JSON di Logs Explorer. Setiap log aplikasi akan muncul secara terpisah menurut nama lognya di Logs Explorer.Gambar berikut menunjukkan log aplikasi dan permintaan terpisah di runtime generasi kedua:
Bagian berikut membahas cara menggunakan klien Cloud Logging atau logging terstruktur dengan stdout
dan stderr
untuk mengorelasikan log.
Menggunakan modul logging Python
Untuk menambahkan korelasi permintaan ke log aplikasi yang dicatat oleh modul logging Python, siapkan library klien Cloud Logging.
Saat Anda menjalankan metode client.setup_logging()
saat aplikasi dimulai, metode ini akan menambahkan kolom trace
dan detail permintaan HTTP ke log aplikasi yang ditulis oleh modul logging
Python seperti logging.info()
dan logging.error()
. Log ini dirutekan ke logs/python
.
App Engine juga menambahkan kolom trace
ini ke log permintaan terkait,
yang memungkinkan Anda melihat entri log terkait di Log Explorer.
Menggunakan stdout
dan stderr
Jika Anda menggunakan stdout
dan stderr
untuk menulis entri log, entri ini akan muncul di
Logs Explorer. Namun, untuk mengaktifkan pemfilteran dan korelasi dengan log permintaan,
Anda harus memformat entri sebagai objek JSON dan memberikan metadata spesifik. Untuk
mengetahui informasi selengkapnya tentang pendekatan ini, lihat Menulis log terstruktur ke stdout dan stderr.
Pendekatan ini menambahkan ID trace permintaan di log aplikasi dengan:
- Mengekstrak ID trace dari header permintaan
X-Cloud-Trace-Context
. - Menulis ID ke kolom bernama
logging.googleapis.com/trace
dalam entri log terstruktur Anda. Untuk mengetahui informasi selengkapnya tentang headerX-Cloud-Trace-Context
, lihat Memaksa permintaan untuk dilacak.
Melihat log
Anda dapat melihat log aplikasi dan log permintaan dengan beberapa cara:
- Gunakan Logs Explorer dari Cloud Logging di konsol Google Cloud .
- Gunakan Google Cloud CLI untuk melihat log menggunakan gcloud.
- Membaca log secara terprogram menggunakan berbagai metode.
Menggunakan Logs Explorer
Anda dapat melihat log aplikasi dan permintaan menggunakan Logs Explorer:
Buka Logs Explorer di konsol Google Cloud :
Pilih project Google Cloud yang ada di bagian atas halaman.
Di Jenis Resource, pilih Aplikasi GAE.
Anda dapat memfilter Logs Explorer berdasarkan layanan, versi, dan kriteria lainnya. Anda juga dapat menelusuri log untuk menemukan entri tertentu. Lihat Menggunakan Logs Explorer untuk mengetahui detailnya.
Jika Anda mengirim entri teks sederhana ke output standar, Anda tidak dapat menggunakan Logs Viewer untuk memfilter entri aplikasi menurut tingkat keparahan. Anda juga tidak dapat melihat log aplikasi mana yang sesuai dengan permintaan tertentu. Anda masih dapat menggunakan jenis pemfilteran lain di Logs Explorer, seperti teks dan stempel waktu.
Melihat entri log terkait di Logs Explorer
Di Logs Explorer, untuk melihat entri log turunan yang dikorelasikan dengan entri log induk, luaskan entri log.
Misalnya, untuk menampilkan entri log permintaan App Engine dan entri log aplikasi, lakukan hal berikut:
Di panel navigasi konsol Google Cloud , pilih Logging, lalu pilih Logs Explorer:
Di Jenis Resource, pilih Aplikasi GAE.
Untuk melihat dan mengorelasikan log permintaan, di Log Name, pilih request_log. Atau, untuk menghubungkan berdasarkan log permintaan, klik Hubungkan berdasarkan, lalu pilih request_log.
Di panel Query results, untuk meluaskan entri log, klik Luaskan. Saat diperluas, setiap log permintaan akan menampilkan log aplikasi terkait.
Setelah membuat filter untuk log, setiap log permintaan akan menampilkan log aplikasi yang sesuai sebagai log turunan. Logs Explorer mencapai hal ini dengan mengorelasikan
kolom trace
dalam log aplikasi dan log permintaan tertentu, dengan asumsi aplikasi
menggunakan library google-cloud-logging
.
Gambar berikut menampilkan log aplikasi yang dikelompokkan menurut kolom trace
:
Menggunakan Google Cloud CLI
Untuk melihat log App Engine dari command line, gunakan perintah berikut:
gcloud app logs tail
Untuk mengetahui informasi selengkapnya, lihat tail log aplikasi gcloud.
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 Cloud Logging API melalui library klien untuk bahasa pemrograman Anda.
- Panggil endpoint REST Cloud Logging API secara langsung.
Menguji aplikasi Anda
Migrasi berhasil jika Anda dapat men-deploy aplikasi tanpa error. Untuk memverifikasi bahwa Cloud Logging berfungsi, ikuti langkah-langkah berikut:
Buka Logs Explorer dan luaskan entri log permintaan.
Pastikan log aplikasi yang dihasilkan oleh aplikasi Anda saat memproses permintaan, bersusun tingkat dalam log permintaan.
Jika semua endpoint aplikasi Anda berfungsi seperti yang diharapkan, gunakan pemisahan traffic untuk meningkatkan traffic untuk aplikasi yang diupdate secara perlahan. Pantau aplikasi dengan cermat untuk menemukan masalah sebelum mengarahkan lebih banyak traffic ke aplikasi yang telah diupdate.