Utilizzo di Cloud Logging con Container-Optimized OS

Container-Optimized OS include un agente Logging che esporta alcuni log di sistema e dei container in Cloud Logging. Fino a quando le immagini di Container-Optimized OS 101, basate su x86, utilizzavano un agente di logging containerizzato basato su fluentd. Container-Optimized OS 105 ha iniziato a distribuire un'implementazione alternativa di agente Logging, fluent-bit. A partire da Container-Optimized OS 109, l'agente Logging fluent-bit è l'impostazione predefinita. L'agente Logging legacy, fluentd, verrà rimosso in Container-Optimized OS 113.

Tutte le versioni delle immagini di Container-Optimized OS basate su Arm inviano l'agente di logging fluent-bit.

Abilita l'agente Logging

L'agente Logging è disabilitato per impostazione predefinita. Puoi abilitare questa funzionalità quando crei una nuova istanza o ne aggiorni una esistente.

Requisiti di accesso

Cloud Logging fornisce i ruoli IAM che puoi utilizzare per concedere l'accesso appropriato. Per visualizzare i log in un progetto, devi avere il ruolo roles/logging.viewer e le applicazioni devono avere l'autorizzazione per scrivere i log. Puoi concedere questa autorizzazione assegnando il ruolo IAM roles/logging.logWriter all'account di servizio per un'applicazione.

Per ulteriori informazioni sulle autorizzazioni e i ruoli, consulta Ruoli predefiniti.

Crea un'istanza con un agente Logging abilitato

Console

Per eseguire un'istanza di Compute Engine su Container-Optimized OS con l'agente di logging fluent-bit abilitato, esegui questi passaggi:

  1. Apri la pagina di creazione dell'istanza Compute Engine nella console Google Cloud.

    Crea una nuova istanza Compute Engine

  2. Specifica un nome per l'istanza.

  3. Nella sezione Disco di avvio, seleziona un'immagine Container-Optimized OS.

  4. Fai clic su Gestione, sicurezza, dischi, networking, single-tenancy per espandere le opzioni aggiuntive.

  5. Nella scheda Gestione, scorri fino alla sezione Metadati. Aggiungi una nuova voce di metadati, con Chiave come google-logging-enabled e Valore come true.

  6. (Facoltativo) Specifica eventuali altre opzioni per il tuo caso d'uso. Per ulteriori dettagli, consulta Creazione e configurazione delle istanze.

  7. Fai clic su Crea per creare e avviare l'istanza.

gcloud

Per eseguire un'istanza Compute Engine su Container-Optimized OS con l'agente Logging abilitato, utilizza il comando gcloud compute instances create e includi google-logging-enabled=true nei metadati. Ad esempio:

gcloud compute instances create instance-name \
    --image-family cos-stable \
    --image-project cos-cloud \
    --zone compute-zone \
    --metadata google-logging-enabled=true

Sostituisci quanto segue:

  • instance-name: il nome dell'istanza VM.
  • compute-zone: la zona di computing per l'istanza.

Per ulteriori informazioni sul comando gcloud, consulta la documentazione di riferimento gcloud compute instances create. Per maggiori dettagli sulla creazione di istanze di Container-Optimized OS, consulta Creazione e configurazione di istanze.

Selezione dell'agente di logging

Le immagini Container-Optimized OS 105 e 109 basate su x86 prevedono due implementazioni dell'agente Logging: fluentd (legacy) e fluent-bit. Container-Optimized OS 105 utilizza fluente per impostazione predefinita, mentre Container-Optimized OS 109 usa fluent-bit per impostazione predefinita. Puoi utilizzare la voce di metadati google-logging-use-fluentbit per modificare il comportamento predefinito.

Per utilizzare l'agente di logging fluent-bit su Container-Optimized OS 105, imposta il valore google-logging-use-fluentbit su true.

Per utilizzare l'agente Logging fluente su Container-Optimized OS 109, imposta il valore di google-logging-use-fluentbit su false.

Abilita l'agente Logging nei metadati del progetto

