Halaman ini menyediakan ringkasan opsi logging yang tersedia di Google Kubernetes Engine (GKE).
Ringkasan
Log GKE yang dikirim ke Cloud Logging disimpan di datastore persisten khusus. Meskipun GKE sendiri menyimpan log, log ini tidak disimpan secara permanen. Misalnya, log penampung GKE dihapus saat Pod hostnya dihapus, saat disk tempat log disimpan kehabisan ruang, atau saat log diganti dengan log yang lebih baru. Log sistem dihapus secara berkala untuk mengosongkan ruang bagi log baru. Peristiwa cluster akan dihapus setelah satu jam.
Agen logging GKE
Untuk log container dan sistem, GKE men-deploy, secara default, agen logging per node yang membaca log container, menambahkan metadata yang berguna, lalu menyimpannya di Cloud Logging. Agen logging GKE memeriksa log penampung di sumber berikut:
Log output standar dan error standar dari proses dalam container
Log runtime kubelet dan container
Log untuk komponen sistem, seperti skrip startup VM
Untuk peristiwa, GKE menggunakan deployment di namespace kube-system yang secara otomatis mengumpulkan peristiwa dan mengirimkannya ke Logging.
Log yang dikumpulkan
Secara default, GKE mengumpulkan beberapa jenis log dari cluster Anda dan menyimpannya di Cloud Logging:
Log audit mencakup log Aktivitas Admin, log Akses Data, dan log Peristiwa. Untuk mengetahui informasi mendetail tentang Log Audit untuk GKE, lihat dokumentasi Log Audit untuk GKE. Log audit untuk GKE tidak dapat dinonaktifkan.
Log sistem termasuk log yang tercantum di log yang tersedia.
Log aplikasi mencakup semua log yang dihasilkan oleh penampung non-sistem yang berjalan di node pengguna.
Batasan berikut dapat menyebabkan log aplikasi gagal dikirim ke Cloud Logging:
- Untuk log json, kunci json duplikat tidak didukung.
stream
adalah kunci khusus di pipeline logging GKE. Kuncistream
dalam log json aplikasi dapat menyebabkan perilaku yang tidak terduga dan log dihapus.- Cloud Logging memiliki batas ukuran per LogEntry. Setiap LogEntry yang melebihi batas ukuran akan dihapus untuk log jsonPayload dan dipotong untuk log textPayload.
Atau, GKE dapat mengumpulkan jenis log tambahan dari komponen bidang kontrol Kubernetes tertentu dan menyimpannya di Cloud Logging:
Log server API mencakup semua log yang dihasilkan oleh server Kubernetes API (
kube-apiserver
).Log penjadwal mencakup semua log yang dihasilkan oleh Penjadwal Kubernetes (
kube-scheduler
).Log Pengelola Pengontrol mencakup semua log yang dihasilkan oleh Pengelola Pengontrol Kubernetes (
kube-controller-manager
).
Untuk mempelajari lebih lanjut setiap komponen bidang kontrol ini, lihat arsitektur cluster GKE.
Mengumpulkan log Anda
Saat Anda membuat cluster GKE baru, integrasi dengan Cloud Logging diaktifkan secara default.
Log sistem dan aplikasi dikirim ke Router Log di Cloud Logging.
Dari sana, log dapat ditransfer ke Cloud Logging, dikecualikan, atau diekspor ke BigQuery, Pub/Sub, atau Cloud Storage.
Anda juga dapat mengonfigurasi cluster Standard untuk hanya merekam log sistem, bukan mengumpulkan log aplikasi. Untuk cluster Autopilot dan Standard, filter pengecualian memungkinkan Anda mengurangi volume log yang dikirim ke Cloud Logging.
Throughput logging
Jika logging sistem diaktifkan, agen Cloud Logging khusus akan otomatis di-deploy dan dikelola. Agen ini berjalan di semua node GKE dalam cluster untuk mengumpulkan log, menambahkan metadata yang berguna tentang penampung, pod, dan cluster, lalu mengirim log ke Cloud Logging menggunakan agen berbasis Fluentbit.
Jika node GKE memerlukan lebih dari throughput log default dan cluster GKE Standar Anda menggunakan bidang kontrol versi 1.23.13-gke.1000 atau yang lebih baru, Anda dapat mengonfigurasi GKE untuk men-deploy konfigurasi alternatif dari agen Logging yang dirancang untuk memaksimalkan throughput logging.
Untuk mengetahui informasi selengkapnya, lihat Menyesuaikan throughput log.
Pengumpulan log dengan fluentd atau fluentbit kustom
Agen logging default GKE menyediakan solusi terkelola untuk men-deploy dan mengelola agen yang mengirim log untuk cluster Anda ke Cloud Logging. Log dikumpulkan menggunakan agen berbasis fluentbit.
Mengumpulkan log auditd
Linux untuk node GKE
Anda dapat mengaktifkan log audit sistem operasi yang panjang pada node GKE yang menjalankan Container-Optimized OS. Log sistem operasi di node Anda memberikan informasi berharga tentang status cluster dan workload Anda, seperti pesan error, upaya login, dan eksekusi biner. Anda dapat menggunakan informasi ini untuk melakukan debug masalah atau menyelidiki insiden keamanan.
Untuk mempelajari lebih lanjut, lihat Mengaktifkan log audit Linux di node GKE.
Log Audit GKE
Untuk informasi mendetail tentang entri log yang berlaku untuk jenis resource Cluster Kubernetes dan Operasi Cluster GKE, buka Pembuatan log audit.
Kontrol Akses Logging
Ada dua aspek kontrol akses logging: akses aplikasi dan akses pengguna. Cloud Logging menyediakan peran Identity and Access Management (IAM) yang dapat Anda gunakan untuk memberikan akses yang sesuai.
Akses Aplikasi
Aplikasi memerlukan izin untuk menulis log ke Cloud Logging, yang diberikan dengan menetapkan peran IAM roles/logging.logWriter
ke akun layanan yang dilampirkan ke kumpulan node yang mendasarinya.
Akses Tampilan Pengguna
Anda harus memiliki peran roles/logging.viewer
untuk melihat log di project. Jika perlu memiliki akses ke log Akses Data, Anda harus memiliki izin IAM logging.privateLogViewer
.
Untuk mengetahui informasi selengkapnya tentang izin dan peran, buka panduan Kontrol akses. Anda juga dapat meninjau Praktik terbaik untuk Cloud Audit Logs, yang juga berlaku untuk Cloud Logging secara umum.
Akses Admin Pengguna
Peran IAM roles/logging.configWriter
dan roles/logging.admin
menyediakan kemampuan administratif. Peran
roles/logging.configWriter
diperlukan untuk membuat sink logging yang biasanya digunakan untuk mengarahkan log ke
project tertentu atau terpusat. Misalnya, Anda mungkin ingin menggunakan sink logging bersama dengan filter logging untuk mengarahkan semua log untuk namespace ke bucket logging terpusat.
Untuk mempelajari lebih lanjut, buka panduan Kontrol Akses untuk Cloud Logging.
Praktik terbaik
- Logging terstruktur: Agen logging yang terintegrasi dengan GKE
akan membaca dokumen JSON yang diserialisasi ke string satu baris dan ditulis ke
output standar atau error standar, lalu akan mengirimkannya ke Google Cloud Observability
sebagai entri log terstruktur.
- Lihat Logging terstruktur untuk mengetahui detail selengkapnya tentang cara menggunakan agen logging terintegrasi.
- Anda dapat menggunakan Filter log lanjutan untuk memfilter log berdasarkan kolom dokumen JSON.
- Log yang dihasilkan dengan glog akan memiliki
kolom umum yang diuraikan, misalnya,
severity
,pid
,source_file
,source_line
. Namun, payload pesan itu sendiri tidak diuraikan dan muncul secara verbatim dalam pesan log yang dihasilkan di Google Cloud Observability.
- Keparahan: Secara default, log yang ditulis ke output standar berada di
level
INFO
dan log yang ditulis ke error standar berada di levelERROR
. Log terstruktur dapat menyertakan kolomseverity
, yang menentukan tingkat keparahan log. - Mengekspor ke BigQuery: Untuk analisis tambahan, Anda dapat mengekspor log ke layanan eksternal, seperti BigQuery atau Pub/Sub. Log yang diekspor ke BigQuery mempertahankan format dan strukturnya. Lihat Ringkasan pemilihan rute dan penyimpanan untuk informasi selengkapnya.
- Pemberitahuan: Saat Logging mencatat perilaku yang tidak terduga, Anda dapat menggunakan metrik berbasis log untuk menyiapkan kebijakan pemberitahuan. Untuk mengetahui contohnya, lihat Membuat kebijakan pemberitahuan pada metrik penghitung. Untuk informasi mendetail tentang metrik berbasis log, lihat Ringkasan metrik berbasis log.
- Pelaporan error: Untuk mengumpulkan error dari aplikasi yang berjalan di cluster, Anda dapat menggunakan Pelaporan Error.
Log yang tersedia
Jika memilih untuk mengirim log ke Cloud Logging, Anda harus mengirim log sistem, dan secara opsional dapat mengirim log dari sumber tambahan.
Tabel berikut menunjukkan nilai yang didukung untuk flag --logging
untuk perintah create dan update.
Sumber log | Nilai --logging |
Log dikumpulkan |
---|---|---|
Tidak ada | NONE |
Tidak ada log yang dikirim ke Cloud Logging; tidak ada agen pengumpulan log yang diinstal di cluster. Nilai ini tidak didukung untuk cluster Autopilot. |
Sistem | SYSTEM |
Mengumpulkan log dari hal berikut:
Juga mengumpulkan peristiwa Kubernetes. Nilai ini diperlukan untuk semua jenis cluster. |
Beban kerja | WORKLOAD |
Semua log yang dihasilkan oleh penampung non-sistem yang berjalan di node pengguna. Nilai ini diaktifkan secara default, tetapi bersifat opsional untuk semua jenis cluster. |
Server API | API_SERVER |
Semua log yang dibuat oleh kube-apiserver . Nilai ini bersifat opsional untuk semua jenis cluster.
|
Scheduler | SCHEDULER |
Semua log yang dibuat oleh kube-scheduler . Nilai ini bersifat opsional untuk semua jenis cluster.
|
Pengelola pengontrol | CONTROLLER_MANAGER |
Semua log yang dibuat oleh kube-controller-manager . Nilai ini bersifat opsional untuk semua jenis cluster.
|
Koneksi jaringan bidang kontrol | KCP_CONNECTION |
Hanya tersedia dengan otoritas bidang kontrol GKE Log koneksi jaringan masuk untuk instance bidang kontrol GKE. Untuk mengetahui detailnya, lihat Memverifikasi koneksi Google ke panel kontrol cluster. |
Peristiwa SSH bidang kontrol | KCP_SSHD |
Hanya tersedia dengan otoritas bidang kontrol GKE Membuat log untuk semua peristiwa SSH, seperti penerimaan kunci publik dan penutupan sesi, yang terjadi saat personel Google terhubung ke instance bidang kontrol cluster Anda selama kasus dukungan atau untuk akses administratif lainnya. Untuk mengetahui detailnya, lihat Memverifikasi koneksi Google ke panel kontrol cluster. |
Log yang diaktifkan secara default di GKE Enterprise
Saat Anda membuat cluster GKE baru di Google Cloud, log workload diaktifkan secara default untuk semua cluster Autopilot, tetapi dapat dinonaktifkan.
Untuk project edisi GKE Enterprise, log tambahan yang berguna diaktifkan secara default jika Anda mendaftar ke fleet saat membuat cluster.
Dalam tabel berikut, tanda centang () menunjukkan log mana yang diaktifkan secara default saat Anda membuat dan mendaftarkan cluster baru di project dengan GKE Enterprise yang diaktifkan:
Nama log | Autopilot | Standard |
---|---|---|
Sistem | ||
Beban kerja | - | |
Server API | ||
Scheduler | ||
Controller Manager | ||
Koneksi jaringan bidang kontrol | ||
Peristiwa SSH bidang kontrol |
Log bidang kontrol (server API, Penjadwal, dan Pengelola Pengontrol) dikenai biaya Cloud Logging.
Harga
Log panel kontrol GKE diekspor ke Cloud Logging. Harga Cloud Logging berlaku.
Anda akan dikenai biaya untuk biaya penyimpanan yang terutang saat mengekspor log ke layanan Google Cloud lainnya, seperti BigQuery. Untuk biaya yang terkait dengan Cloud Logging, lihat Harga.
Kuota
Log bidang kontrol menggunakan kuota "Permintaan tulis per menit" dari Cloud Logging API. Sebelum mengaktifkan log panel kontrol, periksa penggunaan puncak terbaru dari kuota tersebut. Jika memiliki banyak cluster dalam project yang sama atau sudah mendekati batas kuota, Anda dapat meminta peningkatan batas kuota sebelum mengaktifkan log bidang kontrol.
Kontrol akses
Jika ingin membatasi akses dalam organisasi ke log platform kontrol Kubernetes, Anda dapat membuat bucket log terpisah dengan kontrol akses yang lebih terbatas.
Dengan menyimpannya di bucket log terpisah dengan akses terbatas, log bidang kontrol
di bucket log tidak akan otomatis dapat diakses oleh siapa pun dengan
akses roles/logging.viewer
ke project. Selain itu, jika Anda memutuskan untuk menghapus log bidang kontrol tertentu karena masalah privasi atau keamanan, menyimpannya di bucket log terpisah dengan akses terbatas memungkinkan Anda menghapus log tanpa memengaruhi log dari komponen atau layanan lain.