Como criar perfis de aplicativos em execução fora do Google Cloud

Esta página explica como criar perfis de aplicativos em execução fora do Google Cloud.

Nesse cenário, o aplicativo e o agente do Cloud Profiler são executados fora do Google Cloud, mas você usa a interface do Cloud Profiler para analisar os dados de criação de perfil.

Usar a interface do Profiler para analisar dados de criação de perfil requer um projeto do Google Cloud. O agente de criação de perfil executado em um local externo precisa ser capaz de enviar os perfis de volta para análise. Para ativar esse processo, é preciso:

  1. criar um projeto do Google Cloud e ative a API;
  2. conseguir credenciais para o agente usar quando fizer o upload de perfis;
  3. configurar o agente para usar as credenciais e o ID do projeto do Google Cloud.

Criar um projeto do Google Cloud

No console do Google Cloud, na página do seletor de projetos, clique em Criar projeto para começar a criar um novo projeto do Google Cloud.

Acessar o seletor de projetos

Ativar a API Profiler

  1. No painel de navegação do console do Google Cloud, selecione APIs e serviços, clique em Ativar APIs e serviços e ative a API Cloud Profiler:

    Acesse as configurações da API Profiler

  2. Se a mensagem API ativada for exibida, quer dizer que a API já está ativada. Caso contrário, clique no botão Ativar.

Conseguir credenciais para o agente

Há duas maneiras de conseguir credenciais para o agente usar:

  • Deixar o agente usar uma conta de serviço com autenticação de chave privada.
  • Deixar o agente usar o Application Default Credentials (ADC).

Como usar contas de serviço

Para que o agente use uma conta de serviço com autenticação de chave privada, é preciso:

  1. Crie uma conta de serviço. Por exemplo, usando a Google Cloud CLI:

    gcloud iam service-accounts create MY_SVC_ACCT_ID --display-name "my service account"
    

    Para mais informações, consulte Como criar uma conta de serviço.

  2. conceder à conta de serviço o papel roles/cloudprofiler.agent para que ela possa gravar dados de criação de perfil. Por exemplo, usando a Google Cloud CLI:

     gcloud projects add-iam-policy-binding GCP_PROJECT_ID \
         --member serviceAccount:MY_SVC_ACCT_ID@GCP_PROJECT_ID.iam.gserviceaccount.com \
         --role roles/cloudprofiler.agent
    

    Consulte Como conceder papéis às contas de serviço para mais informações.

  3. Crie uma chave JSON para a conta de serviço. Por exemplo, usando a Google Cloud CLI:

     gcloud iam service-accounts keys create \
         ~/key.json \
         --iam-account MY_SVC_ACCT_ID@GCP_PROJECT_ID.iam.gserviceaccount.com
    

    Consulte Como criar chaves de conta de serviço para mais informações.

  4. No computador em que o agente de criação de perfil será executado, faça o seguinte:

    1. Coloque uma cópia do arquivo que contém a chave JSON que você acabou de criar.
    2. Defina a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS como o nome totalmente qualificado do arquivo que contém a chave JSON. Essa variável precisa estar visível para o processo que executa o agente de criação de perfil. Portanto, se você usa um script ou Dockerfile para executar o processo, inclua a variável de ambiente neles.

Como usar o Application Default Credentials

Para que o agente use o Application Default Credentials, consiga as credenciais de acesso do usuário por meio de um fluxo da Web. Depois, coloque-as no local designado para a biblioteca do ADC. Essas credenciais atuam como um proxy de uma conta de serviço.

Para usar as credenciais padrão do aplicativo, execute o seguinte comando da Google Cloud CLI:

 gcloud auth application-default login

e siga as etapas mencionadas nele.

Como vincular o agente a um projeto do Google Cloud

O agente de criação de perfil precisa ser configurado para especificar o ID do projeto do Google Cloud. Assim, ele pode fazer o upload de perfis. O mecanismo desse processo depende da linguagem.

Go

Especifique um parâmetro adicional, ProjectID, no objeto profiler.Config descrito em Como criar perfis de aplicativos Go:

 profiler.Config{ProjectID: "GCP_PROJECT_ID", ...}

Java

Especifique uma sinalização complementar de configuração do agente Java, cprof_project_id, na invocação correspondente:

 -cprof_project_id=GCP_PROJECT_ID

Quando seu aplicativo não consegue acessar o servidor de metadados do Compute Engine, são exibidas mensagens semelhantes a esta:

     Error making HTTP request for 169.254.169.254:80/computeMetadata/v1/instance/zone
Para interromper essas mensagens, adicione -cprof_zone_name=VALUE às sinalizações de configuração do agente e reinicie o aplicativo. Para esse cenário, substitua VALUE por uma string descritiva, como “teste”.

Node.js

Especifique um parâmetro complementar, projectID, no objeto serviceContext descrito em Como criar perfis de aplicativos Node.js:

projectId: 'GCP_PROJECT_ID',
serviceContext: {
  ...
}

Python

Especifique um parâmetro complementar, project_id, na chamada de método start descrita em Como criar perfis de aplicativos Python:

googlecloudprofiler.start(..., project_id='GCP_PROJECT_ID')

A seguir