Melihat log fleet

Halaman ini menjelaskan cara mengaktifkan dan melihat log untuk fleet. Dengan logging fleet, beberapa log digabungkan dan dicakup bersama, memungkinkan Anda 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 Fleet memungkinkan Anda melihat log di seluruh level fleet, atau untuk cakupan tim tertentu. Cakupan adalah fitur pengelolaan tim yang memungkinkan Anda menentukan subkumpulan log fleet dan resource lainnya per tim, dengan setiap cakupan dikaitkan dengan 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 milik 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 di project host fleet 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 yang berisi cluster dari beberapa project (pendaftaran lintas-project):

  • MOVE: Semua log dipindahkan ke project fleet host. Jika cluster dalam fleet merupakan bagian dari project berbeda, lognya tidak akan dipertahankan dalam project Google Cloud asli.

  • COPY: Semua log dikirim ke project fleet host. Jika cluster dalam fleet termasuk dalam project berbeda, lognya juga akan dipertahankan dalam project Google Cloud asli.

Sebelum memulai

  1. 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 armada. Jika ada konflik penamaan, hubungi Dukungan sebelum melanjutkan.

  2. Pastikan cluster yang lognya ingin Anda lihat telah terdaftar ke fleet yang Anda pilih.

  3. Jika Anda belum menginstalnya, instal Google Cloud CLI dengan mengikuti petunjuk penginstalan. Anda memerlukan versi 424.0.0 atau yang lebih baru untuk melihat log perangkat.

  4. 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:

Menyiapkan cakupan, namespace, dan workload

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 pada tingkat cakupan, dan belum menyiapkan cakupan, ikuti petunjuk di Mengelola tim untuk fleet Anda guna membuat cakupan, menambahkan cluster ke cakupan, dan menyiapkan namespace fleet.

Menyiapkan workload

Untuk melihat data log dari aplikasi, Anda perlu men-deploy beban kerja 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 ini 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 kembali perintah deployment workload:

  kubectl create namespace NAMESPACE_NAME
  

Aktifkan logging perangkat

Bagian ini menjelaskan cara mengaktifkan fitur logging perangkat dan memberikan akses kepada 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 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.

Saat kolom defaultConfig atau fleetScopeLogsConfig diaktifkan dengan mode COPY atau MOVE, seperti ditunjukkan dalam contoh sebelumnya, sink log akan dibuat dengan awalan fleet-o11y-. Sink log ini dibuat pada project Google Cloud untuk merutekan log target dari project cluster ke project host fleet.

Saat 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. Perlu diperhatikan bahwa Anda tidak dapat mengubah region bucket.

Dalam contoh ini, log default akan dikirim ke project host fleet dan dipertahankan dalam project Google Cloud asli, sedangkan log cakupan fleet akan dikirim ke project host fleet, dan tidak disimpan dalam project Google Cloud.

  • Tambahkan konfigurasi pilihan Anda ke file JSON, dan update fleet-nya:

    gcloud container fleet fleetobservability update \
            --logging-config=JSON_FILE
    

Ganti JSON_FILE dengan nama nama file Anda.

Terraform

  • Fitur kemampuan observasi perangkat diaktifkan secara default. Jika ini adalah 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"
          }
        }
      }
    }
  }

Saat kolom default_config atau fleet_scope_logs_config diaktifkan dengan mode COPY atau MOVE, seperti ditunjukkan dalam contoh sebelumnya, sink log akan dibuat dengan awalan fleet-o11y-. Sink log ini dibuat pada project Google Cloud untuk merutekan log target dari project cluster ke project host fleet.

Saat 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 dipertahankan dalam project Google Cloud asli, sedangkan log cakupan fleet akan dikirim ke project host fleet, dan tidak disimpan dalam project Google Cloud.

Pastikan spesifikasi fitur diperbarui:

   gcloud container fleet fleetobservability describe
  

Output menunjukkan spesifikasi fleetobservability yang diupdate 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'

