Tentang log GKE


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. Kunci stream 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 level ERROR. Log terstruktur dapat menyertakan kolom severity, 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:
  • Semua Pod yang berjalan di namespace kube-system, istio-system, knative-serving, gke-system, dan config-management-system.
  • Layanan yang tidak di-containerisasi termasuk runtime docker/containerd, kubelet, kubelet-monitor, node-problem-detector, dan kube-container-runtime-monitor.
  • Output port serial node, jika metadata instance VM serial-port-logging-enable ditetapkan ke benar (true).

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.