Un'istanza di Compute Engine ha quattro porte seriali virtuali. Il sistema operativo, il BIOS e altre entità a livello di sistema dell'istanza spesso scrivono l'output sulle porte seriali, il che rende l'output della porta seriale utile per risolvere problemi di arresto anomalo, avvii non riusciti e 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 di un'istanza. Se devi inviare comandi a una porta seriale mentre un' istanza è in esecuzione, consulta Interagire con la console seriale.
Per visualizzare l'output della porta seriale di un'istanza di computing in esecuzione, utilizza la Google Cloud console, gcloud CLI, o REST. Questi metodi forniscono solo l'output più recente di 1 MB per porta. Per visualizzare l'output superiore a 1 MB per porta o l'output delle istanze arrestate, utilizza Cloud Logging.
Prima di iniziare
- Se vuoi registrare l'output della porta seriale in Cloud Logging, acquisisci familiarità con Cloud Logging.
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione verifica la tua identità per l'accesso ad API e servizi Google Cloud . Per eseguire
codice o esempi da un ambiente di sviluppo locale, puoi autenticarti su
Compute Engine selezionando una delle seguenti opzioni:
Seleziona la scheda relativa alla modalità di utilizzo degli esempi in questa pagina:
Console
Quando utilizzi la Google Cloud console per accedere a Google Cloud servizi e API, non devi configurare l'autenticazione.
gcloud
-
Installa Google Cloud CLI. Dopo l'installazione, inizializza Google Cloud CLI eseguendo il comando seguente:
gcloud initSe utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
- Imposta una regione e una zona predefinite.
REST
Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, utilizzi le credenziali che fornisci a gcloud CLI.
Installa Google Cloud CLI.
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
Per saperne di più, consulta Autenticati per usare REST nella Google Cloud documentazione sull'autenticazione di.
Abilitazione e disabilitazione 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 una policy dell'organizzazione.
Per impostazione predefinita, il logging dell'output della porta seriale in Cloud Logging è disattivato. Se attivi il logging dell'output della porta seriale, Cloud Logging fornisce senza costi i primi 50 gibibyte (GiB) di logging al mese e conserva i log per 30 giorni.
Impostazione dei metadati di progetto e istanza
Se il logging dell'output della porta seriale in Cloud Logging non è
limitato per la tua organizzazione,
puoi attivarlo o disattivarlo per i progetti e per le singole istanze di computing
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 di computing del progetto ereditano implicitamente questa impostazione. Se imposti una voce di metadati dell'istanza, la voce di metadati viene attivata solo per l'istanza di computing, indipendentemente dall'impostazione del progetto.
Puoi impostare una voce di metadati utilizzando la Google Cloud console, la gcloud CLI o l'API Compute Engine. Per ulteriori informazioni, vedi Imposta metadati personalizzati.
Ad esempio, il seguente comando gcloud CLI attiva il logging dell'output della porta seriale in Cloud Logging per il tuo progetto:
gcloud compute project-info add-metadata \
--metadata serial-port-logging-enable=trueAllo stesso modo, il seguente comando gcloud CLI attiva 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=truePer disattivare 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=falseFiltri 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 disattivare il logging dell'output della porta seriale per istanze di computing 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 una policy dell'organizzazione
Puoi disattivare il logging dell'output della porta seriale in Cloud Logging per l'intera
organizzazione impostando una
policy dell'organizzazione, che
limita determinate configurazioni di Google Cloud risorse. In particolare, imposta il seguente vincolo booleano: constraints/compute.disableSerialPortLogging. Per ulteriori informazioni, vedi
Creazione e gestione delle policy dell'organizzazione.
La disattivazione del logging della porta seriale impostando constraints/compute.disableSerialPortLogging su true non è retroattiva. Le istanze di computing esistenti con una voce di metadati che attiva
il logging della porta seriale in Cloud Logging continuano a eseguire il logging in Cloud Logging
a meno che tu non reimposti i metadati per
queste istanze.
Dopo aver impostato questo vincolo dell'organizzazione su true, non puoi impostare i metadati di istanza o progetto per attivare il logging dell'output della porta seriale in Cloud Logging per le istanze dell'organizzazione.
Visualizzare l'output della porta seriale
Utilizza la Google Cloud console, gcloud CLI o REST per visualizzare l'output più recente di 1 MB per porta seriale dalle istanze in esecuzione. Per visualizzare l'output superiore a 1 MB per porta o l'output delle istanze arrestate, utilizza Cloud Logging.
Console
Nella console Google Cloud , vai alla pagina Istanze VM.
Seleziona l'istanza di computing per cui vuoi visualizzare l'output della porta seriale.
In Log, fai clic su Porta seriale 1 (console), Porta seriale 2 (console), Porta seriale 3 o Porta seriale 4.
Le entità a livello di sistema in genere utilizzano la porta seriale 1, che è nota anche come console seriale.
gcloud
Per visualizzare l'output della porta seriale di un'istanza di computing in esecuzione, utilizza il
gcloud compute instances get-serial-port-output comando.
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,3o4) per cui vuoi visualizzare l'output. Le entità a livello di sistema in genere utilizzano 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 (basato su zero) del primo byte che vuoi restituire. Utilizza questo flag se vuoi continuare a ricevere l'output di una richiesta precedente troppo lunga da restituire in un solo tentativo.ZONE: la zona dell'istanza.
REST
Nell'API, crea una richiesta get al
instances.getSerialPortOutput metodo.
GET https://compute.googleapis.com/compute/projects/PROJECT_ID/zones/ZONE/instances/INSTANCE_NAME/serialPort
Cloud Logging
Prima di poter visualizzare questi log, devi inviare l'output della porta seriale a Cloud Logging.
- Nella Google Cloud console, vai alla pagina Esplora log.
Nel riquadro Query, inserisci la seguente query, quindi fai clic Esegui query:
resource.type="gce_instance" logName="projects/PROJECT_ID/logs/serialconsole.googleapis.com%2Fserial_port_1_output" resource.labels.instance_id="INSTANCE_ID"
Sostituisci quanto segue:
PROJECT_ID: l'ID del progetto che conteneva l'istanza.INSTANCE_ID: l'ID dell'istanza di computing.
Per ulteriori informazioni sul filtraggio in Esplora log, vedi Visualizza i log utilizzando Esplora log.
Gestire i caratteri non UTF-8
L'output della porta seriale viene sottoposto a escape utilizzando la libreria C++ open source
Abseil's
CHexEscape() method,
quindi i caratteri non UTF-8 vengono codificati come stringhe esadecimali. Puoi utilizzare il metodo
CUnescape() corrispondente
per ottenere l'output esatto inviato alla porta seriale.