Criação de perfis de aplicações em execução fora Google Cloud

Esta página descreve como criar perfis de aplicações executadas fora do Google Cloud.

Neste cenário, a sua aplicação e o agente do Cloud Profiler são executados Google Cloudexternamente, mas usa a interface do Cloud Profiler para analisar os dados de criação de perfis.

A utilização da interface do Profiler para analisar dados de criação de perfis requer um Google Cloud projeto. O agente de criação de perfis em execução noutro local tem de poder enviar os perfis de volta para análise. Para ativar esta opção, tem de:

  1. Crie um Google Cloud projeto e ative a API.
  2. Obter credenciais para o agente de criação de perfis usar ao carregar perfis.
  3. Configure o agente para usar as credenciais e o ID do Google Cloud projeto.

Crie um Google Cloud projeto

In the Google Cloud console, on the project selector page, click Create project to begin creating a new Google Cloud project.

Roles required to create a project

To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

Go to project selector

Ative a API Profiler

  1. Enable the required API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

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

Obtenha credenciais para o agente

Existem duas formas de obter credenciais para o agente usar:

  • Permitir que o agente use uma conta de serviço com autenticação de chave privada
  • Permitir que o agente use as credenciais padrão da aplicação (ADC).

Usar contas de serviço

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

  1. Crie uma conta de serviço. Por exemplo, através da Google Cloud CLI:

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

    Consulte o artigo Criar uma conta de serviço para mais informações.

  2. Conceda à conta de serviço a função roles/cloudprofiler.agent para que possa escrever dados de criação de perfis. Por exemplo, usar 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 o artigo Conceder funções a contas de serviço para mais informações.

  3. Crie uma chave JSON para a conta de serviço. Por exemplo, usar 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 o artigo Criar chaves de contas de serviço para mais informações.

  4. Na máquina onde o agente de criação de perfis vai ser executado:

    1. Coloque uma cópia do ficheiro que contém a chave JSON que acabou de criar.
    2. Defina a variável de ambiente GOOGLE_APPLICATION_CREDENTIALS para o nome totalmente qualificado do ficheiro que contém a chave JSON. Esta variável de ambiente tem de estar visível para o processo que executa o agente de criação de perfis. Por isso, se usar um script ou um Dockerfile para executar o processo, inclua a variável de ambiente aí.

Usar credenciais padrão da aplicação

Para permitir que o agente use as credenciais padrão da aplicação, obtenha credenciais de acesso do utilizador através de um fluxo Web e coloque-as onde a biblioteca de credenciais padrão da aplicação as espera. Estas credenciais atuam como um proxy para uma conta de serviço.

Para usar as Credenciais padrão da aplicação, execute o seguinte comando da CLI Google Cloud:

 gcloud auth application-default login

e siga os passos que este comando lhe indica.

Associar o agente a um Google Cloud projeto

O agente de criação de perfis tem de ser configurado para especificar o ID do seu projeto, para que possa carregar perfis. Google Cloud O mecanismo para o fazer depende do idioma.

Ir

Especifique um parâmetro adicional, ProjectID, no objeto profiler.Config descrito no artigo Criar perfis de aplicações Go:

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

Java

Especifique uma flag de configuração do agente Java adicional, cprof_project_id, na invocação Java:

 -cprof_project_id=GCP_PROJECT_ID

Quando a sua aplicação não consegue aceder ao servidor de metadados do Compute Engine, são apresentadas mensagens semelhantes às seguintes:

     Error making HTTP request for 169.254.169.254:80/computeMetadata/v1/instance/zone
Para parar estas mensagens, adicione -cprof_zone_name=VALUE às flags de configuração do agente e reinicie a aplicação. Para este cenário, substitua VALUE por uma string descritiva, como "teste".

Node.js

Especifique um parâmetro adicional, projectID, no objeto serviceContext descrito em Criar perfis de aplicações Node.js:

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

Python

Especifique um parâmetro adicional, project_id, na chamada do método start descrita no artigo Criar perfis de aplicações Python:

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

O que se segue?