Depurar uma instância

Pode ativar o modo de depuração para uma VM. No modo de depuração, os principais que têm as funções de proprietário, editor e administrador do App Engine no projeto têm acesso de raiz à VM. Quando o modo de depuração está ativado, a implementação automática de atualizações do sistema operativo e patches de segurança é desativada. No entanto, a VM continua a fazer parte do conjunto do balanceador de carga e continua a receber pedidos externos.

Sempre que ativa ou desativa a depuração, é apresentado um evento "VM instance debugging enable/disable" (Ativar/desativar depuração da instância de VM) na Google Cloud consola, e o evento é registado no ficheiro /var/log/syslog.log da VM.

Ativar e desativar o modo de depuração

Pode usar gcloud para ativar e desativar o modo de depuração para uma instância. Para depurar uma instância, a sua função tem de conter a autorização appengine.instances.enableDebug.

Para ativar e desativar o modo de depuração no gcloud:

  1. Use o comando gcloud app instances enable-debug para depurar as VMs de uma instância e versão específicas, da seguinte forma:
    gcloud app --project PROJECT-ID instances enable-debug
    Substitua PROJECT-ID pelo seu ID do projeto e siga as instruções para especificar a versão da instância a depurar.
  2. Quando terminar a depuração, desative o modo de depuração da seguinte forma:
    gcloud app --project PROJECT-ID instances disable-debug
    Siga as instruções para especificar a versão da instância

Quando desativa o modo de depuração, a VM é interrompida e é iniciada uma nova instância da sua app, em execução numa VM nova e limpa.

A ligar à instância

Consola

Para estabelecer ligação a uma instância na consola:

  1. Aceda à Google Cloud página de instâncias da consola para o seu projeto:

    Aceda à página de instâncias

  2. Clique em SSH na extremidade direita da linha que contém a instância à qual quer aceder:

    Esta ação coloca a instância no modo de depuração e abre uma sessão SSH para a instância numa janela de terminal.

    Também pode selecionar diferentes opções para iniciar uma sessão SSH na lista pendente.

  3. Neste ponto, está no anfitrião da instância, que tem vários contentores em execução. Consulte Compreender os contentores comuns a seguir para mais informações sobre estes.

  4. Na janela do terminal, liste os contentores em execução na instância:

    sudo docker ps

  5. O resultado do comando sudo docker ps apresenta cada contentor por linha. Localize a linha que contém o ID do projeto. Este é o contentor que executa o seu código. Tome nota do NOME deste contentor.

  6. Opcionalmente, pode listar as informações de registo da sua aplicação invocando:

    sudo docker logs CONTAINER-NAME

  7. Inicie uma shell no contentor que está a executar o seu código:

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

  8. Quando terminar a depuração, introduza exit para sair do contentor e, em seguida, exit novamente para sair da sessão SSH.

  9. Desative a depuração para a sua instância para permitir que retome o funcionamento normal.

gcloud

Para estabelecer ligação a uma instância através do gcloud:

  1. Com a instância ativada para depuração, invoque o comando:

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

  2. Neste ponto, está no anfitrião da instância, que tem vários contentores em execução. Consulte a secção Compreender os contentores comuns seguinte para ver mais informações sobre estes.

  3. Na janela do terminal, liste os contentores em execução na instância:

    sudo docker ps

  4. O resultado do comando sudo docker ps apresenta cada contentor por linha. Localize a linha que contém o ID do projeto. Este é o contentor que executa o seu código. Tome nota do NOME deste contentor.

  5. Opcionalmente, pode listar as informações de registo da sua aplicação invocando:

    sudo docker logs CONTAINER-NAME

  6. Inicie uma shell no contentor que está a executar o seu código:

    docker exec -it CONTAINER-NAME /bin/bash

  7. Quando terminar a depuração, introduza exit para sair do contentor e, em seguida, exit novamente para sair da sessão SSH.

  8. Desative a depuração para a sua instância para permitir que retome o funcionamento normal.

Compreender os contentores comuns

Além do contentor que executa o código da aplicação, a sua instância também pode ter os seguintes contentores:

Contentor e código-fonte Descrição
cloud-sql Garante ligações seguras à sua instância do Cloud SQL.
fluentd_logger Agente de registos.
nginx_proxy Encaminha pedidos para a aplicação.
opentelemetry-collector Recebe, processa e exporta dados de telemetria.
stackdriver-monitoring-agent Recolhe, armazena e monitoriza informações do sistema.

Tenha em atenção que estes contentores auxiliares estão sujeitos a alterações sem aviso prévio.