Puedes habilitar el modo de depuración en una VM. En el modo de depuración, las entidades que tienen los roles de propietario, editor y administrador de App Engine en el proyecto tienen acceso raíz a la VM. Cuando el modo de depuración está activado, se inhabilita el lanzamiento automático de actualizaciones del sistema operativo y de parches de seguridad. Sin embargo, la VM sigue formando parte del pool del balanceador de carga y continúa recibiendo solicitudes externas.
Cada vez que habilites o inhabilites la depuración, aparecerá un evento "Habilitar o inhabilitar la depuración de la instancia de VM" en la Google Cloud consola y se registrará en el archivo /var/log/syslog.log
de la VM.
Habilitar e inhabilitar el modo de depuración
Puede usar gcloud
para habilitar e inhabilitar el modo de depuración de una instancia. Para depurar una instancia, tu rol debe contener el permiso appengine.instances.enableDebug
.
Para habilitar e inhabilitar el modo de depuración en gcloud
, siga estos pasos:
-
Usa el comando gcloud
app instances enable-debug para depurar las VMs de una instancia y una versión concretas, como se indica a continuación:
Sustituye PROJECT-ID por el ID de tu proyecto y sigue las instrucciones para especificar la versión de la instancia que quieres depurar.gcloud app --project PROJECT-ID instances enable-debug
-
Cuando haya terminado la depuración, inhabilite el modo de depuración de la siguiente manera:
Sigue las indicaciones para especificar la versión de la instancia.gcloud app --project PROJECT-ID instances disable-debug
Cuando inhabilitas el modo de depuración, la VM se detiene y se inicia una nueva instancia de tu aplicación, que se ejecuta en una VM nueva y limpia.
Conectarse a la instancia
Consola
Para conectarte a una instancia en la consola, sigue estos pasos:
Ve a la página de instancias de la consola de tu proyecto: Google Cloud
Haz clic en SSH en el extremo derecho de la fila que contiene la instancia a la que quieres acceder:
De esta forma, la instancia se pone en modo de depuración y se abre una sesión SSH para la instancia en una ventana de terminal.
También puedes seleccionar diferentes opciones para iniciar una sesión SSH en la lista desplegable.
En este punto, se encuentra en el host de la instancia, que tiene varios contenedores en ejecución. Para obtener más información sobre estos contenedores, consulta el artículo Información sobre los contenedores habituales.
En la ventana del terminal, enumera los contenedores que se están ejecutando en la instancia:
sudo docker ps
El resultado del comando
sudo docker ps
muestra cada contenedor por filas. Busca la fila que contenga el ID de tu proyecto: ese es el contenedor que ejecuta tu código. Anota el nombre de este contenedor.También puedes consultar la información de registro de tu aplicación invocando lo siguiente:
sudo docker logs CONTAINER-NAME
Inicia un shell en el contenedor que ejecuta tu código:
sudo docker exec -it CONTAINER-NAME /bin/bash
Cuando hayas terminado de depurar, introduce
exit
para salir del contenedor y, a continuación,exit
de nuevo para salir de la sesión SSH.Inhabilita la depuración de tu instancia para que pueda reanudar su funcionamiento normal.
gcloud
Para conectarte a una instancia mediante gcloud, sigue estos pasos:
Con la instancia habilitada para la depuración, invoca el comando:
gcloud beta app instances --project PROJECT-ID ssh INSTANCE-NAME --service SERVICE --version VERSION
En este punto, se encuentra en el host de la instancia, que tiene varios contenedores en ejecución. Para obtener más información sobre estos contenedores, consulta el artículo Información sobre los contenedores habituales.
En la ventana del terminal, enumera los contenedores que se están ejecutando en la instancia:
sudo docker ps
El resultado del comando
sudo docker ps
muestra cada contenedor por filas. Busca la fila que contenga el ID de tu proyecto: ese es el contenedor que ejecuta tu código. Anota el nombre de este contenedor.También puedes consultar la información de registro de tu aplicación invocando lo siguiente:
sudo docker logs CONTAINER-NAME
Inicia un shell en el contenedor que ejecuta tu código:
docker exec -it CONTAINER-NAME /bin/bash
Cuando hayas terminado de depurar, introduce
exit
para salir del contenedor y, a continuación,exit
de nuevo para salir de la sesión SSH.Inhabilita la depuración de tu instancia para que pueda reanudar su funcionamiento normal.
Información sobre los contenedores habituales
Además del contenedor que ejecuta el código de tu aplicación, tu instancia también puede tener los siguientes contenedores:
Contenedor y código fuente | Descripción |
---|---|
cloud-sql | Asegura las conexiones a tu instancia de Cloud SQL. |
fluentd_logger | Agente de Logging. |
nginx_proxy | Proxy de solicitudes a la aplicación. |
opentelemetry-collector | Recibe, procesa y exporta datos de telemetría. |
stackdriver-monitoring-agent | Recoge, almacena y monitoriza información del sistema. |
Ten en cuenta que estos contenedores sidecar pueden cambiar sin previo aviso.