Puoi abilitare la modalità di debug per una VM. In modalità di debug, le entità che dispongono dei ruoli Proprietario, Editor e Amministratore App Engine nel progetto hanno accesso root alla VM. Quando la modalità di debug è attiva, l'implementazione automatica degli aggiornamenti del sistema operativo e delle patch di sicurezza è disabilitata. Tuttavia, la VM fa ancora parte del pool del bilanciatore del carico e continua a ricevere richieste esterne.
Ogni volta che attivi o disattivi il debug, nella console Google Cloud viene visualizzato un evento "Abilitazione/disabilitazione del debug dell'istanza VM" che viene registrato nel file /var/log/syslog.log
della VM.
Attivare e disattivare la modalità di debug
Puoi utilizzare gcloud
per attivare e disattivare la modalità di debug per un'istanza. Per eseguire il debug di un'istanza, il ruolo deve contenere l'autorizzazione appengine.instances.enableDebug
.
Per attivare e disattivare la modalità di debug in gcloud
:
-
Utilizza il comando gcloud app instances allow-debug per eseguire il debug delle VM per una determinata istanza e versione, come segue:
gcloud app --project PROJECT-ID instances enable-debug
Sostituisci PROJECT-ID con il tuo ID progetto e segui le istruzioni per specificare la versione dell'istanza di cui eseguire il debug. -
Al termine del debug, disattiva la modalità di debug nel seguente modo:
gcloud app --project PROJECT-ID instances disable-debug
Segui le istruzioni per specificare la versione dell'istanza
Quando disabiliti la modalità di debug, la VM viene arrestata e viene avviata una nuova istanza della tua app, in esecuzione su una nuova VM pulita.
Connessione all'istanza
Console
Per connetterti a un'istanza nella console:
Visita la pagina delle istanze della console Google Cloud per il tuo progetto:
Fai clic su SSH all'estrema destra della riga contenente l'istanza a cui vuoi accedere:
L'istanza viene attivata in modalità di debug e viene aperta una sessione SSH per l'istanza in una finestra del terminale.
Dall'elenco a discesa puoi inoltre selezionare diverse opzioni per avviare una sessione SSH.
A questo punto ti trovi nell'host dell'istanza, che ha diversi containers in esecuzione. Per saperne di più, consulta la sezione Informazioni sui container comuni di seguito.
Nella finestra del terminale, elenca i container in esecuzione nell'istanza:
sudo docker ps
L'output del comando
sudo docker ps
elenca ogni container per riga. Individua la riga che contiene il tuo ID progetto: questo è il container che esegue il tuo codice. Prendi nota del NOME di questo contenitore.Facoltativamente, elenca le informazioni di logging per l'applicazione richiamando:
sudo docker logs CONTAINER-NAME
Avvia una shell nel container su cui è in esecuzione il tuo codice:
sudo docker exec -it CONTAINER-NAME /bin/bash
Al termine del debug, inserisci
exit
per uscire dal container, quindiexit
di nuovo per uscire dalla sessione SSH.Disabilita il debug dell'istanza per consentire il normale funzionamento.
gcloud
Per connetterti a un'istanza utilizzando gcloud:
Con l'istanza abilitata per il debug, richiama il comando:
gcloud beta app instances --project PROJECT-ID ssh INSTANCE-NAME --service SERVICE --version VERSION
A questo punto ti trovi nell'host dell'istanza, che ha diversi containers in esecuzione. Per saperne di più, consulta la sezione Informazioni sui contenitori comuni di seguito.
Nella finestra del terminale, elenca i container in esecuzione nell'istanza:
sudo docker ps
L'output del comando
sudo docker ps
elenca ogni container per riga. Individua la riga che contiene il tuo ID progetto: questo è il container che esegue il tuo codice. Prendi nota del NOME di questo contenitore.Facoltativamente, elenca le informazioni di logging per l'applicazione richiamando:
sudo docker logs CONTAINER-NAME
Avvia una shell nel container su cui è in esecuzione il tuo codice:
docker exec -it CONTAINER-NAME /bin/bash
Al termine del debug, inserisci
exit
per uscire dal container, quindiexit
di nuovo per uscire dalla sessione SSH.Disabilita il debug dell'istanza per consentire il normale funzionamento.
Informazioni sui container comuni
Oltre al container che esegue il codice dell'applicazione, l'istanza potrebbe avere anche i seguenti container:
Contenitore e codice sorgente | Descrizione |
---|---|
cloud-sql | Garantisce connessioni sicure alla tua istanza Cloud SQL. |
fluentd_logger | Agente Logging. |
nginx_proxy | Indirizza le richieste all'applicazione nel proxy. |
collettore-opentelemetry | Riceve, elabora ed esporta i dati di telemetria. |
stackdriver-monitoring-agent | Raccoglie, archivia e monitora le informazioni sul sistema. |
Questi contenitori collaterali sono soggetti a modifiche senza preavviso.