Visualizza i log del parco veicoli

Questa pagina descrive come attivare e visualizzare i log per i parchi. Con il logging del parco risorse, più log vengono aggregati e raggruppati, consentendoti di analizzare l'integrità delle tue applicazioni in un'unica visualizzazione consolidata. Questa pagina è rivolta a:

  • Amministratori della piattaforma che vogliono attivare il logging del parco e visualizzare i log in tutti gli spazi dei nomi.
  • Operatori di servizi che vogliono visualizzare i log negli spazi dei nomi specifici a cui hanno accesso.

Panoramica

I log del parco risorse ti consentono di visualizzare i log a livello dell'intero parco risorse o per ambiti di team specifici. Gli ambiti sono una funzionalità di gestione dei team che ti consente di definire sottoinsiemi di log del parco risorse e altre risorse in base al team, con ogni ambito associato a uno o più cluster membro del parco risorse. Per saperne di più sugli ambiti, consulta Gestire i team per il parco risorse.

Puoi visualizzare due tipi di log del parco:

  • Log predefiniti: tutti i log Kubernetes (tranne gli audit log) che non appartengono a un ambito della flotta specifico con i seguenti tipi di risorse:

    • k8s_container
    • k8s_pod
    • k8s_node
    • k8s_cluster
    • k8s_control_plane_components
  • Log a livello di parco risorse: log dei container e dei pod per le applicazioni di proprietà di un team di cui è stato eseguito il deployment in un ambito del parco risorse specifico con più spazi dei nomi a livello di parco risorse.

La visualizzazione dei log a livello di parco è facoltativa. Se non vuoi configurare la gestione del team, puoi comunque utilizzare la registrazione del parco per visualizzare i log predefiniti.

I log possono essere indirizzati a diversi bucket di log nel progetto host del parco risorse con viste diverse per controllo dell'accesso#39;accesso. Il periodo di conservazione predefinito di un bucket di log è di 30 giorni. Se necessario, puoi configurare questo periodo.

Esistono due modalità supportate per il routing dei log in cui i parchi risorse contengono cluster di più progetti (registrazione tra progetti):

  • MOVE: tutti i log vengono spostati nel progetto host del parco risorse. Se un cluster del parco risorse appartiene a un progetto diverso, i relativi log non vengono conservati nel progetto Google Cloud originale.

  • COPY: tutti i log vengono inviati al progetto host del parco risorse. Se un cluster del parco risorse appartiene a un progetto diverso, i relativi log vengono conservati anche nel progetto Google Cloud originale.

Prima di iniziare

  1. Se hai già creato manualmente bucket, sink e filtri di esclusione impostati di Cloud Logging, assicurati che i nomi assegnati a questi oggetti non siano in conflitto con le limitazioni di denominazione dei log della flotta. Se si verifica un conflitto di nomi, contatta l'assistenza prima di procedere.

  2. Assicurati che i cluster di cui vuoi visualizzare i log siano stati registrati al parco risorse scelto.

  3. Se non l'hai già installato, installa Google Cloud CLI seguendo le istruzioni di installazione. Per visualizzare i log del parco veicoli, è necessaria la versione 424.0.0 o successive.

  4. Assicurati che nel progetto host del parco risorse siano abilitate tutte le API richieste, inclusa l'API Anthos:

    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
    

    dove:

Prepara ambiti, spazi dei nomi e carichi di lavoro

Se vuoi visualizzare i log a livello di parco risorse, devi creare un ambito del parco risorse e un ambito di nome del parco risorse, oltre a preparare i carichi di lavoro per la raccolta dei log.

Prima di continuare, imposta il progetto predefinito per Google Cloud CLI eseguendo il seguente comando:

gcloud config set project FLEET_HOST_PROJECT_ID

Creare ambiti e spazi dei nomi

Se vuoi visualizzare i log a livello di ambito e non hai ancora configurato gli ambiti, segui le istruzioni riportate in Gestire i team per il parco risorse per creare ambiti, aggiungere cluster agli ambiti e configurare gli spazi dei nomi del parco risorse.

Prepara i workload

Per visualizzare i dati dei log delle tue applicazioni, devi eseguire il deployment dei carichi di lavoro in un cluster nello spazio dei nomi del parco risorse configurato nel passaggio precedente. Questo passaggio è applicabile se scegli di visualizzare i log predefiniti, i log a livello di parco risorse o entrambi. Ecco un esempio di configurazione del carico di lavoro:

  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']

