Halaman ini menjelaskan cara mengaktifkan dan melihat log untuk fleet. Dengan logging fleet, beberapa log digabungkan dan dicakup, sehingga Anda dapat menganalisis kondisi aplikasi dalam satu tampilan gabungan. Halaman ini ditujukan untuk:
- Administrator platform yang ingin mengaktifkan logging fleet dan melihat log di semua namespace.
- Operator layanan yang ingin melihat log di namespace tertentu yang dapat mereka akses.
Ringkasan
Log perangkat memungkinkan Anda melihat log di seluruh level fleet, atau untuk cakupan tim tertentu. Cakupan adalah fitur manajemen tim yang memungkinkan Anda menentukan subkumpulan log fleet dan resource lainnya per tim, dengan setiap cakupan terkait satu atau beberapa cluster anggota fleet. Untuk mengetahui informasi selengkapnya tentang cakupan, lihat Mengelola tim untuk fleet Anda.
Anda dapat melihat dua jenis log fleet:
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 dalam cakupan fleet tertentu dengan beberapa namespace tingkat fleet.
Melihat log cakupan fleet bersifat opsional. Jika tidak ingin menyiapkan pengelolaan tim, Anda masih dapat menggunakan logging fleet untuk melihat log default.
Log dapat dirutekan ke bucket log yang berbeda dalam project host perangkat dengan tampilan yang berbeda untuk kontrol akses. Periode retensi default bucket log adalah 30 hari. Anda dapat mengonfigurasi periode ini jika diperlukan.
Ada dua mode yang didukung untuk perutean log dengan fleet berisi cluster dari beberapa project (pendaftaran lintas-project):
MOVE
: Semua log dipindahkan ke project host fleet. Jika cluster dalam fleet termasuk dalam project lain, log-nya tidak akan disimpan dalam project Google Cloud asli.COPY
: Semua log dikirim ke project host fleet. Jika cluster dalam fleet termasuk dalam project lain, log-nya juga akan dipertahankan di project Google Cloud asli.
Sebelum memulai
Jika Anda telah membuat bucket, sink, dan menetapkan filter pengecualian Cloud Logging secara manual, pastikan nama yang Anda tetapkan untuk objek ini tidak bertentangan dengan batasan penamaan logging perangkat. Jika ada konflik penamaan, hubungi Dukungan sebelum melanjutkan.
Pastikan cluster yang lognya ingin Anda lihat telah terdaftar ke fleet pilihan Anda.
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 inventaris.
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 dari project host fleet Anda. Pelajari cara menemukan nilai ini.
Menyiapkan cakupan, namespace, dan workload
Jika ingin melihat log cakupan fleet, Anda harus membuat cakupan fleet dan fleet namespace, selain menyiapkan beban kerja 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 dalam 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 perlu men-deploy workload dalam cluster ke namespace fleet yang dikonfigurasi pada langkah sebelumnya. Langkah ini berlaku baik Anda memilih untuk melihat log default, log cakupan fleet, 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 akan melihat error jika namespace fleet gagal dibuat karena beberapa alasan. Dalam hal ini, jalankan perintah berikut untuk membuat namespace lagi, dan jalankan kembali perintah deployment workload:
kubectl create namespace NAMESPACE_NAME
Aktifkan logging fleet
Bagian ini menjelaskan cara mengaktifkan fitur logging fleet dan memberikan akses tim untuk melihat log.
gcloud
Anda dapat mengaktifkan logging fleet menggunakan Google Cloud CLI dengan menentukan kolom konfigurasi untuk fitur tersebut dalam file JSON atau YAML. Berikut adalah contoh konfigurasi untuk logging fleet 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 dalam contoh sebelumnya, sink log akan dibuat dengan awalan fleet-o11y-
. Sink log ini dibuat di project Google Cloud untuk mengarahkan 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
pada 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 dipertahankan di project Google Cloud asli, sedangkan log cakupan fleet akan dikirim ke project host fleet, dan tidak disimpan dalam project Google Cloud.
Tambahkan konfigurasi yang Anda pilih ke file JSON, dan update perangkat:
gcloud container fleet fleetobservability update \ --logging-config=JSON_FILE
Ganti JSON_FILE dengan nama file Anda.
Terraform
- Fitur kemampuan observasi fleet diaktifkan secara default. Jika ini pertama kalinya Anda menggunakan Terraform untuk mengelola fitur kemampuan observasi fleet, 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 fleet 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 dalam contoh sebelumnya, sink log akan dibuat dengan awalan fleet-o11y-
. Sink log ini dibuat di project Google Cloud untuk mengarahkan 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 pada project host fleet, jika belum ada.
Dalam contoh ini, log default akan dikirim ke project host fleet dan dipertahankan di project Google Cloud asli, sedangkan log cakupan fleet akan dikirim ke project host fleet, dan tidak disimpan dalam project Google Cloud.
Pastikan spesifikasi fitur telah diperbarui:
gcloud container fleet fleetobservability describe
Output menunjukkan spesifikasi fleetobservability
yang diperbarui dengan konfigurasi, seperti pada 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 dibuat 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 dalam project yang berbeda (juga dikenal sebagai pendaftaran lintas-project). Untuk mengarahkan 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 tersebut menampilkan error bahwa sink log tidak dapat ditemukan, coba jalankan kembali perintah tersebut setelah satu atau dua menit. Anda dapat melihat akun layanan di kolom
writerIdentity
deskripsi sink seperti yang ditunjukkan pada 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"
Berikan akses ke log kepada tim
Bagian ini menjelaskan cara memberikan akses kepada pengguna untuk melihat log container 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 terkait 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 Anda, 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%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 aksesnya mereka miliki. Guna melihat log untuk semua namespace dalam cakupan fleet tertentu, selesaikan langkah-langkah berikut:
Setelah memilih project host perangkat, buka bagian Tim di Konsol Google Cloud.
Klik cakupan tim yang lognya ingin Anda lihat, lalu klik tab Log.
Pilih Container Logs atau Pod logs untuk memfilter tampilan log.
Guna melihat log untuk namespace tertentu dalam cakupan Anda:
- Di halaman Teams, dengan cakupan tim yang dipilih, klik tab Namespaces.
- Klik namespace yang lognya ingin Anda lihat, lalu klik tab Logs.
- Pilih Container Logs atau Pod logs 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 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_pod?jsmode=O&mods=pan_ng2&project=FLEET_HOST_PROJECT_ID
Lihat Antarmuka Logs Explorer untuk informasi selengkapnya tentang cara menganalisis data log.
Nonaktifkan logging fleet
Untuk menonaktifkan fitur logging fleet, selesaikan langkah-langkah berikut:
gcloud
Simpan konfigurasi berikut ke file bernama
disable_logging_config.json
:{ "loggingConfig": {} }
Update spesifikasi fitur
fleetobservability
:gcloud container fleet fleetobservability update \ --logging-config=disable_logging_config.json
Terraform
Dalam konfigurasi Terraform, perbarui semua mode untuk perutean 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 dibuat pada spesifikasi fleetobservability
mungkin memerlukan waktu beberapa menit untuk diterapkan.
Setelah menonaktifkan logging fleet, sink log dan filter pengecualian akan dihapus dari project Anda. Namun, semua bucket log yang dibuat untuk cakupan tersebut, dan tampilan log yang dibuat dalam bucket log akan dipertahankan. Untuk menghapus bucket log di project host fleet, lihat Menghapus bucket.
Memperbarui periode retensi data untuk bucket log
Periode retensi 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 fleet.
RETENTION_DAYS adalah jumlah hari periode retensi data baru. Untuk mengetahui opsi selengkapnya tentang mengonfigurasi bucket log, lihat Mengelola bucket.
Jika Anda memperpanjang periode retensi bucket, aturan retensi akan berlaku untuk waktu mendatang dan tidak berlaku surut. Log tidak dapat dipulihkan setelah periode retensi yang berlaku berakhir.
Referensi API
Bagian ini memberikan informasi tentang kolom yang memungkinkan yang dapat Anda tambahkan ke objek fleetobservability
.
kemampuan observasi fleet
fleetobservability
menentukan konfigurasi kemampuan observasi fleet.
Kolom | Deskripsi | Skema | Opsional |
---|---|---|---|
loggingConfig | Ditentukan jika fitur pencatatan armada diaktifkan untuk seluruh armada. Jika tidak ditentukan, fitur logging fleet dinonaktifkan untuk seluruh armada. |
loggingConfig | Benar |
loggingConfig
loggingConfig
menentukan konfigurasi fitur logging fleet dalam kemampuan observasi fleet.
Kolom | Deskripsi | Skema | Opsional |
---|---|---|---|
defaultConfig | Menetapkan perilaku perutean log untuk log default dalam fleet. | routingConfig | Benar |
fleetScopeLogsConfig | Menetapkan perilaku perutean log untuk log cakupan fleet. | routingConfig | Benar |
routingConfig
routingConfig
menentukan konfigurasi mode perutean log di fitur logging fleet.
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 disetel 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 mencadangkan nama berikut untuk objek log yang dibuatnya. Untuk menghindari perilaku yang tidak diinginkan atau tidak terduga, sebaiknya hindari penggunaan nama ini saat membuat bucket log, sink, dan menetapkan filter pengecualian 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 pada sink _Default pada 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 fleet.
Notifikasi email tentang error konfigurasi sink
Jika Anda menerima email dengan judul [ACTION REQUIRED] Cloud Logging sink configuration error in <Your GCP Project>
, berarti 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 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 keanggotaan 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.