Visualizzazione dell'output della porta seriale

Un'istanza di macchina virtuale (VM) ha quattro porte seriali virtuali. Il sistema operativo dell'istanza, il BIOS e altre entità a livello di sistema spesso scrivono l'output sulle porte seriali, il che rende l'output della porta seriale utile per la risoluzione di arresti anomali, avvii non riusciti, problemi di avvio o di arresto.

Questa pagina descrive i metodi per visualizzare l'output della porta seriale, incluso l'utilizzo di Cloud Logging per conservare l'output della porta seriale anche dopo l'arresto o l'eliminazione di un'istanza. Se devi inviare comandi a una porta seriale mentre è in esecuzione un'istanza, consulta Interazione con la console seriale.

L'output della porta seriale è accessibile tramite la console Google Cloud, gcloud CLI e REST, ma solo mentre l'istanza VM è in esecuzione. I log sono limitati agli ultimi 1 MB di output per porta.

Se abiliti il logging dell'output della porta seriale, Cloud Logging fornisce i primi 50 gibibyte (GiB) di logging gratuitamente e conserva i log per 30 giorni.

Prima di iniziare

  • Se vuoi registrare l'output della porta seriale in Cloud Logging, familiarizza con Cloud Logging.
  • Se non l'hai ancora fatto, configura l'autenticazione. L'autenticazione è il processo mediante il quale viene verificata l'identità per l'accesso ai servizi e alle API Google Cloud. Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti in Compute Engine nel seguente modo.

    Seleziona la scheda relativa a come prevedi di utilizzare gli esempi in questa pagina:

    Console

    Quando utilizzi la console Google Cloud per accedere ai servizi e alle API di Google Cloud, non devi configurare l'autenticazione.

    gcloud

    1. Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

      gcloud init
    2. Imposta una regione e una zona predefinite.

    REST

    Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, devi utilizzare le credenziali che fornisci a gcloud CLI.

      Installa Google Cloud CLI, quindi initialize eseguendo questo comando:

      gcloud init

Attivazione e disattivazione del logging dell'output della porta seriale

Puoi controllare se le istanze inviano l'output della porta seriale a Cloud Logging impostando i metadati a livello di progetto o istanza. Puoi anche disattivare la funzionalità per tutti gli utenti della tua organizzazione impostando un criterio dell'organizzazione.

Impostazione dei metadati di progetto e istanza

Per impostazione predefinita, il logging dell'output della porta seriale in Cloud Logging è disabilitato. Se il logging dell'output della porta seriale in Cloud Logging non è vincolato per la tua organizzazione, puoi abilitarlo o disabilitarlo per i progetti e per le singole istanze VM impostando la voce di metadati serial-port-logging-enable su true o false.

Se imposti una voce di metadati a livello di progetto, tutte le istanze VM nel progetto ereditano tale impostazione in modo implicito. Se imposti una voce di metadati di un'istanza, la voce di metadati viene abilitata solo per quella VM, indipendentemente dall'impostazione del progetto.

Puoi impostare una voce di metadati utilizzando la console Google Cloud, gcloud CLI o l'API Compute Engine. Per maggiori informazioni, consulta Impostare metadati personalizzati.

Ad esempio, il seguente comando gcloud CLI consente il logging degli output della porta seriale in Cloud Logging per il tuo progetto:

gcloud compute project-info add-metadata \
    --metadata serial-port-logging-enable=true

Allo stesso modo, il seguente comando gcloud CLI consente il logging dell'output della porta seriale in Cloud Logging per un'istanza specifica:

gcloud compute instances add-metadata INSTANCE_NAME \
    --metadata serial-port-logging-enable=true

Per disabilitare il logging dell'output della porta seriale in Cloud Logging, imposta serial-port-logging-enable su false:

gcloud compute instances add-metadata INSTANCE_NAME \
    --metadata serial-port-logging-enable=false

Filtri di esclusione

Da Cloud Logging, puoi creare un filtro di esclusione per rimuovere voci specifiche della porta seriale da Esplora log. Ad esempio, con una voce di metadati a livello di progetto impostata su serial-port-logging-enable=true, puoi disabilitare il logging dell'output della porta seriale per istanze VM specifiche utilizzando un filtro avanzato:

logName = "projects/PROJECT_ID/logs/serialconsole.googleapis.com%2Fserial_port_1_output"
resource.type = "gce_instance"
resource.labels.instance_id != "INSTANCE_1_ID"
resource.labels.instance_id != "INSTANCE_2_ID"

