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
:
-
Use o comando gcloud
app instances enable-debug para depurar as VMs de uma instância e versão
específicas, da seguinte forma:
Substitua PROJECT-ID pelo seu ID do projeto e siga as instruções para especificar a versão da instância a depurar.gcloud app --project PROJECT-ID instances enable-debug
-
Quando terminar a depuração, desative o modo de depuração da seguinte forma:
Siga as instruções para especificar a versão da instânciagcloud app --project PROJECT-ID instances disable-debug
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:
Aceda à Google Cloud página de instâncias da consola para o seu projeto:
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.
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.
Na janela do terminal, liste os contentores em execução na instância:
sudo docker ps
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.Opcionalmente, pode listar as informações de registo da sua aplicação invocando:
sudo docker logs CONTAINER-NAME
Inicie uma shell no contentor que está a executar o seu código:
sudo docker exec -it CONTAINER-NAME /bin/bash
Quando terminar a depuração, introduza
exit
para sair do contentor e, em seguida,exit
novamente para sair da sessão SSH.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:
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 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.
Na janela do terminal, liste os contentores em execução na instância:
sudo docker ps
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.Opcionalmente, pode listar as informações de registo da sua aplicação invocando:
sudo docker logs CONTAINER-NAME
Inicie uma shell no contentor que está a executar o seu código:
docker exec -it CONTAINER-NAME /bin/bash
Quando terminar a depuração, introduza
exit
para sair do contentor e, em seguida,exit
novamente para sair da sessão SSH.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.