Dopo aver eseguito il deployment della risorsa, potresti visualizzare un errore se per qualche motivo non è stato possibile creare lo spazio dei nomi del parco risorse. In questo caso, esegui il comando seguente per creare di nuovo lo spazio dei nomi ed esegui di nuovo il comando di deployment del carico di lavoro:

  kubectl create namespace NAMESPACE_NAME
  

Abilita il logging del parco veicoli

Questa sezione descrive come attivare la funzionalità di logging del parco risorse e concedere al team l'accesso per visualizzare i log.

gcloud

  • Puoi attivare il logging del parco utilizzando Google Cloud CLI specificando i campi di configurazione della funzionalità in un file JSON o YAML. Ecco un esempio di configurazione per la registrazione del parco in formato JSON:

    {
      "loggingConfig": {
          "defaultConfig": {
              "mode": "COPY"
          },
          "fleetScopeLogsConfig": {
              "mode": "MOVE"
          }
      }
    }
    

Per visualizzare tutti i campi che puoi configurare per questa funzionalità, consulta la documentazione di riferimento dell'API.

Quando i campi defaultConfig o fleetScopeLogsConfig sono abilitati con le modalità COPY o MOVE, come mostrato nell'esempio precedente, viene creato un canale di log con il prefisso fleet-o11y-. Questo canale di destinazione dei log viene creato nel progetto Google Cloud per instradare i log di destinazione dal progetto del cluster al progetto host del parco risorse.

Quando fleetScopeLogsConfig è attivato, viene creato anche un bucket di log con il nome fleet-o11y-scope-$SCOPE_NAME nella regione global nel progetto host del parco risorse, se non esiste già. Tieni presente che non puoi modificare la regione del bucket.

In questo esempio, i log predefiniti verranno inviati al progetto host del parco risorse e conservati nel progetto Google Cloud originale, mentre i log a livello di parco risorse verranno inviati al progetto host del parco risorse e non conservati nel progetto Google Cloud .

  • Aggiungi la configurazione scelta a un file JSON e aggiorna il parco:

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

Sostituisci JSON_FILE con il nome del file.

Terraform

  • La funzionalità di osservabilità del parco risorse è attiva per impostazione predefinita. Se è la prima volta che utilizzi Terraform per gestire la funzionalità di osservabilità del parco risorse, importa la funzionalità in Terraform eseguendo il seguente comando:
terraform import google_gke_hub_feature.feature projects/FLEET_HOST_PROJECT_ID/locations/global/features/fleetobservability
  • Puoi attivare la registrazione del parco con Terraform utilizzando un modulo Terraform.

Ad esempio, puoi aggiungere il seguente blocco alla configurazione 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"
          }
        }
      }
    }
  }

Quando i campi default_config o fleet_scope_logs_config sono abilitati con le modalità COPY o MOVE, come mostrato nell'esempio precedente, viene creato un canale di log con il prefisso fleet-o11y-. Questo canale di destinazione dei log viene creato nel progetto Google Cloud per instradare i log di destinazione dal progetto del cluster al progetto host del parco risorse.

Quando fleet_scope_logs_config è attivato, nel progetto host del parco risorse viene creato anche un bucket dei log con il nome fleet-o11y-scope-$SCOPE_NAME, se non esiste già.

In questo esempio, i log predefiniti verranno inviati al progetto host del parco risorse e conservati nel progetto Google Cloud originale, mentre i log a livello di parco risorse verranno inviati al progetto host del parco risorse e non conservati nel progetto Google Cloud .

Verifica che le specifiche della funzionalità siano aggiornate:

   gcloud container fleet fleetobservability describe
  

L'output mostra la specifica fleetobservability aggiornata con la configurazione, come nell'esempio seguente:

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'

L'applicazione di eventuali modifiche apportate alle specifiche fleetobservability potrebbe richiedere alcuni minuti.

Configurare le autorizzazioni di logging tra progetti

Questa sezione è obbligatoria solo se registri un cluster in un parco risorse di un altro progetto (nota anche come registrazione tra progetti). Per instradare i log dai progetti di cluster al progetto host del parco risorse, devi concedere il ruolo roles/logging.bucketWriter all'account di servizio di logging da ogni progetto di cluster.

  1. Per ottenere le credenziali dell'account di servizio dai sink nei progetti di cluster, esegui il seguente comando:

    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
    

    Se il comando restituisce un errore che indica che non è possibile trovare lsink di log, prova a eseguire nuovamente il comando dopo un minuto o due. Puoi visualizzare l'account di servizio nel campo writerIdentity della descrizione della destinazione, come mostrato nell'esempio seguente:

    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. Concedi il ruolo roles/logging.bucketWriter all'account di servizio recuperato:

    gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
        --member "SERVICE_ACCOUNT" \
        --role "roles/logging.bucketWriter"
    

    dove:

    • SERVICE_ACCOUNT è il nome dell'account di servizio recuperato dal passaggio precedente. Ad esempio:
    gcloud projects add-iam-policy-binding FLEET_HOST_PROJECT_ID \
        --member "serviceAccount:service-123456@gcp-sa-logging.iam.gserviceaccount.com" \
        --role "roles/logging.bucketWriter"
    