A partire dalla versione milestone 97, il logging può essere abilitato nei metadati del progetto:

  gcloud compute project-info add-metadata \
    --metadata google-logging-enabled=true

Log degli accessi

Console

  1. Vai alla pagina Istanze VM.

    Vai alla pagina Istanze VM

  2. Fai clic sul nome dell'istanza Container-Optimized OS da cui vuoi accedere ai log.

  3. Nella sezione Log, fai clic su Cloud Logging.

  4. Verrà aperto Esplora log per l'istanza specificata. Per ulteriori informazioni, consulta Utilizzo di Esplora log.

gcloud

Per accedere ai log, utilizza il comando gcloud logging read. Ad esempio:

gcloud logging read \
"resource.type=gce_instance AND resource.labels.instance_id=instance-id" \
    --limit 10 \
    --format json \
    --freshness 30d

Sostituisci quanto segue:

  • instance-id: l'ID dell'istanza VM.

Questo comando tenta di leggere i log dell'istanza VM con instance-id, con un limite di 10 log in formato JSON negli ultimi 30 giorni.

Per ulteriori informazioni sul comando gcloud, consulta la documentazione di riferimento gcloud logging read.

Come funziona?

L'agente Logging è configurato per impostazione predefinita per inviare log da determinati servizi critici per il sistema e container di applicazioni utente al backend di Cloud Logging. Ad esempio, log di container Docker, servizi systemd selezionati, log di controllo, errori di log del journal e così via. Consulta l'origine di configurazione specifica per Container-Optimized OS (immagini x86 e immagini Arm) per la configurazione predefinita del logging completa.

Per le immagini x86 di Container-Optimized OS 105 e versioni precedenti, l'agente Logging è l'agente Logging legacy containerizzato di Google Cloud Observability. Il comando docker che avvia l'agente Logging è definito nell'origine di Container-Optimized OS per il servizio systemd stackdriver-logging. La versione dell'agente containerizzato in esecuzione è definita nella directory di origine app-admin/stackdriver di Container-Optimized OS.

Per le immagini Arm di tutte le versioni e le immagini x86 per Container-Optimized OS 109 e successive, l'agente Logging è un pacchetto del sistema operativo integrato chiamato fluent-bit. L'agente è integrato nel sistema operativo e aggiornato insieme alle immagini del sistema operativo.

Limitazioni note

Compatibilità con il driver gcplogs

A partire da milestone 89, se l'agente Logging incluso in Container-Optimized OS è abilitato e il driver di logging Docker gcplogs è abilitato per uno o più container, l'agente Logging incluso potrebbe restituire un numero eccessivo di log di avviso. Ciò potrebbe creare rumore di log e/o aumentare gli addebiti relativi a Cloud Logging.

Una soluzione alternativa è non utilizzare gcplogs come driver di logging Docker e utilizzare invece il driver predefinito configurato da Container-Optimized OS. Tieni presente che l'agente Logging incluso in Container-Optimized OS esporterà i log dei container in Cloud Logging, quindi non è necessario utilizzare entrambe le soluzioni contemporaneamente.

Compatibilità della configurazione dell'agente Logging

L'agente di logging è un container basato su fluente in immagini di Container-Optimized OS basate su x86 e un programma binario a fluente bit su immagini di Container-Optimized OS basate su Arm. Le configurazioni dei due agenti non sono compatibili. Questo non è un problema se utilizzi solo la configurazione di logging predefinita integrata nelle immagini del sistema operativo. Tuttavia, se hai una configurazione di logging personalizzata, potresti riscontrare interruzioni durante la migrazione dei carichi di lavoro a immagini basate su un'architettura diversa o a una versione più recente di Container-Optimized OS.

Riferimenti

  • Documentazione dell'agente Logging legacy di Google Cloud Observability. L'agente Logging container incluso in Container-Optimized OS è un sottoinsieme dell'agente Logging legacy, pertanto questa documentazione può fornire contesto sull'agente più in generale, al di fuori dell'ambito di Container-Optimized OS.
  • Documentazione sull'osservabilità di Google Cloud. home page della documentazione sull'osservabilità di Google Cloud; può essere utile per il contesto.