Depurar una instancia

Puedes habilitar el modo de depuración para una VM. En el modo de depuración, los principales que tienen las funciones de propietario, editor y administrador de App Engine en el proyecto tienen acceso raíz a la VM. Mientras el modo de depuración está activado, el lanzamiento automático de las actualizaciones del sistema operativo y los parches de seguridad están inhabilitados. Sin embargo, la VM continúa siendo parte del grupo del balanceador de cargas y sigue recibiendo solicitudes externas.

Cada vez que habilites o inhabilites la depuración, aparecerá el evento “VM instance debugging enable/disable” en la consola de Google Cloud, y el evento se registrará en el archivo /var/log/syslog.log de la VM.

Habilita o inhabilita el modo de depuración

Puedes habilitar o inhabilitar el modo de depuración para una instancia mediante gcloud. Para depurar una instancia, tu rol debe contener el permiso appengine.instances.enableDebug.

Para inhabilitar y habilitar el modo de depuración en gcloud, haz lo siguiente:

  1. Usa el comando gcloud app instances enable-debug para depurar las VM de una instancia y versión en particular de la siguiente manera:
    gcloud app --project PROJECT-ID instances enable-debug
    Reemplaza PROJECT-ID por tu propio ID del proyecto y sigue las indicaciones para especificar la versión de la instancia que deseas depurar.
  2. Cuando termine la depuración, inhabilita el modo de depuración de la siguiente manera:
    gcloud app --project PROJECT-ID instances disable-debug
    Sigue las indicaciones para especificar la versión de la instancia

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.

Conéctate a la instancia

Console

Para conectarte a una instancia en la consola:

  1. Ve a la página Instancias (Instances) de consola de Google Cloud del proyecto:

    Ir a la página de instancias

  2. Haz clic en SSH en el extremo derecho de la fila que contiene la instancia a la que deseas acceder:

    Esto pone la instancia en modo de depuración y abre una sesión de SSH para la instancia en una ventana de la terminal.

    También puedes seleccionar opciones diferentes para iniciar una sesión SSH desde la lista desplegable.

  3. Ahora te encuentras en el host de la instancia, en el que se ejecutan varios contenedores. Consulta Información sobre los contenedores comunes para obtener más información al respecto.

  4. En la ventana de la terminal, se muestran los contenedores que se ejecutan en la instancia:

    sudo docker ps

  5. Mediante el resultado del comando sudo docker ps, se enumera cada contenedor por fila. Ubica la fila que contiene el ID del proyecto: este es el contenedor que ejecuta tu código. Presta atención al NOMBRE de este contenedor.

  6. Si lo deseas, invoca el siguiente comando para mostrar la información de registro de tu aplicación:

    sudo docker logs CONTAINER-NAME

  7. Inicia una shell en el contenedor que ejecuta tu código:

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

  8. Cuando termines la depuración, ingresa exit para salir del contenedor y, luego, exit otra vez a fin de salir de la sesión de SSH.

  9. Inhabilita la depuración de tu instancia para permitir que se reanude su funcionamiento normal.

gcloud

Para conectarte a una instancia con gcloud, realiza lo siguiente:

  1. 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

  2. Ahora te encuentras en el host de la instancia, que tiene varios contenedores en ejecución. Consulta Información sobre los contenedores comunes para obtener más información al respecto.

  3. En la ventana de la terminal, se muestran los contenedores que se ejecutan en la instancia:

    sudo docker ps

  4. Mediante el resultado del comando sudo docker ps, se enumera cada contenedor por fila. Ubica la fila que contiene el ID del proyecto: este es el contenedor que ejecuta tu código. Presta atención al NOMBRE de este contenedor.

  5. Si lo deseas, invoca el siguiente comando para mostrar la información de registro de tu aplicación:

    sudo docker logs CONTAINER-NAME

  6. Inicia una shell en el contenedor que ejecuta tu código:

    docker exec -it CONTAINER-NAME /bin/bash

  7. Cuando termines la depuración, ingresa exit para salir del contenedor y, luego, exit otra vez a fin de salir de la sesión de SSH.

  8. Inhabilita la depuración de tu instancia para permitir que se reanude su funcionamiento normal.

Información sobre los contenedores comunes

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 seguras a tu instancia de Cloud SQL.
fluentd_logger Agente de Logging.
nginx_proxy Envía las solicitudes a la aplicación a través de un proxy.
opentelemetry-collector Recibe, procesa y exporta datos de telemetría.
stackdriver-monitoring-agent Recopila, almacena y supervisa la información del sistema.

Ten en cuenta que estos contenedores de sidecars están sujetos a cambios sin previo aviso.