Concedere al team l'accesso ai log

La sezione descrive come concedere agli utenti l'accesso per visualizzare i log dei container e dei pod.

  1. Recupera il criterio IAM per il progetto del parco risorse e scrivilo in un file locale in formato JSON:

    gcloud projects get-iam-policy FLEET_HOST_PROJECT_ID --format json > output.json
    
  2. Aggiungi una condizione IAM che consenta all'account utente di visualizzare i dati dal bucket dei log che hai creato. Ecco un esempio per visualizzare i log dei container e dei 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. Aggiorna il criterio IAM:

    gcloud projects set-iam-policy FLEET_HOST_PROJECT_ID output.json
    

Per altre opzioni per la concessione dell'accesso, consulta Controllare l'accesso a una visualizzazione dei log.

Visualizza i log del parco veicoli

Gli amministratori della piattaforma hanno accesso per visualizzare tutti i log in tutti gli spazi dei nomi.

Log predefiniti

Per visualizzare tutti i log predefiniti nel bucket _Default nel progetto host del tuo parco, compila le variabili nel seguente URL, copialo e incollalo nel 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 dei container e dei pod a livello di ambito del parco risorse

Gli operatori di servizi possono visualizzare i log negli spazi dei nomi a cui hanno accesso. Per visualizzare i log di tutti gli spazi dei nomi in un ambito del parco veicoli specifico:

  1. Con il progetto host del parco risorse selezionato, vai alla sezione Team nella console Google Cloud.

    Vai a Teams

  2. Fai clic sull'ambito del team di cui vuoi visualizzare i log e poi sulla scheda Log.

  3. Seleziona Log dei container o Log dei pod per filtrare la visualizzazione dei log.

Per visualizzare i log relativi a uno spazio dei nomi specifico nel tuo ambito:

  1. Nella pagina Team, con l'ambito del team selezionato, fai clic sulla scheda Spazi dei nomi.
  2. Fai clic sullo spazio dei nomi di cui vuoi visualizzare i log e poi sulla scheda Log.
  3. Seleziona Log dei contenitori o Log dei pod per filtrare la visualizzazione dei log.

In alternativa, per visualizzare i log del contenitore, compila le variabili nel seguente URL, copialo e incollalo nel browser:

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

Per visualizzare i log dei pod in un ambito del parco risorse specifico, compila le variabili nel seguente URL, copialo e incollalo nel browser:

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

Per ulteriori informazioni su come analizzare i dati dei log, consulta Interfaccia di Esplora log.

Disattivare il logging del parco veicoli

Per disattivare la funzionalità di registrazione del parco, svolgi i seguenti passaggi:

gcloud

  1. Salva la seguente configurazione in un file denominato disable_logging_config.json:

    {
      "loggingConfig": {}
    }
    
  2. Aggiorna la specifica della funzionalità fleetobservability:

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

Terraform

Nella configurazione di Terraform, aggiorna tutte le modalità di routing dei log su MODE_UNSPECIFIED. Ecco un esempio:

  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"
          }
        }
      }
    }
  }

Verifica che le specifiche della funzionalità siano aggiornate:

   gcloud container fleet fleetobservability describe
  

L'output mostra la specifica fleetobservability aggiornata con la tua configurazione:

  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'
  

L'applicazione di eventuali modifiche apportate alle specifiche fleetobservability potrebbe richiedere alcuni minuti.

Dopo aver disattivato la registrazione del parco risorse, gli elementi di destinazione dei log e i filtri di esclusione verranno rimossi dai progetti. Tuttavia, tutti i bucket di log creati per l'ambito e le visualizzazioni dei log create nel bucket di log verranno conservati. Per eliminare il bucket dei log nel progetto host del parco risorse, consulta Eliminare un bucket.

Aggiorna il periodo di conservazione per i bucket di log

Il periodo di conservazione predefinito di un bucket di log è di 30 giorni. Per aggiornare questo periodo, esegui il seguente comando:

gcloud logging buckets update fleet-o11y-scope-SCOPE_NAME --location=global --retention-days=RETENTION_DAYS

dove:

  • SCOPE_NAME è il nome dell'ambito del parco risorse.

  • RETENTION_DAYS è il numero di giorni del nuovo periodo di conservazione. Per altre opzioni di configurazione dei bucket di log, vedi Gestire i bucket.

Se estendi il periodo di conservazione di un bucket, le regole di conservazione si applicano in futuro e non in modo retroattivo. I log non possono essere recuperati al termine del periodo di conservazione applicabile.

Riferimento API

Questa sezione fornisce informazioni sui possibili campi che puoi aggiungere all'oggetto fleetobservability.

fleetobservability

fleetobservability definisce la configurazione dell'osservabilità del parco risorse.

Campo Descrizione Schema Facoltativo
loggingConfig

Specifica se la funzionalità di logging del parco risorse è attivata per l'intero parco risorse.

Se non specificato, la funzionalità di registrazione del parco veicoli è disattivata per l'intero parco veicoli.

loggingConfig Vero

loggingConfig

loggingConfig definisce la configurazione delle funzionalità di logging del parco risorse nell'osservabilità del parco risorse.

Campo Descrizione Schema Facoltativo
defaultConfig Imposta il comportamento di routing dei log per i log predefiniti nel parco risorse. routingConfig Vero
fleetScopeLogsConfig Imposta il comportamento di routing dei log per i log a livello di parco risorse. routingConfig Vero

routingConfig

routingConfig definisce la configurazione della modalità di routing dei log nella funzionalità di logging del parco risorse.

Campo Descrizione Schema Facoltativo
modalità

Specificato per attivare il routing dei log e non specificato o MODE_UNSPECIFIED per disattivare il routing dei log.

Se impostato su COPY, i log verranno copiati nel progetto di destinazione.

Se impostato su MOVE, i log verranno spostati nel progetto di destinazione.

Stringa; uno dei seguenti valori: MOVE, COPY e MODE_UNSPECIFIED Vero

Restrizioni di denominazione

Quando l'osservabilità del parco risorse è abilitata, il controller di osservabilità del parco risorse riserva i seguenti nomi per gli oggetti di log che crea. Per evitare comportamenti indesiderati o imprevisti, ti consigliamo di evitare di utilizzare questi nomi quando crei bucket di log, sink e filtri di esclusione impostati.

Funzionalità attivata Oggetto creato Nome utilizzato dall'osservabilità del parco risorse
defaultConfig Sink fleet-o11y-FLEET_PROJECT_NUMBER-default
Filtro di esclusione. fleet-o11y-FLEET_PROJECT_NUMBER-default-exclusion. Questo nome è riservato nell'emissario _Default del progetto del cluster.
fleetScopeLogsConfig Bucket di log fleet-o11y-scope-SCOPE_NAME
  • Visualizzazione dei log dei container nel bucket
  • fleet-o11y-scope-SCOPE_NAME-k8s_container
  • Visualizzazione dei log per i log dei pod nel bucket
  • fleet-o11y-scope-SCOPE_NAME-k8s_pod
    Sink fleet-o11y-FLEET_PROJECT_NUMBER-scope-SCOPE_NAME
    Filtro di esclusione fleet-o11y-FLEET_PROJECT_NUMBER-scope-exclusion

    Risoluzione dei problemi

    Questa sezione descrive come risolvere i problemi relativi al logging del parco risorse.

    Notifica via email relativa a un errore di configurazione del sink

    Se hai ricevuto un'email con il titolo [ACTION REQUIRED] Cloud Logging sink configuration error in <Your GCP Project>, significa che l'account di servizio del tuo sink di log non dispone dell'autorizzazione per scrivere i log nella destinazione del sink. Per risolvere il problema, segui i passaggi descritti in Autorizzazioni di accesso ai log tra progetti.

    Messaggio di errore sconosciuto dall'interfaccia utente di Cloud Logging

    Se nell'interfaccia utente di Cloud Logging viene visualizzato il seguente errore, verifica che le variabili project_id e scope inserite nell'URL siano corrette.

    Error: There is an unknown error while executing this operation.
    

    Errore: abbonamento non trovato

    Potresti visualizzare il seguente errore:

    ERROR: (gcloud.alpha.container.fleet.memberships.bindings.create) NOT_FOUND: Resource 'parent resource not found for projects/...' was not found
    

    Assicurati di aver registrato il cluster in un parco risorse.