É possível ativar o modo de depuração para uma VM. No modo de depuração, as principais com os papéis "Proprietário", "Editor" e "Administrador do App Engine" no projeto 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 gcloud
para ativar e desativar o modo de depuração de uma
instância. Para depurar uma instância, o papel precisa conter a
permissão appengine.instances.enableDebug
.
Para ativar e desativar o modo de depuração na gcloud
, faça isto:
-
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 seu ID do projeto e siga as solicitações para especificar a versão da instância a ser depurada. -
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:
- Acesse a página de instâncias do console do Google Cloud do seu projeto:
-
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.
Você também pode selecionar diferentes opções para iniciar uma sessão SSH da lista suspensa.
- 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.
-
Na janela de terminal, liste os contêineres em execução na instância:
sudo docker ps
-
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. -
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
-
Inicie um shell no contêiner que está executando seu código:
sudo docker exec -it CONTAINER-NAME /bin/bash
-
Quando terminar a depuração, digite
exit
para sair do contêiner e, em seguida,exit
novamente para sair da sessão SSH. - 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 a gcloud, siga estas etapas:
-
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
- Neste momento, você estará no host da instância, que tem vários contêineres (em inglês) em execução. Consulte Noções básicas sobre contêineres comuns abaixo para mais detalhes.
-
Na janela de terminal, liste os contêineres em execução na instância:
sudo docker ps
-
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. -
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
-
Inicie um shell no contêiner que está executando seu código:
docker exec -it CONTAINER-NAME /bin/bash
-
Quando terminar a depuração, digite
exit
para sair do contêiner e, em seguida,exit
novamente para sair da sessão SSH. - 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 | fluentd.org/ | Agente do Logging. |
memcache_proxy | código aberto do proxy do memcache | Fornece funcionalidade de memcache para o aplicativo. |
nginx_proxy | nginx.org | Solicitações de proxy enviadas ao aplicativo. |