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 Interazione con la console seriale.
Per visualizzare l'output della porta seriale per un'istanza di computing in esecuzione, utilizza la console Google Cloud , gcloud CLI o REST. Questi metodi forniscono solo l'ultimo MB di output 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 a come intendi utilizzare i campioni in questa pagina:
Console
Quando utilizzi la console Google Cloud per accedere ai servizi Google Cloud e alle 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 documentazione sull'autenticazione di Google Cloud .
Abilitazione e disabilitazione del logging dell'output della porta seriale
Puoi controllare se le tue 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.
Per impostazione predefinita, il logging dell'output della porta seriale in Cloud Logging è disabilitato. Se abiliti la registrazione dell'output della porta seriale, Cloud Logging fornisce senza costi i primi 50 gibibyte (GiB) al mese di logging 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 è
vincolato per la tua organizzazione,
puoi abilitarlo o disabilitarlo per i progetti e per le singole istanze di Compute
impostando la voce dei metadati serial-port-logging-enable su true
o false.
Se imposti una voce di metadati a livello di progetto, tutte le istanze di Compute del progetto ereditano implicitamente questa impostazione. Se imposti una voce di metadati dell'istanza, questa viene abilitata solo per l'istanza di computing, indipendentemente dall'impostazione del progetto.
Puoi impostare una voce di metadati utilizzando la console Google Cloud , gcloud CLI o l'API Compute Engine. Per ulteriori informazioni, vedi Impostare metadati personalizzati.
Ad esempio, il seguente comando gcloud CLI attiva la registrazione dell'output della porta seriale in Cloud Logging per il tuo progetto:
gcloud compute project-info add-metadata \
--metadata serial-port-logging-enable=trueAnalogamente, il seguente comando gcloud CLI attiva la registrazione 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 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=falseFiltri di esclusione
In 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 la registrazione dell'output della porta seriale per istanze di calcolo 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 disattivare la registrazione dell'output della porta seriale in Cloud Logging per l'intera organizzazione impostando una policy dell'organizzazione, che vincola determinate configurazioni delle risorse Google Cloud . Nello specifico,
imposta il seguente vincolo booleano:
constraints/compute.disableSerialPortLogging. Per saperne di più, consulta la pagina Creare e gestire le policy dell'organizzazione.
La disattivazione della registrazione della porta seriale impostando
constraints/compute.disableSerialPortLogging su true non è
retroattiva. Le istanze di calcolo esistenti con una voce di metadati che abilita
il logging della porta seriale in Cloud Logging continuano a registrare i log 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 dell'istanza o del progetto per abilitare il logging dell'output della porta seriale in Cloud Logging per qualsiasi istanza all'interno dell'organizzazione.
Visualizzare l'output della porta seriale
Utilizza la console Google Cloud , gcloud CLI o REST per visualizzare l'output più recente di 1 MB per porta seriale delle 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 Compute per la quale 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, nota anche come console seriale.
gcloud
Per visualizzare l'output della porta seriale di un'istanza di computing in esecuzione, 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'istanzaPORT: il numero della porta (1,2,3o4) per cui vuoi visualizzare l'output. In genere, le entità a livello di sistema 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 (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 in un solo tentativo.ZONE: la zona dell'istanza.
REST
Nell'API, crea una richiesta get al metodo instances.getSerialPortOutput.
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 console Google Cloud , vai alla pagina Esplora log.
Nel riquadro Query, inserisci la seguente query, quindi fai clic su 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 saperne di più sul filtraggio in Esplora log, vedi Visualizza i log utilizzando Esplora log.
Gestione dei caratteri non UTF-8
L'output della porta seriale viene sottoposto a escape utilizzando il metodo
CHexEscape() della libreria C++
Abseil open source,
in modo che i caratteri non UTF-8 vengano codificati come stringhe esadecimali. Puoi utilizzare il metodo
CUnescape()
corrispondente per ottenere l'output esatto inviato alla porta seriale.