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 Container-Optimized OS 101, le immagini Container-Optimized OS basate su x86 utilizzavano un agente Logging containerizzato basato su fluentd. Container-Optimized OS 105 ha iniziato a distribuire un'implementazione di agente Logging alternativo, fluent-bit. A partire da Container-Optimized OS 109, l'agente di 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 forniscono l'agente di logging fluent-bit.

Abilita l'agente Logging

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

Requisiti di accesso

Cloud Logging fornisce ruoli IAM che puoi utilizzare per concedere l'accesso appropriato. Per visualizzare i log in un progetto, devi disporre del ruolo roles/logging.viewer e le applicazioni devono disporre dell'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 su autorizzazioni e ruoli, consulta Ruoli predefiniti.

Crea un'istanza con un agente Logging abilitato

Console

Per eseguire un'istanza Compute Engine su Container-Optimized OS con l'agente Logging fluent-bit abilitato, esegui queste operazioni:

  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 di 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 Key (Chiave) per google-logging-enabled e Value (Valore) per true.

  6. Specifica eventuali altre opzioni per il tuo caso d'uso. Consulta Creazione e configurazione delle istanze per ulteriori dettagli.

  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 image-name \
    --image-project cos-cloud \
    --zone compute-zone \
    --metadata google-logging-enabled=true

Sostituisci quanto segue:

  • instance-name: il nome della tua istanza VM.
  • image-name: il nome dell'immagine di Container-Optimized OS per l'istanza. Ad esempio, --image=cos-113-18244-85-29.
  • 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 Container-Optimized OS, consulta Creazione e configurazione di istanze.

Selezione dell'agente Logging

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

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

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

Abilita l'agente Logging nei metadati di progetto

A partire da milestone 97, il logging può essere abilitato nei metadati di 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 di Container-Optimized OS da cui vuoi accedere ai log.

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

  4. Viene 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 dall'istanza VM con instance-id, con un limite di 10 log, in formato JSON, degli 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 i log di determinati servizi critici di sistema e container di applicazioni utente al backend di Cloud Logging. Ad esempio, log di container Docker, servizi di sistema selezionati, audit log, errori di log del journal e così via. Consulta l'origine della configurazione specifica di Container-Optimized OS (immagini x86 e immagini Arm) per la configurazione completa dei log predefinita.

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 per Container-Optimized OS per il servizio stackdriver-logging systemd. La versione dell'agente containerizzato in esecuzione è definita nella directory app-admin/stackdriver di origine di Container-Optimized OS.

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

Limitazioni note

Compatibilità con gcplogs conducente

A partire da milestone 89, se l'agente di logging incluso in Container-Optimized OS è abilitato e il driver di logging Docker gcplogs è abilitato per uno o più container, l'agente di logging incluso potrebbe restituire log di avviso eccessivi. 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, ma 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, per cui non è necessario utilizzare entrambe le soluzioni contemporaneamente.

Compatibilità della configurazione dell'agente Logging

L'agente Logging è un container basato su fluentd sulle immagini Container-Optimized OS basate su x86 e un programma binario fluentd sulle immagini Container-Optimized OS basate su ARM. Le configurazioni dei due agenti non sono compatibili. Questo non è un problema se ti affidi solo alla configurazione di logging predefinita integrata nelle immagini del sistema operativo. Tuttavia, se disponi di una configurazione personalizzata di logging, 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 containerizzato incluso in Container-Optimized OS è un sottoinsieme dell'agente Logging legacy, pertanto questa documentazione può fornire un contesto più generale sull'agente, al di fuori dell'ambito di Container-Optimized OS.
  • Documentazione di Google Cloud Observability. home page per la documentazione di Google Cloud Observability; può essere utile per il contesto.