Utilizzo di Cloud Logging con Container-Optimized OS

Container-Optimized OS include un agente di logging che esporta alcuni log di sistema e container in Cloud Logging. Fino a Container-Optimized OS 101, le immagini di Container-Optimized OS basate su x86 utilizzavano un agente di logging in container basato su fluentd. Container-Optimized OS 105 ha iniziato a includere 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 precedente, fluentd, verrà rimosso in Container-Optimized OS 113.

Tutte le versioni delle immagini del sistema operativo ottimizzato per i container basate su Arm includono l'agente di logging Fluent-Bit.

Attiva l'agente di logging

L'agente di 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 disporre dell'autorizzazione per scrivere i log. Puoi concedere questa autorizzazione assegnando il ruolo IAM roles/logging.logWriter all'account di servizio di un'applicazione.

Per ulteriori informazioni su autorizzazioni e ruoli, consulta Ruoli predefiniti.

Creare 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, svolgi i seguenti passaggi:

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

    Creare una nuova istanza Compute Engine

  2. Specifica un nome per l'istanza.

  3. Nella sezione Disco di avvio, seleziona un'immagine del sistema operativo ottimizzata per i container.

  4. Fai clic su Gestione, sicurezza, dischi, networking, single-tenancy per visualizzare altre opzioni.

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

  6. Se vuoi, specifica eventuali altre opzioni per il tuo caso d'uso. Per maggiori dettagli, consulta la sezione Creare e configurare 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 del sistema operativo ottimizzato per i container per l'istanza. Ad esempio, --image=cos-113-18244-85-29.
  • compute-zone: la zona di calcolo per l'istanza.

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

Selezione dell'agente di logging

Le immagini del sistema operativo ottimizzato per i container 105 e 109 basate su x86 includono 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 dei 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 di logging fluentd su Container-Optimized OS 109, imposta il valore google-logging-use-fluentbit su false.

Attivare l'agente di logging nei metadati del progetto

A partire dal traguardo 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 delle 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 ulteriori informazioni, consulta la pagina Utilizzare 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 ulteriori informazioni 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 da determinati servizi critici per il sistema e da contenitori di applicazioni utente al backend di Cloud Logging. Ad esempio, i log dei container Docker, i servizi systemd selezionati, i log di controllo, gli errori dei log di sistema e così via. Consulta la fonte di configurazione specifica del sistema operativo ottimizzato per i container (immagini x86 e immagini ARM) per una configurazione completa dei log predefiniti.

Per le immagini x86 di Container-Optimized OS 105 e versioni precedenti, l'agente di logging è l'agente di logging legacy containerizzato di Google Cloud Observability. Il comando docker che avvia l'agente di logging è definito nel codice sorgente di Container-Optimized OS per il servizio systemd stackdriver-logging. La versione dell'agente containerizzato in esecuzione è definita nella directory app-admin/stackdriver dell'origine 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 del sistema operativo.

Limitazioni note

Compatibilità con il driver gcplogs

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

Una soluzione alternativa è non utilizzare gcplogs come driver di logging di Docker, ma utilizzare 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, pertanto non è necessario utilizzare entrambe le soluzioni contemporaneamente.

Compatibilità della configurazione dell'agente Logging

L'agente di logging è un contenitore basato su Fluentd su immagini Container-Optimized OS basate su x86 e un file binario Fluent-bit su 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 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 del sistema operativo ottimizzato per i container.

Riferimenti

  • Documentazione dell'agente di logging precedente di Google Cloud Observability. L'agente di logging in container incluso in Container-Optimized OS è un sottoinsieme dell'agente di logging precedente, quindi questa documentazione potrebbe fornire un contesto sull'agente in modo più generale, al di fuori dell'ambito di Container-Optimized OS.
  • Documentazione di Google Cloud Observability. Home page della documentazione di Google Cloud Observability; potrebbe essere utile per il contesto.