Esecuzione del debug di un'istanza

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 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/disattivazione del debug dell'istanza VM", che verrà registrato nel file /var/log/syslog.log della VM.

Attivazione e disattivazione della 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 tuo ruolo deve contenere l'autorizzazione appengine.instances.enableDebug.

Per attivare e disattivare la modalità di debug in gcloud:

  1. Utilizza il comando gcloud app instances enable-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 da eseguire il debug.
  2. Al termine del debug, disattiva la modalità di debug come segue:
    gcloud app --project PROJECT-ID instances disable-debug
    Segui le istruzioni per specificare la versione dell'istanza

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:

  1. Vai alla pagina delle istanze della console Google Cloud per il tuo progetto:

    Vai alla pagina delle istanze

  2. Fai clic su SSH all'estrema destra della riga contenente l'istanza a cui vuoi accedere:

    L'istanza viene messa in modalità di debug e viene aperta una sessione SSH per l'istanza in una finestra del terminale.

    Puoi anche selezionare diverse opzioni per avviare una sessione SSH dall'elenco a discesa.

  3. A questo punto sei nell'host dell'istanza, che ha diversi container in esecuzione. Per ulteriori informazioni, consulta la sezione Informazioni sui contenitori comuni.

  4. Nella finestra del terminale, elenca i container in esecuzione nell'istanza:

    sudo docker ps

  5. L'output del comando sudo docker ps elenca ogni contenuto per riga. Individua la riga contenente l'ID progetto: questo è il contenitore in cui viene eseguito il codice. Prendi nota del NOME di questo contenitore.

  6. Se vuoi, elenca le informazioni di log per la tua applicazione richiamando:

    sudo docker logs CONTAINER-NAME

  7. Avvia una shell nel contenitore in cui viene eseguito il codice:

    sudo docker exec -it CONTAINER-NAME /bin/bash

  8. Al termine del debug, inserisci exit per uscire dal contenitore, quindi di nuovo exit per uscire dalla sessione SSH.

  9. Disattiva il debug per l'istanza in modo da consentirle di riprendere il normale funzionamento.

gcloud

Per connetterti a un'istanza utilizzando gcloud:

  1. Con l'istanza abilitata per il debug, invoca il comando:

    gcloud beta app instances --project PROJECT-ID ssh INSTANCE-NAME --service SERVICE --version VERSION

  2. A questo punto sei nell'host dell'istanza, che ha diversi container in esecuzione. Per ulteriori informazioni, consulta la sezione Informazioni sui contenitori comuni.

  3. Nella finestra del terminale, elenca i container in esecuzione nell'istanza:

    sudo docker ps

  4. L'output del comando sudo docker ps elenca ogni contenuto per riga. Individua la riga contenente l'ID progetto: questo è il contenitore in cui viene eseguito il codice. Prendi nota del NOME di questo contenitore.

  5. Se vuoi, elenca le informazioni di log per la tua applicazione richiamando:

    sudo docker logs CONTAINER-NAME

  6. Avvia una shell nel contenitore in cui viene eseguito il codice:

    docker exec -it CONTAINER-NAME /bin/bash

  7. Al termine del debug, inserisci exit per uscire dal contenitore, quindi di nuovo exit per uscire dalla sessione SSH.

  8. Disattiva il debug per l'istanza in modo da consentirle di riprendere il normale funzionamento.

Informazioni sui contenitori 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 contenitori sidecar sono soggetti a modifiche senza preavviso.