Como depurar uma instância

É possível ativar o modo de depuração para uma VM. No modo de depuração, os membros do projeto com os papéis de Proprietário, Editor e Administrador do App Engine têm acesso raiz à VM. Ainda que o modo de depuração esteja ativado, a distribuição automática de atualizações do sistema operacional e de patches de segurança está desativada. No entanto, a VM ainda fará parte do pool do balanceador de carga e continuará a receber solicitações externas.

Sempre que você ativar ou desativar a depuração, um evento "ativar/desativar a depuração da instância da VM" aparecerá no Console do Google Cloud, e o evento será registrado no arquivo /var/log/syslog.log da VM.

Como ativar e desativar o modo de depuração

É possível usar a gcloudpara ativar e desativar o modo de depuração de uma instância.

Para ativar e desativar o modo de depuração na gcloud, faça isto:

  1. Use o comando gcloud app instances enable-debug para depurar as VMs de uma determinada instância e versão da maneira a seguir:
    gcloud app --project [PROJECT-ID] instances enable-debug
    Substitua PROJECT-ID pelo ID do seu projeto e siga as instruções para especificar a versão da instância a ser depurada.
  2. Quando terminar de depurar a instância, desative o modo de depuração desta maneira:
    gcloud app --project [PROJECT-ID] instances disable-debug
    Siga as instruções para especificar a versão da instância.

Ao desativar o modo de depuração, a VM é interrompida e uma nova instância do app é iniciada e executada em uma nova VM limpa.

Como se conectar à instância

Console

Para se conectar a uma instância no console, faça o seguinte:

  1. Acesse a página de instâncias do Console do Cloud do seu projeto:

    Acessar a página "Instâncias" (em inglês)

  2. Clique em SSH à direita da linha que contém a instância que você quer acessar:

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

    Também é possível selecionar diferentes opções para iniciar uma sessão SSH da lista suspensa.

  3. Neste momento, você estará no host da instância, que tem vários contêineres em execução. Consulte Noções básicas sobre contêineres comuns abaixo para mais detalhes.
  4. Na janela de terminal, liste os contêineres em execução na instância:
    sudo docker ps
  5. A saída do comando sudo docker ps lista cada contêiner por linha. Localize aquela que contém seu ID de projeto: este é o contêiner que está executando seu código. Observe o NOME do contêiner.
  6. Também é possível listar as informações de geração de registros do seu aplicativo. Para isso, basta invocar:
    sudo docker logs [CONTAINER-NAME]
  7. Inicie um shell no contêiner que está executando seu código:
    sudo docker exec -it [CONTAINER-NAME] /bin/bash
  8. Quando terminar a depuração, digite exit para sair do contêiner e, em seguida, exit novamente para sair da sessão SSH.
  9. Desative a depuração da sua instância para permitir que ela retome a operação normal.

gcloud

Para se conectar a uma instância usando o gcloud, faça isto:

  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 momento, você estará no host da instância, que tem vários contêineres em execução. Consulte Noções básicas sobre contêineres comuns abaixo para mais detalhes.
  3. Na janela de terminal, liste os contêineres em execução na instância:
    sudo docker ps
  4. A saída do comando sudo docker ps lista cada contêiner por linha. Localize aquela que contém seu ID de projeto: este é o contêiner que está executando seu código. Observe o NOME do contêiner.
  5. Também é possível listar as informações de geração de registros do seu aplicativo. Para isso, basta invocar:
    sudo docker logs [CONTAINER-NAME]
  6. Inicie um shell no contêiner que está executando seu código:
    docker exec -it [CONTAINER-NAME] /bin/bash
  7. Quando terminar a depuração, digite exit para sair do contêiner e, em seguida, exit novamente para sair da sessão SSH.
  8. Desative a depuração da sua instância para permitir que ela retome a operação normal.

Noções básicas sobre contêineres comuns

Além do contêiner que está executando o código do seu aplicativo, sua instância também pode ter os seguintes contêineres:

Contêiner e código-fonte Org. de código aberto Descrição
fluentd_logger (em inglês) fluentd.org/ (em inglês) Agente do Logging.
memcache_proxy (em inglês) código aberto do proxy do memcache (em inglês) Fornece funcionalidade de memcache para o aplicativo.
nginx_proxy (em inglês) nginx.org (em inglês) Solicitações de proxy enviadas ao aplicativo.