Utilizzo di Cloud Logging con Container-Optimized OS

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

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

Abilita l'agente Logging

L'agente Logging è disattivato per impostazione predefinita. Puoi attivare 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 avere l'autorizzazione per scrivere i log. Puoi concedere questa autorizzazione assegnando il ruolo IAM roles/logging.logWriter al account di servizio per un'applicazione.

Per saperne di più su autorizzazioni e ruoli, consulta Ruoli predefiniti.

Crea un'istanza con un agente di logging abilitato

Console

Per eseguire un'istanza Compute Engine su Container-Optimized OS con l'agente di logging fluent-bit abilitato, esegui le seguenti 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 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 maggiori dettagli, consulta la sezione 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 di 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 dell'istanza VM.
  • image-name: il nome dell'immagine Container-Optimized OS per l'istanza. Ad esempio, --image=cos-113-18244-85-29.
  • compute-zone: la zona di computing per l'istanza.

Per saperne di più sul comando gcloud, consulta la documentazione di riferimento di 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 vengono fornite con due implementazioni dell'agente di logging: fluentd (legacy) e fluent-bit. Container-Optimized OS 105 utilizza fluentd per impostazione predefinita e Container-Optimized OS 109 utilizza 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 di google-logging-use-fluentbit su true.

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

Abilita l'agente di logging nei metadati del progetto

A partire dalla milestone 97, il logging può essere attivato 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. Si apre Esplora log per l'istanza specificata. Per saperne di più, 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, limitandosi a 10 log, in formato JSON, degli ultimi 30 giorni.

Per saperne di più sul comando gcloud, consulta la documentazione di riferimento di gcloud logging read.

Come funziona?

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

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 di logging è definito nell'origine di Container-Optimized OS per il servizio systemd stackdriver-logging. 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 di logging è un pacchetto del sistema operativo integrato chiamato fluent-bit. L'agente è integrato nel sistema operativo e viene aggiornato insieme alle immagini sistema operativo.

Limitazioni note

Compatibilità con il driver gcplogs

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

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

Compatibilità della configurazione dell'agente Logging

L'agente di logging è un container basato su fluentd su immagini Container-Optimized OS basate su x86 e un binario fluent-bit su immagini 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 problemi durante la migrazione dei workload 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 di logging in container 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 della documentazione di Google Cloud Observability, che può essere utile per il contesto.