Puoi attivare 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 è disattivata. Tuttavia, la VM fa ancora parte 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/disattivazione del debug dell'istanza VM", che verrà 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
in esecuzione in un'istanza Compute Engine. Per eseguire il debug di un'istanza, il tuo ruolo deve contenere i campi
Autorizzazione appengine.instances.enableDebug
.
Per attivare e disattivare la modalità di debug in gcloud
:
-
Utilizza il comando gcloud
app instances enable-debug per eseguire il debug delle VM per una determinata
istanza e versione, come segue:
Sostituisci PROJECT-ID con il tuo ID progetto e segui le istruzioni per specificare la versione dell'istanza da eseguire il debug.gcloud app --project PROJECT-ID instances enable-debug
-
Al termine del debug, disattiva la modalità di debug nel seguente modo:
Segui le istruzioni per specificare la versione dell'istanzagcloud app --project PROJECT-ID instances disable-debug
Quando disattivi 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 vuoi accedere a:
Viene attivata la modalità di debug per l'istanza e viene aperta una sessione SSH per in una finestra del terminale.
Puoi anche selezionare diverse opzioni per avviare una sessione SSH dall'elenco a discesa.
A questo punto sei nell'host dell'istanza, che ha diversi container in esecuzione. Consulta Informazioni sui container comuni successivo per ulteriori informazioni in merito.
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 contenente l'ID progetto: al container che esegue il codice. Prendi nota del NOME di questo contenitore.Facoltativamente, elenca le informazioni di logging per la tua applicazione richiamando:
sudo docker logs CONTAINER-NAME
Avvia una shell nel contenitore in cui viene eseguito il codice:
sudo docker exec -it CONTAINER-NAME /bin/bash
Al termine del debug, inserisci
exit
per uscire dal contenitore quindi di nuovoexit
per uscire dalla sessione SSH.Disabilita il debug per l'istanza per consentirne il ripristino normale operativa.
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 sei nell'host dell'istanza, che ha diversi container in esecuzione. Consulta la sezione Informazioni sui contenitori comuni per ulteriori informazioni al riguardo.
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 contenente l'ID progetto: al container che esegue il codice. Prendi nota del NOME di questo contenitore.Facoltativamente, elenca le informazioni di logging per la tua applicazione richiamando:
sudo docker logs CONTAINER-NAME
Avvia una shell nel contenitore in cui viene eseguito il codice:
docker exec -it CONTAINER-NAME /bin/bash
Al termine del debug, inserisci
exit
per uscire dal contenitore quindi di nuovoexit
per uscire dalla sessione SSH.Disattiva il debug per l'istanza in modo da consentirle di riprendere il normale funzionamento.
Informazioni sui container comuni
Oltre al contenitore che esegue il codice dell'applicazione, l'istanza potrebbe avere anche i seguenti contenitori:
Container e codice sorgente | Descrizione |
---|---|
cloud-sql | Garantisce connessioni sicure all'istanza Cloud SQL. |
fluentd_logger | Agente Logging. |
nginx_proxy | Proxy delle richieste all'applicazione. |
opentelemetry-collector | Riceve, elabora ed esporta i dati di telemetria. |
stackdriver-monitoring-agent | Raccoglie, archivia e monitora le informazioni di sistema. |
Tieni presente che questi container collaterali sono soggetti a modifiche senza preavviso.