Esta página descreve como configurar seu ambiente e seu aplicativo Python para usar o Stackdriver Debugger.
Para alguns ambientes, é preciso especificar explicitamente o escopo de acesso para permitir que o agente do Stackdriver Debugger envie dados.
Recomendamos definir o escopo de acesso da forma mais ampla possível e, em seguida, usar o Cloud Identity and Access Management para restringir o acesso.
Para manter essa prática recomendada, defina o escopo de acesso para todas as APIs Cloud com a opção cloud-platform
.
Ambiente padrão do App Engine
Se você estiver usando o Python 2.7, o depurador será ativado por padrão e nenhuma configuração será necessária.
Se você estiver usando o Python 3.7, precisará ativar manualmente os agentes do depurador seguindo as instruções para o ambiente flexível do App Engine.
A página de depuração no Console do GCP exibe automaticamente os arquivos implantados que correspondem ao código-fonte do app. Para saber mais sobre a correspondência de código-fonte, consulte Como selecionar o código-fonte automaticamente.
Ambiente flexível do App Engine
Você pode usar o depurador com o tempo de execução do Python ou o tempo de execução personalizado do App Engine.
Verifique se as instâncias de VM do ambiente flexível do App Engine estão executando:
- uma imagem Debian Linux de 64-bit;
- Python 2.7 ou 3.6
Verifique se o arquivo
app.yaml
contém as seguintes linhas:runtime: python env: flex # The Python runtime uses Python 3.6 by default. # To use Python 2.7 add the following lines. # runtime_config: # python_version: 2
Se você estiver usando um tempo de execução personalizado, use
runtime: custom
.Adicione
google-python-cloud-debugger
arequirements.txt
.Adicione as seguintes linhas o quanto antes ao código de inicialização, como na função principal, ou em
manage.py
ao usar a biblioteca do Django na Web (somente versão 1.*).try: import googleclouddebugger googleclouddebugger.enable() except ImportError: pass
O depurador está pronto para ser usado com o app.
Para que a página "Depuração" no Console do GCP mostre automaticamente o código-fonte correspondente ao aplicativo implantado, consulte Como selecionar o código-fonte automaticamente.
Google Kubernetes Engine
- Crie seu cluster com um dos seguintes escopos de acesso:
https://www.googleapis.com/auth/cloud-platform
https://www.googleapis.com/auth/cloud_debugger
Para criar um cluster usando o
gcloud
, faça o seguinte:- Atualize o
gcloud
para a versão mais recente (opcional):gcloud components update
- Defina o código do projeto padrão:
gcloud config set project [PROJECT_ID]
- Se você estiver trabalhando com clusters zonais, defina a zona de computação padrão:
gcloud config set compute/zone [COMPUTE_ZONE]
- Se você estiver trabalhando com clusters regionais, defina a região de computação padrão:
gcloud config set compute/region [COMPUTE_REGION]
- Execute o comando de criação:
gcloud container clusters create example-cluster-name --scopes https://www.googleapis.com/auth/cloud-platform
Para informações mais detalhadas, consulte Como criar um cluster.
- Siga as instruções do Compute Engine.
Compute Engine
Verifique se as instâncias de VM do Compute Engine estão executando:
- uma imagem Debian Linux de 64-bit;
- Python 2.7 ou 3.7.
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
Faça o download do agente do Debugger.
A maneira mais fácil de instalar o Stackdriver Debugger para Python é com o
pip
:pip install google-python-cloud-debugger
Adicione as seguintes linhas o quanto antes ao código de inicialização, como na função principal, ou em
manage.py
ao usar a biblioteca do Django na Web.try: import googleclouddebugger googleclouddebugger.enable( module='[MODULE]', version='[VERSION]' ) except ImportError: pass
Como alternativa, se você não tem permissão para alterar o código, execute o agente do Debugger como um módulo:
python -m googleclouddebugger \ --module=[MODULE] \ --version=[VERSION] \ -- \ myapp.py
Sendo que, em ambos os casos, vale o seguinte:
[MODULE]
é o nome do app.
Juntamente com a versão, essa informação é usada para identificar o destino da depuração na respectiva página do Console do GCP.
Exemplos:MyApp
,Backend
ouFrontend
.[VERSION]
é a versão do app (por exemplo, o código da versão).
A página "Depuração" do Console do GCP mostra a versão em execução como[MODULE] - [VERSION]
.
Exemplos de valores:v1.0
,build_147
ouv20170714
.
O depurador está pronto para ser usado com o app.
Para que a página "Depuração" no Console do GCP mostre automaticamente o código-fonte correspondente ao app implantado, consulte Como selecionar o código-fonte automaticamente.
Ambiente local e outros
Verifique se sua estação de trabalho está executando:
- uma imagem Debian Linux de 64-bit;
- Python 2.7 ou 3.7.
Faça o download do agente do Debugger.
A maneira mais fácil de instalar o Stackdriver Debugger para Python é com o
pip
:pip install google-python-cloud-debugger
Faça o download das credenciais da conta de serviço.
Para usar o agente do Stackdriver Debugger para Python em máquinas não hospedadas pelo Google Cloud Platform, o agente deve usar as credenciais de uma conta de serviço do GCP para se autenticar com o serviço Stackdriver Debugger.Use a página Contas de serviço do Console do GCP para criar um arquivo de credenciais para uma conta de serviço nova ou existente. A conta de serviço precisa ter pelo menos o papel
Stackdriver Debugger Agent
.Coloque o arquivo JSON da conta de serviço ao lado do agente do Stackdriver Debugger para Python.
Adicione as seguintes linhas o quanto antes ao código de inicialização, como na função principal, ou em
manage.py
ao usar a biblioteca do Django na Web.try: import googleclouddebugger googleclouddebugger.enable( module='[MODULE]', version='[VERSION]' service_account_json_file='/opt/cdbg/gcp-svc.json') except ImportError: pass
Como alternativa, se você não tem permissão para alterar o código, execute o agente do Debugger como um módulo:
python \ -m googleclouddebugger \ --module=[MODULE] \ --version=[VERSION] \ --service_account_json_file=/opt/cdbg/gcp-svc.json \ -- \ myapp.py
Sendo que, em ambos os casos, vale o seguinte:
[MODULE]
é o nome do app.
Juntamente com a versão, essa informação é usada para identificar o destino da depuração na respectiva página do Console do GCP.
Exemplos:MyApp
,Backend
ouFrontend
.[VERSION]
é a versão do app (por exemplo, o código da versão).
A página "Depuração" do Console do GCP mostra a versão em execução como[MODULE] - [VERSION]
.
Exemplos de valores:v1.0
,build_147
ouv20170714
.- A variável de ambiente
GOOGLE_APPLICATION_CREDENTIALS
pode ser usada no lugar da especificação deservice_account_json_file
.
O depurador está pronto para ser usado com o app.
A página "Depuração" no Console do GCP pode mostrar arquivos de origem locais, sem upload, para desenvolvimento local. Consulte Como selecionar o código-fonte manualmente.
Como solucionar problemas
O pacote google-python-cloud-debugger
do Python requer o pacote python2.7-dev
do Linux e os pacotes setuptools
e wheel
do Python. Esses pacotes costumam estar instalados quando você instala pip
com todas as dependências sugeridas, porém, a ausência de alguns deles pode causar os erros a seguir.
ImportError: No module named setuptools
O pacote
setuptools
do Python precisa ser instalado (por exemplo,pip install setuptools
).invalid command 'bdist_wheel'
ouFailed building wheel for '...'
O pacote
wheel
do Python precisa ser instalado (por exemplo,pip install wheel
).ImportError: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
O pacote
python2.7-dev
do Linux precisa ser instalado. Por exemplo,apt-get install python2.7-dev
.