Cloud Logging

Questa pagina spiega come utilizzare Cloud Logging per raccogliere ed eseguire query sui log dai cluster di Google Kubernetes Engine (GKE).

Panoramica

Quando Logging è abilitato nel cluster, i log vengono archiviati in un datastore permanente dedicato. Il progetto Google Cloud ha diversi log pertinenti a un cluster GKE. tra cui il log delle attività di amministrazione e di accesso ai dati, nonché il log eventi.

Un log è una raccolta di voci di log e ciascuna voce si applica a un determinato tipo di risorsa. Ecco i tipi di risorse più pertinenti per i cluster GKE:

Tipo di risorsa Nome visualizzato
k8s_cluster Cluster Kubernetes
gke_cluster Operazioni del cluster GKE
container_gke Container GKE
nodo_gke Operazioni pool di nodi GKE

Per informazioni dettagliate sulle voci di log che si applicano ai tipi di risorse Cluster Kubernetes e Operazioni GKE Cluster, consulta Log di controllo.

anche se GKE memorizza i log, non vengono archiviati in modo permanente. Ad esempio, i log dei container GKE vengono rimossi quando viene rimosso il pod host, quando lo spazio sul disco in cui sono archiviati si esaurisce o quando vengono sostituiti da log più recenti. I log di sistema vengono rimossi periodicamente per liberare spazio per nuovi log. Gli eventi del cluster vengono rimossi dopo un'ora.

Per i log di container e di sistema, GKE esegue il deployment di un agente di logging per nodo che legge i log dei container, aggiunge metadati utili e li archivia. L'agente Logging verifica la presenza di log dei container nelle seguenti origini:

  • Log di output ed errori standard da processi containerizzati
  • kubelet e log di runtime del container
  • Log per componenti di sistema, come script di avvio VM.

Per gli eventi, GKE utilizza un deployment nello spazio dei nomi kube-system che raccoglie automaticamente gli eventi e li invia a Logging.

Il logging è compatibile con il formato JSON. I log vengono archiviati per un massimo di 30 giorni.

Prima di iniziare

Per preparare questa attività, procedi nel seguente modo:

  • Assicurati di aver attivato l'API Google Kubernetes Engine.
  • Abilita API Google Kubernetes Engine
  • Assicurati di aver installato Cloud SDK.
  • Imposta l'ID progetto predefinito:
    gcloud config set project [PROJECT_ID]
  • Se utilizzi cluster di zona, imposta la zona di calcolo predefinita:
    gcloud config set compute/zone [COMPUTE_ZONE]
  • Se utilizzi cluster regionali, imposta l'area geografica di calcolo predefinita:
    gcloud config set compute/region [COMPUTE_REGION]
  • Aggiorna gcloud alla versione più recente:
    gcloud components update

Attivazione di Logging

Puoi creare un cluster con Logging abilitato o abilitare il logging in un cluster esistente.

Creazione di un cluster con Logging

gcloud

Quando crei un cluster, viene impostato automaticamente il flag --enable-cloud-logging, che abilita Logging nel cluster.

Per disattivare questo comportamento predefinito, imposta il flag --no-enable-cloud-logging.

Console

  1. In Cloud Console, vai alla pagina Kubernetes Engine > Cluster Kubernetes:

    Vai ai cluster Kubernetes

  2. Fai clic su Crea cluster.

  3. Configura il cluster in base alle tue esigenze.

  4. Fai clic su Advanced options (Opzioni avanzate). Nella sezione Funzionalità aggiuntive, abilita Abilita il servizio Stackdriver Logging.

  5. Fai clic su Crea.

Abilitazione di Logging per un cluster esistente

gcloud

Per abilitare Logging per un cluster esistente, esegui il comando seguente, dove [CLUSTER_NAME] è il nome del cluster.

gcloud container clusters update [CLUSTER_NAME] --logging-service logging.googleapis.com

console

  1. In Cloud Console, vai alla pagina Kubernetes Engine > Cluster Kubernetes:

    Vai ai cluster Kubernetes

  2. Fai clic su Modifica.

  3. Imposta il valore del menu a discesa Stackdriver Logging su Attivato.

  4. Fai clic su Salva.

Visualizzazione dei log

Puoi visualizzare i log in Esplora log di Google Cloud Console.

Per ulteriori informazioni sulla visualizzazione dei log, incluse le modalità di creazione di query di base e avanzate, consulta Visualizzazione dei log nella documentazione di Logging.

Esempi di query

  • Log delle query dai pod con etichetta nginx-deployment:

    resource.type="container"
    resource.labels.pod_id:"nginx-deployment-"
  • Log delle query nello spazio dei nomi prod con gravità WARNING o superiore:

    resource.type="container"
    resource.labels.namespace_id="prod"
    severity>WARNING

    Per ulteriori informazioni sui livelli di gravità, consulta le sezioni Log Severity.

  • Log delle query da un container specifico, my-container, in un pod specifico, my-pod, con un payload di testo:

    resource.type="container"
    resource.labels.container_name="my_container"
    resource.labels.pod_id="my_pod"
    textPayload:"abracadabra"

Limitazioni

È possibile che le voci inserite in più righe (voci con caratteri del feed di riga) non vengano elaborate correttamente. Per evitare questo problema, aggrega i log in stringhe JSON composte da una sola riga.

Disattivazione del logging

gcloud

Per disabilitare Logging e Monitoring legacy per un cluster esistente, esegui il comando seguente, in cui [CLUSTER_NAME] è il nome del cluster.

gcloud beta container clusters update [CLUSTER_NAME] --logging-service none

Se esegui Cloud Operations for GKE nel tuo cluster, devi disabilitare sia il monitoraggio sia il logging utilizzando gcloud beta per impostare i seguenti flag nel tuo cluster:

gcloud beta container clusters update [CLUSTER_NAME] --logging-service none --monitoring-service none

Console

  1. In Cloud Console, vai alla pagina Kubernetes Engine > Cluster Kubernetes:

    Vai ai cluster Kubernetes

  2. Fai clic su Modifica per il cluster da modificare.

  3. Imposta il valore del menu a discesa Stackdriver Logging su Disattivato.

  4. Fai clic su Salva.

Passaggi successivi