Perubahan apa pun 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 di project yang berbeda (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.

  1. Untuk mendapatkan kredensial akun layanan dari sink dalam 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 yang tidak dapat ditemukan oleh sink log, coba jalankan kembali perintah tersebut setelah satu atau dua menit. Anda dapat melihat akun layanan di kolom writerIdentity deskripsi sink seperti 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.iam.gserviceaccount.com
    
  2. 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.iam.gserviceaccount.com" \
        --role "roles/logging.bucketWriter"
    

Beri tim akses ke log

Bagian ini menjelaskan cara memberikan akses kepada pengguna untuk melihat log container dan log Pod.

  1. 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
    
  2. 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\""
          }
        }
      ],
    }
    
  3. Perbarui kebijakan IAM:

    gcloud projects set-iam-policy FLEET_HOST_PROJECT_ID output.json
    

Untuk opsi selengkapnya tentang memberikan akses, lihat Memberikan 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 dalam bucket _Default di project host fleet Anda, isi variabel di URL berikut, salin dan tempel ke browser:

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. Guna melihat log untuk semua namespace dalam cakupan fleet tertentu, selesaikan langkah-langkah berikut:

  1. Setelah memilih project Fleet host, buka bagian Teams di Konsol Google Cloud.

    Buka Teams

  2. Klik cakupan tim yang lognya ingin Anda lihat, lalu klik tab Logs.

  3. Pilih Container Logs atau Pod logs untuk memfilter tampilan log.

Untuk melihat log untuk namespace tertentu dalam cakupan Anda:

  1. Di halaman Teams, dengan cakupan tim Anda dipilih, klik tab Namespaces.
  2. Klik namespace yang lognya ingin Anda lihat, lalu klik tab Logs.
  3. Pilih Container Logs atau Pod logs untuk memfilter tampilan log.

Atau, untuk melihat log container, isi variabel di URL berikut, lalu salin dan tempel variabel tersebut 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, lalu salin dan tempel variabel 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.

Nonaktifkan logging perangkat

Untuk menonaktifkan fitur logging perangkat, selesaikan langkah-langkah berikut:

gcloud

  1. Simpan konfigurasi berikut ke file bernama disable_logging_config.json:

    {
      "loggingConfig": {}
    }
    
  2. Perbarui spesifikasi fitur fleetobservability:

    gcloud container fleet fleetobservability update \
            --logging-config=disable_logging_config.json
    

Terraform

Dalam konfigurasi Terraform Anda, 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 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'
  

Perubahan apa pun 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 Anda, 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 terkait cara mengonfigurasi bucket log, lihat Mengelola bucket.

Jika Anda memperpanjang periode retensi bucket, aturan retensi akan berlaku untuk data selanjutnya dan tidak berlaku secara surut. Log tidak dapat dipulihkan setelah periode retensi data yang berlaku berakhir.

Referensi API

Bagian ini memberikan informasi tentang kemungkinan kolom yang dapat Anda tambahkan ke objek fleetobservability.

kemampuan observasi perangkat

fleetobservability menentukan konfigurasi kemampuan observasi fleet.

Kolom Deskripsi Skema Opsional
loggingConfig

Ditentukan apakah fitur logging fleet diaktifkan untuk seluruh fleet.

Jika tidak ditentukan, fitur logging fleet akan dinonaktifkan untuk seluruh fleet.

loggingConfig Benar

loggingConfig

loggingConfig menentukan konfigurasi fitur logging fleet dalam kemampuan observasi fleet.

Kolom Deskripsi Skema Opsional
defaultConfig Menetapkan perilaku pemilihan rute log untuk log default dalam fleet. routingConfig Benar
fleetScopeLogsConfig Menetapkan perilaku pemilihan rute log untuk log cakupan fleet. routingConfig Benar

routingConfig

routingConfig menentukan konfigurasi mode pemilihan rute log dalam fitur logging fleet.

Kolom Deskripsi Skema Opsional
mode

Ditetapkan 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, 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 bawah sink _Default project cluster.
fleetScopeLogsConfig Bucket log fleet-o11y-scope-SCOPE_NAME
  • Tampilan log untuk log container di bucket
  • fleet-o11y-scope-SCOPE_NAME-k8s_container
  • Tampilan log untuk log Pod di bucket
  • 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 perangkat.

    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 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 dalam 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.