É 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:
Substitua PROJECT-ID pelo seu ID do projeto e siga as solicitações para especificar a versão da instância a ser depurada.gcloud app --project PROJECT-ID instances enable-debug
- Quando terminar de depurar a instância, desative o modo de depuração desta maneira:
Siga as instruções para especificar a versão da instância.gcloud app --project PROJECT-ID instances disable-debug
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 na extremidade 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 a partir da lista suspensa.
Neste momento, você estará no host da instância, que tem vários contêineres em execução. Veja a seção 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 o gcloud, faça o seguinte:
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 execução. Veja a seção 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 aplicativo, a instância também pode ter os seguintes contêineres:
Contêiner e código-fonte | Descrição |
---|---|
cloud-sql | Garante conexões seguras à instância do Cloud SQL. |
fluentd_logger | Agente do Logging. |
nginx_proxy | Solicitações de proxy enviadas ao aplicativo. |
opentelemetry-collector | Recebe, processa e exporta dados de telemetria. |
stackdriver-monitoring-agent | Coleta, armazena emonitora informações do sistema. |
Observe que esses contêineres secundários estão sujeitos a alterações sem aviso prévio.