Impostazione di un criterio dell'organizzazione

Puoi disabilitare il logging dell'output della porta seriale su Cloud Logging per l'intera organizzazione impostando un Criterio dell'organizzazione, che limita alcune configurazioni delle risorse Google Cloud. In particolare, imposta il seguente vincolo booleano: constraints/compute.disableSerialPortLogging. Per maggiori informazioni, vedi Creazione e gestione dei criteri dell'organizzazione.

La disabilitazione del logging delle porte seriali impostando constraints/compute.disableSerialPortLogging su true non è retroattiva. Le istanze VM esistenti con una voce di metadati che consente il logging delle porte seriali in Cloud Logging continuano a registrare i dati in Cloud Logging, a meno che non reimposti i metadati per queste istanze.

Dopo aver impostato questo vincolo dell'organizzazione su true, non puoi impostare i metadati dell'istanza o del progetto per abilitare il logging dell'output della porta seriale in Cloud Logging per qualsiasi istanza all'interno dell'organizzazione.

Visualizzazione dell'output della porta seriale

Console

  1. Nella console Google Cloud, vai alla pagina Istanze VM.

    Vai alla pagina Istanze VM

  2. Seleziona l'istanza VM per la quale vuoi visualizzare l'output della porta seriale.

  3. In Log, fai clic su Porta seriale 1, 2, 3 o 4. Le entità a livello di sistema utilizzano in genere la prima porta seriale (porta 1), nota anche come console seriale.

gcloud

Utilizza il comando gcloud compute instances get-serial-port-output.

gcloud compute instances get-serial-port-output INSTANCE_NAME \
  --port PORT \
  --start START \
  --zone ZONE

Sostituisci quanto segue:

  • INSTANCE_NAME: il nome dell'istanza.
  • PORT: il numero della porta (1, 2, 3 o 4) per la quale vuoi visualizzare l'output. Le entità a livello di sistema utilizzano in genere la prima porta seriale (porta 1), nota anche come console seriale. Per impostazione predefinita, viene restituito l'output della prima porta seriale.
  • START: l'indice di byte (in base zero) del primo byte che vuoi restituire. Utilizza questo flag se vuoi continuare a ricevere l'output di una richiesta precedente troppo lunga per essere restituita con un solo tentativo.
  • ZONE: la zona dell'istanza.

REST

Nell'API, crea una richiesta get per il metodo instances.getSerialPortOutput.

GET https://compute.googleapis.com/compute/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/serialPort

Cloud Logging

  1. Abilita il logging delle porte seriali in Cloud Logging.
  2. Vai alla pagina Istanze VM.

    Vai alla pagina Istanze VM

  3. Seleziona l'istanza VM per la quale vuoi visualizzare i log dell'agente di avvio.

  4. In Log, fai clic su Cloud Logging per visualizzare i log di Cloud Logging.

    Fai clic su Cloud Logging per visualizzare
i log di Cloud Logging.

  5. Espandi il menu a discesa Tutti i log e seleziona l'output della porta seriale che vuoi visualizzare. Le entità a livello di sistema utilizzano in genere la prima porta seriale (porta 1), nota anche come console seriale. Se una porta non viene visualizzata nel menu a discesa, significa che non ha un output disponibile.

  6. Facoltativamente, espandi il menu a discesa Qualsiasi livello di log per disattivare i log inferiori al livello di gravità che vuoi visualizzare. Ad esempio, se selezioni il livello di log "Informazioni", disattiverai le voci di log "Debug". Le voci "Debug" vengono in genere utilizzate solo dal BIOS al momento dell'avvio.

Per ulteriori informazioni, incluse quelle sui filtri, consulta Utilizzo di Esplora log.

Gestione dei caratteri non UTF8

L'output della porta seriale viene sottoposto a escape utilizzando il metodo CHexEscape() della libreria open source Abseil C++, per cui i caratteri non UTF8 vengono codificati come stringhe esadecimali. Puoi utilizzare il metodo CUnescape() corrispondente per ottenere l'output esatto inviato alla porta seriale.

Errori comuni delle porte seriali

Di seguito sono riportati alcuni esempi di errori comuni che potresti riscontrare nell'output della porta seriale.

Errore durante la configurazione di IPv6

Quando IPv6 non è configurato, nei log del journal del sistema operativo potrebbe verificarsi il seguente errore:

ERROR addresses.go:301 Error configuring IPv6: Internet Systems Consortium DHCP Client 4.2.5

Ignorare questo errore. Questo errore non riguarda la VM.