Halaman ini menjelaskan cara mengaktifkan dan melihat log untuk armada. Dengan logging fleet, beberapa log digabungkan dan dicakup bersama, sehingga Anda dapat menganalisis kondisi aplikasi dalam satu tampilan gabungan. Halaman ini ditujukan untuk:
- Administrator platform yang ingin mengaktifkan logging armada dan melihat log di semua namespace.
- Operator layanan yang ingin melihat log di namespace tertentu yang aksesnya mereka miliki.
Ringkasan
Log fleet memungkinkan Anda melihat log di seluruh tingkat fleet, atau untuk cakupan tim tertentu. Cakupan adalah fitur pengelolaan tim yang memungkinkan Anda menentukan subset log fleet dan resource lainnya per tim, dengan setiap cakupan terkait dengan satu atau beberapa cluster anggota fleet. Untuk informasi selengkapnya tentang cakupan, lihat Mengelola tim untuk fleet Anda.
Anda dapat melihat dua jenis log armada:
Log default: Semua log Kubernetes (kecuali Log audit) yang tidak termasuk dalam cakupan fleet tertentu dengan jenis resource berikut:
k8s_container
k8s_pod
k8s_node
k8s_cluster
k8s_control_plane_components
Log cakupan fleet: Log Container dan Pod untuk aplikasi yang dimiliki oleh tim yang di-deploy di cakupan fleet tertentu dengan beberapa namespace tingkat fleet.
Melihat log cakupan fleet bersifat opsional. Jika tidak ingin menyiapkan pengelolaan tim, Anda tetap dapat menggunakan logging fleet untuk melihat log default.
Log dapat dirutekan ke bucket log yang berbeda di project host fleet dengan tampilan yang berbeda untuk kontrol akses. Periode retensi data default bucket log adalah 30 hari. Anda dapat mengonfigurasi periode ini jika diperlukan.
Ada dua mode yang didukung untuk pemilihan rute log dengan fleet yang berisi cluster dari beberapa project (pendaftaran lintas project):
MOVE
: Semua log dipindahkan ke project host fleet. Jika cluster dalam fleet termasuk dalam project yang berbeda, lognya tidak disimpan di project Google Cloud asli.COPY
: Semua log dikirim ke project host fleet. Jika cluster dalam fleet termasuk dalam project lain, lognya juga akan dipertahankan di project Google Cloud asli.
Sebelum memulai
Jika Anda telah membuat bucket, sink, dan filter pengecualian yang ditetapkan Cloud Logging secara manual, pastikan nama yang telah Anda tetapkan untuk objek ini tidak bertentangan dengan batasan penamaan logging fleet. Jika ada konflik penamaan, hubungi Dukungan sebelum melanjutkan.
Pastikan cluster yang lognya ingin Anda lihat telah terdaftar ke fleet yang Anda pilih.
Jika Anda belum menginstalnya, instal Google Cloud CLI dengan mengikuti petunjuk penginstalan. Anda memerlukan versi 424.0.0 atau yang lebih tinggi untuk melihat log armada.
Pastikan project host fleet Anda telah mengaktifkan semua API yang diperlukan, termasuk Anthos API:
gcloud services enable --project=FLEET_HOST_PROJECT_ID \ gkehub.googleapis.com \ container.googleapis.com \ connectgateway.googleapis.com \ cloudresourcemanager.googleapis.com \ iam.googleapis.com \ anthos.googleapis.com
dengan:
- FLEET_HOST_PROJECT_ID adalah project ID project host fleet Anda. Pelajari cara menemukan nilai ini.
Menyiapkan cakupan, namespace, dan beban kerja
Jika ingin melihat log cakupan fleet, Anda harus membuat cakupan fleet dan namespace fleet, selain menyiapkan workload untuk pengumpulan log.
Sebelum melanjutkan, tetapkan project default untuk Google Cloud CLI dengan menjalankan perintah berikut:
gcloud config set project FLEET_HOST_PROJECT_ID
Membuat cakupan dan namespace
Jika Anda ingin melihat log di tingkat cakupan, dan belum menyiapkan cakupan, ikuti petunjuk di Mengelola tim untuk fleet Anda untuk membuat cakupan, menambahkan cluster ke cakupan, dan menyiapkan namespace fleet.
Menyiapkan workload
Untuk melihat data log dari aplikasi, Anda harus men-deploy workload di cluster ke namespace fleet yang dikonfigurasi pada langkah sebelumnya. Langkah ini berlaku baik jika Anda memilih untuk melihat log default, log cakupan armada, atau keduanya. Berikut adalah contoh untuk mengonfigurasi beban kerja Anda:
apiVersion: v1
kind: Pod
metadata:
name: fleet-example-pod
namespace: NAMESPACE_NAME
spec:
containers:
- name: count
image: ubuntu:14.04
args: [bash, -c,
'for ((i = 0; ; i++)); do echo "$i: $(date)"; sleep 1; done']
Setelah men-deploy resource, Anda mungkin melihat error jika namespace fleet gagal dibuat karena alasan tertentu. Dalam hal ini, jalankan perintah berikut untuk membuat namespace lagi, dan jalankan ulang perintah deployment workload:
kubectl create namespace NAMESPACE_NAME
Mengaktifkan logging armada
Bagian ini menjelaskan cara mengaktifkan fitur logging armada dan memberikan akses tim untuk melihat log.
gcloud
Anda dapat mengaktifkan logging fleet menggunakan Google Cloud CLI dengan menentukan kolom konfigurasi untuk fitur dalam file JSON atau YAML. Berikut adalah contoh konfigurasi untuk logging armada dalam format JSON:
{ "loggingConfig": { "defaultConfig": { "mode": "COPY" }, "fleetScopeLogsConfig": { "mode": "MOVE" } } }
Untuk melihat semua kolom yang dapat Anda konfigurasi untuk fitur ini, lihat referensi API.
Jika kolom defaultConfig
atau fleetScopeLogsConfig
diaktifkan dengan mode COPY
atau MOVE
, seperti yang ditunjukkan pada contoh sebelumnya, sink log akan dibuat dengan awalan fleet-o11y-
. Sink log ini dibuat dalam project Google Cloud untuk merutekan log target dari project cluster ke project host fleet.
Jika fleetScopeLogsConfig
diaktifkan, bucket log dengan nama fleet-o11y-scope-$SCOPE_NAME
juga akan dibuat di region global
di bagian project host fleet, jika belum ada. Perhatikan bahwa Anda tidak dapat mengubah region bucket.
Dalam contoh ini, log default akan dikirim ke project host fleet dan disimpan di project Google Cloud asli, sedangkan log cakupan fleet akan dikirim ke project host fleet, dan tidak disimpan di project Google Cloud.
Tambahkan konfigurasi yang Anda pilih ke file JSON, lalu perbarui fleet:
gcloud container fleet fleetobservability update \ --logging-config=JSON_FILE
Ganti JSON_FILE dengan nama nama file Anda.
Terraform
- Fitur kemampuan observasi armada diaktifkan secara default. Jika ini adalah pertama kalinya Anda menggunakan Terraform untuk mengelola fitur visibilitas armada, impor fitur tersebut ke Terraform dengan menjalankan perintah berikut:
terraform import google_gke_hub_feature.feature projects/FLEET_HOST_PROJECT_ID/locations/global/features/fleetobservability
- Anda dapat mengaktifkan logging armada dengan Terraform menggunakan modul Terraform.
Misalnya, Anda dapat menambahkan blok berikut ke konfigurasi Terraform:
resource "google_gke_hub_feature" "feature" {
name = "fleetobservability"
location = "global"
spec {
fleetobservability {
logging_config {
default_config {
mode = "COPY"
}
fleet_scope_logs_config {
mode = "MOVE"
}
}
}
}
}
Jika kolom default_config
atau fleet_scope_logs_config
diaktifkan dengan mode COPY
atau MOVE
, seperti yang ditunjukkan pada contoh sebelumnya, sink log akan dibuat dengan awalan fleet-o11y-
. Sink log ini dibuat dalam project Google Cloud untuk merutekan log target dari project cluster ke project host fleet.
Jika fleet_scope_logs_config
diaktifkan, bucket log dengan nama fleet-o11y-scope-$SCOPE_NAME
juga akan dibuat di project host fleet, jika belum ada.
Dalam contoh ini, log default akan dikirim ke project host fleet dan disimpan di project Google Cloud asli, sedangkan log cakupan fleet akan dikirim ke project host fleet, dan tidak disimpan di project Google Cloud.
Pastikan spesifikasi fitur telah diperbarui:
gcloud container fleet fleetobservability describe
Output menunjukkan spesifikasi fleetobservability
yang diperbarui dengan konfigurasi, seperti dalam contoh berikut:
createTime: '2022-09-30T16:05:02.222568564Z' membershipStates: projects/123456/locations/us-central1/memberships/cluster-1: state: code: OK description: Fleet monitoring enabled. updateTime: '2023-04-03T20:22:51.436047872Z' name: projects/123456/locations/global/features/fleetobservability resourceState: state: ACTIVE spec: fleetobservability: loggingConfig: defaultConfig: mode: COPY fleetScopeLogsConfig: mode: MOVE state: state: {} updateTime: '2023-04-03T20:38:17.719596966Z'
Setiap perubahan yang dilakukan pada spesifikasi fleetobservability
mungkin memerlukan waktu beberapa menit untuk diterapkan.
Menyiapkan izin logging lintas project
Bagian ini hanya diperlukan jika Anda mendaftarkan cluster ke fleet di project lain (juga dikenal sebagai pendaftaran lintas project). Untuk merutekan log dari project cluster ke project host fleet, Anda harus memberikan peran roles/logging.bucketWriter
ke akun layanan logging dari setiap project cluster.
Untuk mendapatkan kredensial akun layanan dari sink di project cluster, jalankan perintah berikut:
FLEET_HOST_PROJECT_ID=FLEET_HOST_PROJECT_ID FLEET_HOST_PROJECT_NUMBER=$(gcloud projects describe "${FLEET_HOST_PROJECT_ID}" --format "value(projectNumber)") gcloud logging sinks --project=GKE_PROJECT_ID describe fleet-o11y-${FLEET_HOST_PROJECT_NUMBER}-default
Jika perintah menampilkan error bahwa sink log tidak dapat ditemukan, coba jalankan kembali perintah setelah satu atau dua menit. Anda dapat melihat akun layanan di kolom
writerIdentity
deskripsi sink seperti yang ditunjukkan dalam contoh berikut:createTime: '2023-04-06T02:26:54.716195307Z' destination: logging.googleapis.com/projects/123456/locations/global/buckets/_Default filter: xxx name: fleet-o11y-default updateTime: '2023-04-06T19:03:51.598668462Z' writerIdentity: serviceAccount:service-123456@gcp-sa-logging.
Berikan peran
roles/logging.bucketWriter
ke akun layanan yang diambil:gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "SERVICE_ACCOUNT" \ --role "roles/logging.bucketWriter"
dengan:
- SERVICE_ACCOUNT adalah nama akun layanan yang diambil dari langkah sebelumnya. Contoh:
gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \ --member "serviceAccount:service-123456@gcp-sa-logging." \ --role "roles/logging.bucketWriter"
Memberikan akses tim ke log
Bagian ini menjelaskan cara memberikan akses kepada pengguna untuk melihat log penampung dan log Pod.
Dapatkan kebijakan IAM untuk project fleet, dan tulis ke file lokal dalam format JSON:
gcloud projects get-iam-policy FLEET_HOST_PROJECT_ID --format json > output.json
Tambahkan kondisi IAM yang memungkinkan akun pengguna melihat data dari bucket log yang Anda buat. Berikut adalah contoh untuk melihat log container dan log Pod:
{ "bindings": [ { "members": [ "user:USER_ACCOUNT_EMAIL" ], "role": "roles/logging.viewAccessor", "condition": { "title": "Bucket reader condition example", "description": "Grants logging.viewAccessor role to user USER_ACCOUNT_EMAIL for the fleet-o11y-scope-SCOPE_NAME-k8s_container and fleet-o11y-scope-SCOPE_NAME-k8s_pod log view.", "expression": "resource.name == \"projects/FLEET_HOST_PROJECT_ID/locations/global/buckets/fleet-o11y-scope-SCOPE_NAME/views/fleet-o11y-scope-SCOPE_NAME-k8s_container\" || resource.name == \"projects/FLEET_HOST_PROJECT_ID/locations/global/buckets/fleet-o11y-scope-SCOPE_NAME/views/fleet-o11y-scope-SCOPE_NAME-k8s_pod\"" } } ], }
Perbarui kebijakan IAM:
gcloud projects set-iam-policy FLEET_HOST_PROJECT_ID output.json
Untuk mengetahui opsi selengkapnya tentang cara memberikan akses, lihat Mengontrol akses ke tampilan log.
Melihat log fleet
Administrator platform memiliki akses untuk melihat semua log di semua namespace.
Log default
Untuk melihat semua log default di bucket _Default
di project host fleet, isi variabel di URL berikut, lalu salin dan tempel ke browser Anda:
https://console.cloud.google.com/logs/query;query=;storageScope=storage,projects%2FFLEET_HOST_PROJECT_ID%2Flocations%2Fglobal%2Fbuckets%2F_Default%2Fviews%2F_Default?jsmode=O&mods=pan_ng2&project=FLEET_HOST_PROJECT_ID
Log container cakupan fleet dan log Pod
Operator layanan dapat melihat log di namespace yang dapat mereka akses. Untuk melihat log semua namespace dalam cakupan fleet tertentu, selesaikan langkah-langkah berikut:
Setelah project host fleet dipilih, buka bagian Tim di konsol Google Cloud.
Klik cakupan tim yang log-nya ingin Anda lihat, lalu klik tab Logs.
Pilih Log Container atau Log pod untuk memfilter tampilan log.
Untuk melihat log namespace tertentu dalam cakupan Anda:
- Di halaman Tim, dengan cakupan tim Anda dipilih, klik tab Namespace.
- Klik namespace yang log-nya ingin Anda lihat, lalu klik tab Logs.
- Pilih Log Container atau Log Pod untuk memfilter tampilan log.
Atau, untuk melihat log penampung, isi variabel di URL berikut, salin dan tempel ke browser Anda:
https://console.cloud.google.com/logs/query;query=;storageScope=storage,projects%2FFLEET_HOST_PROJECT_ID%2Flocations%2Fglobal%2Fbuckets%2Ffleet-o11y-scope-SCOPE_NAME%2Fviews%2Ffleet-o11y-scope-SCOPE_NAME-k8s_container?jsmode=O&mods=pan_ng2&project=FLEET_HOST_PROJECT_ID
Untuk melihat log Pod dalam cakupan fleet tertentu, isi variabel di URL berikut, salin, lalu tempel ke browser Anda:
https://console.cloud.google.com/logs/query;query=;storageScope=storage,projects%2FFLEET_HOST_PROJECT_ID%2Flocations%2Fglobal%2Fbuckets%2Ffleet-o11y-scope-SCOPE_NAME%2Fviews%2Ffleet-o11y-scope-SCOPE_NAME-k8s_pod?jsmode=O&mods=pan_ng2&project=FLEET_HOST_PROJECT_ID
Lihat Antarmuka Logs Explorer untuk mengetahui informasi selengkapnya tentang cara menganalisis data log.
Menonaktifkan logging armada
Untuk menonaktifkan fitur logging armada, selesaikan langkah-langkah berikut:
gcloud
Simpan konfigurasi berikut ke file bernama
disable_logging_config.json
:{ "loggingConfig": {} }
Perbarui spesifikasi fitur
fleetobservability
:gcloud container fleet fleetobservability update \ --logging-config=disable_logging_config.json
Terraform
Dalam konfigurasi Terraform, perbarui semua mode untuk pemilihan rute log ke MODE_UNSPECIFIED
. Berikut ini contohnya:
resource "google_gke_hub_feature" "feature" {
name = "fleetobservability"
location = "global"
spec {
fleetobservability {
logging_config {
default_config {
mode = "MODE_UNSPECIFIED"
}
fleet_scope_logs_config {
mode = "MODE_UNSPECIFIED"
}
}
}
}
}
Pastikan spesifikasi fitur telah diperbarui:
gcloud container fleet fleetobservability describe
Output menunjukkan spesifikasi fleetobservability
yang diperbarui dengan konfigurasi Anda:
createTime: '2022-09-30T16:05:02.222568564Z' membershipStates: projects/123456/locations/global/memberships/cluster-1: state: code: OK description: Fleet monitoring enabled. updateTime: '2023-04-03T20:22:51.436047872Z' name: projects/123456/locations/global/features/fleetobservability resourceState: state: ACTIVE spec: fleetobservability: loggingConfig: {} state: state: {} updateTime: '2023-04-03T20:38:17.719596966Z'
Setiap perubahan yang dilakukan pada spesifikasi fleetobservability
mungkin memerlukan waktu beberapa menit untuk diterapkan.
Setelah menonaktifkan logging inventaris, sink log dan filter pengecualian akan dihapus dari project Anda. Namun, semua bucket log yang dibuat untuk cakupan, dan tampilan log yang dibuat di bawah bucket log akan dipertahankan. Untuk menghapus bucket log di project host fleet, lihat Menghapus bucket.
Memperbarui periode retensi untuk bucket log
Periode retensi data default bucket log adalah 30 hari. Untuk memperbarui periode ini, jalankan perintah berikut:
gcloud logging buckets update fleet-o11y-scope-SCOPE_NAME --location=global --retention-days=RETENTION_DAYS
dengan:
SCOPE_NAME adalah nama cakupan armada.
RETENTION_DAYS adalah jumlah hari periode retensi data baru. Untuk opsi selengkapnya tentang cara mengonfigurasi bucket log, lihat Mengelola bucket.
Jika Anda memperpanjang periode retensi bucket, aturan retensi akan berlaku ke depannya dan tidak berlaku surut. Log tidak dapat dipulihkan setelah periode retensi yang berlaku berakhir.
Referensi API
Bagian ini memberikan informasi tentang kemungkinan kolom yang dapat Anda tambahkan ke objek fleetobservability
.
fleetobservability
fleetobservability
menentukan konfigurasi visibilitas armada.
Kolom | Deskripsi | Skema | Opsional |
---|---|---|---|
loggingConfig | Menentukan apakah fitur logging armada diaktifkan untuk seluruh armada. Jika tidak ditentukan, fitur logging armada akan dinonaktifkan untuk seluruh armada. |
loggingConfig | Benar |
loggingConfig
loggingConfig
menentukan konfigurasi fitur logging fleet dalam visibilitas fleet.
Kolom | Deskripsi | Skema | Opsional |
---|---|---|---|
defaultConfig | Menetapkan perilaku pemilihan rute log untuk log default di fleet. | routingConfig | Benar |
fleetScopeLogsConfig | Menetapkan perilaku pemilihan rute log untuk log cakupan armada. | routingConfig | Benar |
routingConfig
routingConfig
menentukan konfigurasi mode pemilihan rute log di fitur logging armada.
Kolom | Deskripsi | Skema | Opsional |
---|---|---|---|
mode | Ditentukan untuk mengaktifkan perutean log, dan tidak ditentukan atau MODE_UNSPECIFIED untuk menonaktifkan perutean log. Jika ditetapkan ke COPY, log akan disalin ke project tujuan. Jika ditetapkan ke MOVE, log akan dipindahkan ke project tujuan. |
String; Salah satu dari: MOVE, COPY, dan MODE_UNSPECIFIED | Benar |
Batasan penamaan
Saat kemampuan observasi fleet diaktifkan, pengontrol kemampuan observasi fleet akan mencadangkan nama berikut untuk objek log yang dibuatnya. Untuk menghindari perilaku yang tidak diinginkan atau tidak terduga, Anda harus menghindari penggunaan nama ini saat membuat bucket log, sink, dan menetapkan filter pengecualian Anda sendiri.
Fitur diaktifkan | Objek dibuat | Nama yang digunakan oleh kemampuan observasi fleet |
---|---|---|
defaultConfig |
Sink | fleet-o11y-FLEET_PROJECT_NUMBER-default |
Filter pengecualian. | fleet-o11y-FLEET_PROJECT_NUMBER-default-exclusion . Nama ini dicadangkan di sink _Default project cluster. |
|
fleetScopeLogsConfig |
Bucket log | fleet-o11y-scope-SCOPE_NAME |
fleet-o11y-scope-SCOPE_NAME-k8s_container |
||
fleet-o11y-scope-SCOPE_NAME-k8s_pod |
||
Sink | fleet-o11y-FLEET_PROJECT_NUMBER-scope-SCOPE_NAME |
|
Filter pengecualian | fleet-o11y-FLEET_PROJECT_NUMBER-scope-exclusion |
Pemecahan masalah
Bagian ini menjelaskan cara menyelesaikan masalah terkait logging armada.
Notifikasi email tentang error konfigurasi sink
Jika Anda menerima email dengan judul [ACTION REQUIRED] Cloud Logging sink configuration error in <Your GCP Project>
, akun layanan sink log Anda tidak memiliki izin untuk menulis log ke tujuan sink. Untuk mengatasinya, ikuti langkah-langkah di Izin logging lintas project.
Pesan error yang tidak diketahui dari UI Cloud Logging
Jika Anda melihat error berikut di UI Cloud Logging, periksa kembali apakah variabel project_id
dan scope
yang dimasukkan di URL sudah benar.
Error: There is an unknown error while executing this operation.
Error langganan tidak ditemukan
Anda mungkin melihat error berikut:
ERROR: (gcloud.alpha.container.fleet.memberships.bindings.create) NOT_FOUND: Resource 'parent resource not found for projects/...' was not found
Pastikan Anda telah mendaftarkan cluster ke fleet.