Como configurar o Cloud Debugger para Go

Visão geral

Nesta página, você aprende como configurar seu ambiente e seu aplicativo GO para usar o Cloud Debugger. Para alguns ambientes, é necessário especificar explicitamente o escopo de acesso para que o agente do Cloud Debugger envie dados. Recomendamos definir o escopo de acesso da forma mais ampla possível e depois usar o Gerenciador de identidade e acesso para restringir o acesso. Para manter essa prática recomendada, configure o escopo de acesso para todas as APIs do Cloud com a opção cloud-platform.

Versões de linguagem e ambientes de computação

O Cloud Debugger está disponível para Go versão 1.9 e mais recentes nos seguintes ambientes de computação:

Ambiente padrão do App Engine Ambiente flexível do App Engine Compute Engine Google Kubernetes Engine Cloud Run Cloud Run for Anthos no Google Cloud VMs e contêineres em execução em outra plataforma Cloud Functions

Como configurar o Cloud Debugger

Para configurar o Cloud Debugger, conclua as seguintes tarefas:

  1. Verifique se a API Cloud Debugger está ativada no projeto.

  2. Instale e configure o Debugger no ambiente de computação que você está usando.

  3. Selecione o código-fonte.

Como verificar se a API Cloud Debugger está ativada

Para começar a usar o Cloud Debugger, verifique se a API Cloud Debugger está ativada. O Cloud Debugger é ativado por padrão na maioria dos projetos.
Ativar a API Cloud Debugger

Google Kubernetes Engine

GCLOUD

Para ativar o Debugger usando a gcloud, conclua as etapas abaixo:

  1. Crie seu cluster com um destes escopos de acesso:

    • https://www.googleapis.com/auth/cloud-platform concede ao cluster acesso a todas as APIs do Google Cloud.

    • https://www.googleapis.com/auth/cloud_debugger concede ao cluster acesso apenas à API Stackdriver Debugger. Use esse escopo de acesso para reforçar a segurança do seu cluster.

    gcloud container clusters create example-cluster-name \
           --scopes=https://www.googleapis.com/auth/cloud_debugger
    
  2. Adicione as linhas a seguir ao Dockerfile para incluir o agente do Debugger ao app em contêiner:

    RUN go get -u cloud.google.com/go/cmd/go-cloud-debug-agent \
        go-cloud-debug-agent -sourcecontext=[PATH_TO_FILE] -appmodule=[APP_NAME] \
        -appversion=[APP_VERSION] -- [PATH_TO_BINARY] [ARG1] [ARG2]
    

    Onde:

    • PATH_TO_FILE especifica o caminho relativo ao arquivo com formato JSON que contém a configuração de contexto de origem.

    • APP_NAME é o nome do seu aplicativo ou serviço. Além da versão, ele é usado para identificar seu aplicativo no Console do Cloud.

    • APP_VERSION é um marcador de versão fornecido pelo aplicativo. Por exemplo, é possível usar um número de versão. O Console do Cloud exibe a versão em execução como module - version. Por exemplo, main - 1.0;

    • PATH_TO_BINARY especifica o caminho relativo para o binário do aplicativo;

    • ARG1 e ARG2 são marcadores para quaisquer argumentos a mais que o aplicativo exigir.

O depurador agora estará pronto para uso quando você implantar o app em contêiner.

Para informações mais detalhadas, consulte Como criar um cluster.

CONSOLE

Para ativar o Debugger usando o Console, conclua as etapas a seguir:

  1. Depois de selecionar o tipo de cluster, clique em Mais opções no painel Pool de nós:

    Campo

  2. Selecione uma das opções abaixo no painel Segurança:

    • Permitir acesso completo a todas as APIs do Cloud.

    • Permitir o acesso de cada API e, em seguida, selecionar Ativado para o Cloud Debugger.

Compute Engine

  1. Verifique se as instâncias de VM do Compute Engine estão executando uma imagem do Debian Linux de 64 bits.

  2. Verifique se as instâncias de VM do Compute Engine foram criadas com a opção de escopo de acesso Permitir acesso completo a todas as APIs do Cloud ou se elas têm um dos seguintes escopos de acesso:

    • https://www.googleapis.com/auth/cloud-platform
    • https://www.googleapis.com/auth/cloud_debugger
  3. As otimizações atuais do compilador Go interferem na precisão da depuração. Como resultado, o Cloud Debugger mostra informações incorretas sobre seu aplicativo quando ele é criado com as otimizações padrão do compilador Go.

    Para ver as informações de depuração corretas, crie o aplicativo sem as otimizações padrão. As amostras de comandos a seguir demonstram como desativar as otimizações ao usar o Go 1.10 ou uma versão mais recente:

    go build -gcflags=all='-N -l'
    

    O valor gcflags anterior inclui -N para desativar otimizações e -l para desativar o inlining.

  4. Faça o download do agente do Debugger.

    O agente do Cloud Debugger é um binário leve que você ativa para o aplicativo na inicialização. O agente é iniciado com o aplicativo e se comunica com o back-end do Cloud Debugger enquanto o aplicativo está em execução.

    Depois de criar e implantar seu aplicativo do Compute Engine, faça o download e instale o agente de depuração:

    go get -u cloud.google.com/go/cmd/go-cloud-debug-agent
    
  5. Inicie o agente e o programa:

    go-cloud-debug-agent -sourcecontext=[PATH_TO_FILE] -appmodule=[APP_NAME] \
                     -appversion=[APP_VERSION] -- [PATH_TO_BINARY] [ARG1] [ARG2]
    

    Onde:

    • PATH_TO_FILE especifica o caminho relativo ao arquivo com formato JSON que contém a configuração de contexto de origem.

    • APP_NAME é o nome do seu aplicativo ou serviço. Além da versão, ele é usado para identificar seu aplicativo no Console do Cloud.

    • APP_VERSION é um marcador de versão fornecido pelo aplicativo. Por exemplo, é possível usar um número de versão. O Console do Cloud exibe a versão em execução como module - version. Por exemplo, main - 1.0;

    • PATH_TO_BINARY especifica o caminho relativo para o binário do aplicativo;

    • ARG1 e ARG2 são marcadores para quaisquer argumentos a mais que o aplicativo exigir.

    Exemplo:

    go-cloud-debug-agent -appmodule=main -appversion=1.0 -- bin/my-app my-arg
    

O depurador está pronto para ser usado com o app.

Ambiente local e outros

O agente do Cloud Debugger para Go é compatível com ambientes locais ou outros que usam o Go 1.9 e versões anteriores.