Melihat log fleet

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

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

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

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

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

  1. 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.
    
  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." \
        --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.

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

  1. Setelah memilih project host perangkat, buka bagian Tim di Konsol Google Cloud.

    Buka Teams

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

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

Guna melihat log untuk namespace tertentu dalam cakupan Anda:

  1. Di halaman Teams, dengan cakupan tim yang 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 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

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

    {
      "loggingConfig": {}
    }
    
  2. 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
  • 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 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.