Como criar perfis de aplicativos Python

Esta página descreve como modificar seu aplicativo Python para capturar dados de criação de perfil e enviá-los para seu projeto do Google Cloud. Para informações gerais sobre criação de perfil, consulte Conceitos de criação de perfil.

Tipos de perfil para Python:

  • Tempo de CPU
  • Tempo decorrido (linha de execução principal)

Versões compatíveis com a linguagem Python:

  • Python 3.6 a 3.11.0.

Versões compatíveis com o agente de criação de perfil:

  • A versão mais recente do agente é compatível. Em geral, lançamentos com mais de um ano não são compatíveis. Recomendamos que você use a versão do agente lançada mais recentemente.

Sistemas operacionais compatíveis:

  • Linux. A criação de perfil de aplicativos Python é compatível com kernels do Linux em que a biblioteca C padrão foi implementada com glibc ou musl. Saiba mais sobre informações de configuração específicas aos kernels do Alpine Linux em Como executar no Alpine Linux.

Ambientes compatíveis:

Como ativar a API Profiler

Antes de usar o agente de criação de perfil, garanta que a API Profiler subjacente esteja ativada. É possível verificar o status da API e ativá-la, se necessário, usando a Google Cloud CLI ou o console Google Cloud :

CLI da gcloud

  1. Se você ainda não instalou a CLI do Google Cloud na sua estação de trabalho, consulte a documentação da CLI do Google Cloud.

  2. Execute este comando:

    gcloud services enable cloudprofiler.googleapis.com
    

Para ver mais informações, consulte gcloud services.

Console do Google Cloud

  1. Ative a API Cloud Profiler.

    Funções necessárias para ativar APIs

    Para ativar as APIs, é necessário ter o papel do IAM de administrador de uso do serviço (roles/serviceusage.serviceUsageAdmin), que contém a permissão serviceusage.services.enable. Saiba como conceder papéis.

    Ativar a API

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

Conceder papel do IAM à conta de serviço

Se você estiver implantando o aplicativo em recursos do Google Cloud e usando a conta de serviço padrão sem modificar as concessões de função para ela, pule esta seção.

Se você fizer alguma das ações a seguir, conceda à conta de serviço o papel do IAM de Agente do Cloud Profiler (roles/cloudprofiler.agent):

  1. Você está usando a conta de serviço padrão, mas modificou as concessões de papéis dela.
  2. Você está usando uma conta de serviço criada pelo usuário.
  3. Se você estiver usando a Identidade da carga de trabalho, conceda o papel de agente do Cloud Profiler à conta de serviço do Kubernetes.

É possível conceder um papel do IAM a uma conta de serviço usando o consoleGoogle Cloud ou a Google Cloud CLI. Por exemplo, é possível usar o comando gcloud projects add-iam-policy-binding:

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

Antes de usar o comando anterior, substitua o seguinte:

  • GCP_PROJECT_ID: o ID do projeto.
  • MY_SVC_ACCT_ID: o nome da conta de serviço

Para mais informações, consulte Gerenciar o acesso a projetos, pastas e organizações.

Como usar o Cloud Profiler

Para práticas recomendadas usando Python, acesse Como configurar um ambiente de desenvolvimento Python.

Compute Engine

No Compute Engine:

  1. Instale o compilador C/C ++ e as ferramentas de desenvolvimento:

    sudo apt-get install -y build-essential
    
  2. Instale o pip:

    sudo apt-get install -y python3-pip
    
  3. Instale o pacote do Profiler:

    pip3 install google-cloud-profiler
    
  4. Importe o módulo googlecloudprofiler e chame a função googlecloudprofiler.start o quanto antes no código de inicialização:

    import googlecloudprofiler
    
    
    def main():
        # Profiler initialization. It starts a daemon thread which continuously
        # collects and uploads profiles. Best done as early as possible.
        try:
            googlecloudprofiler.start(
                service="hello-profiler",
                service_version="1.0.1",
                # verbose is the logging level. 0-error, 1-warning, 2-info,
                # 3-debug. It defaults to 0 (error) if not set.
                verbose=3,
                # project_id must be set if not running on GCP.
                # project_id='my-project-id',
            )
        except (ValueError, NotImplementedError) as exc:
            print(exc)  # Handle errors here

    Especifique o parâmetro service na função start. Para filtrar pela versão do aplicativo na interface do Profiler, especifique o parâmetro service_version. Saiba mais sobre solução de problemas e exceções em Como solucionar problemas.

GKE

Para o GKE:

  1. Modifique o Dockerfile para instalar o pacote do Profiler:

    FROM python:3
    ...
    RUN apt-get update && apt-get install -y build-essential python3-pip
    RUN pip3 install google-cloud-profiler
    
  2. Importe o módulo googlecloudprofiler e chame a função googlecloudprofiler.start o quanto antes no código de inicialização:

    import googlecloudprofiler
    
    
    def main():
        # Profiler initialization. It starts a daemon thread which continuously
        # collects and uploads profiles. Best done as early as possible.
        try:
            googlecloudprofiler.start(
                service="hello-profiler",
                service_version="1.0.1",
                # verbose is the logging level. 0-error, 1-warning, 2-info,
                # 3-debug. It defaults to 0 (error) if not set.
                verbose=3,
                # project_id must be set if not running on GCP.
                # project_id='my-project-id',
            )
        except (ValueError, NotImplementedError) as exc:
            print(exc)  # Handle errors here

    Especifique o parâmetro service na função start. Para filtrar pela versão do aplicativo na interface do Profiler, especifique o parâmetro service_version. Saiba mais sobre solução de problemas e exceções em Como solucionar problemas.

Ambiente flexível

No ambiente flexível do App Engine, faça o seguinte:

  1. Adicione google-cloud-profiler ao seu arquivo requirements.txt.

  2. Importe o módulo googlecloudprofiler e chame a função googlecloudprofiler.start o quanto antes no código de inicialização.

No App Engine, service e service_version são derivados do seu ambiente operacional. Saiba mais sobre solução de problemas e exceções em Como solucionar problemas.

Ambiente padrão

No ambiente padrão do App Engine, que requer o ambiente de execução do Python 3, faça o seguinte:

  1. Adicione google-cloud-profiler ao seu arquivo requirements.txt.

  2. Importe o módulo googlecloudprofiler e chame a função googlecloudprofiler.start o quanto antes no código de inicialização.

No App Engine, service e service_version são derivados do seu ambiente operacional. Saiba mais sobre solução de problemas e exceções em Como solucionar problemas.

Função start

A função googlecloudprofiler.start cria uma linha de execução do daemon que coleta e faz upload de perfis continuamente. Você deve chamar