Rastrear a latência do app usando o Cloud Trace
Para saber como usar o Cloud Trace, faça o seguinte:
Implante um aplicativo de amostra em um cluster do Google Kubernetes Engine (GKE).
Crie um trace enviando uma solicitação HTTP para o aplicativo de amostra.
Use a interface do Cloud Trace para visualizar as informações de latência do trace criado.
Antes de começar
Algumas das etapas deste documento podem não funcionar corretamente se sua organização aplicar restrições ao ambiente do Google Cloud. Nesse caso, talvez não seja possível concluir tarefas como criar endereços IP públicos ou chaves de contas de serviço. Se você fizer uma solicitação que retorne um erro sobre restrições, veja como Desenvolver aplicativos em um ambiente restrito do Google Cloud.
Crie um projeto com o faturamento ativado:
- Faça login na sua conta do Google Cloud. Se você começou a usar o Google Cloud agora, crie uma conta para avaliar o desempenho de nossos produtos em situações reais. Clientes novos também recebem US$ 300 em créditos para executar, testar e implantar cargas de trabalho.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.
-
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.
-
Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.
Fazer o download e implantar o aplicativo
Para fazer o download e implantar o aplicativo, faça o seguinte:
Para abrir o Cloud Shell, clique em Ativar o Cloud Shell na barra de ferramentas do Console do Google Cloud:
Após alguns instantes, uma sessão do Cloud Shell é aberta no console do Google Cloud.
Para fazer o download do código-fonte do GitHub, execute o seguinte comando:
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Ative a API Google Kubernetes Engine usando o seguinte comando:
gcloud services enable container.googleapis.com
Para criar o cluster do GKE chamado
cloud-trace-demo
na zonaus-central1-c
, execute os seguintes comandos no Cloud Shell:ZONE=us-central1-c gcloud container clusters create cloud-trace-demo \ --zone $ZONE
Esse comando leva alguns minutos para ser concluído. Após a conclusão, o projeto do Google Cloud conterá o cluster do GKE chamado
cloud-trace-demo
. Você precisa ter permissão para criar clusters com acesso externo no projeto do Google Cloud.Atualize as credenciais do cluster do GKE executando o seguinte comando:
gcloud container clusters get-credentials cloud-trace-demo --zone $ZONE
Verifique o acesso ao cluster executando o seguinte comando:
kubectl get nodes
Um exemplo de saída desse comando é:
NAME STATUS ROLES AGE VERSION gke-cloud-trace-demo-default-pool-063c0416-113s Ready <none> 78s v1.22.12-gke.2300 gke-cloud-trace-demo-default-pool-063c0416-1n27 Ready <none> 79s v1.22.12-gke.2300 gke-cloud-trace-demo-default-pool-063c0416-frkd Ready <none> 78s v1.22.12-gke.2300
Implante o aplicativo de amostra executando o seguinte comando:
cd python-docs-samples/trace/cloud-trace-demo-app-opentelemetry && ./setup.sh
O script
setup.sh
configura três serviços do aplicativo usando uma imagem pré-criada. As cargas de trabalho são chamadas decloud-trace-demo-a
,cloud-trace-demo-b
ecloud-trace-demo-c
. O script de configuração aguarda o provisionamento de todos os recursos. Portanto, a configuração pode levar vários minutos para ser concluída.Um exemplo de saída desse comando é:
deployment.apps/cloud-trace-demo-a is created service/cloud-trace-demo-a is created deployment.apps/cloud-trace-demo-b is created service/cloud-trace-demo-b is created deployment.apps/cloud-trace-demo-c is created service/cloud-trace-demo-c is created Wait for load balancer initialization complete...... Completed. You can access the demo at http://34.82.132.95/
Criar um trace
Um trace descreve o tempo que um aplicativo leva para concluir uma única operação. Cada trace consiste em um ou mais períodos. Um período descreve quanto tempo leva para executar uma suboperação completa. Por exemplo, um trace pode descrever quanto tempo leva para processar uma solicitação recebida de um usuário e retornar uma resposta. Um período pode descrever por quanto tempo uma chamada RPC específica leva. Para mais informações, consulte Modelo de dados do Cloud Trace.
Para criar um trace enviando uma solicitação de curl para cloud-trace-demo-a
, use o
seguinte comando:
curl $(kubectl get svc -o=jsonpath='{.items[?(@.metadata.name=="cloud-trace-demo-a")].status.loadBalancer.ingress[0].ip}')
É possível executar o comando curl
várias vezes para gerar vários traces.
A saída será assim:
Hello, I am service A And I am service B Hello, I am service C
Visualizar os dados de trace
No console do Google Cloud, selecione Cloud Trace ou clique no botão a seguir:
Janela de visão geral
A janela Visão geral é a visualização padrão no Trace. Essa janela exibe dados de latência e informações resumidas, incluindo um relatório de análise. Se você criou um novo projeto, o painel mais interessante da janela Visão geral será o painel chamado Traces recentes:
Esse painel lista os traces mais recentes e a latência deles. Para ver os detalhes de um trace, clique no link dele.
Janela da lista de traces
No painel de navegação do Trace, clique em list Lista de trace:
Essa janela exibe um gráfico e uma tabela. Cada ponto no gráfico representa um trace. Cada ponto também corresponde a uma linha na tabela. Na captura de tela anterior, vários traces são listados, indicando que o comando curl
foi executado várias vezes.
Para visualizar um trace em detalhes, selecione um ponto no gráfico ou uma linha na tabela:
Depois de selecionar um ponto, você verá um gráfico de cascata em que cada linha corresponde a um período. Os detalhes do período, como as informações resumidas, método e os rótulos de trace sobre a latência do comando, são exibidos na tabela de detalhes. Para ver detalhes sobre um período, clique na linha correspondente no gráfico de hierarquia:
Janela "Relatórios de análise"
Para visualizar ou criar um relatório, no painel de navegação do Trace, clique em Relatórios de análise. O Trace cria relatórios diários automaticamente. Para este projeto, não há dados suficientes para criar um novo relatório.
Sobre o aplicativo
O aplicativo de amostra usado neste guia de início rápido está disponível em um repositório do GitHub. Esse repositório contém informações sobre como usar o aplicativo em ambientes diferentes do Cloud Shell. O aplicativo de amostra é escrito em Python, usa o framework Flask e os pacotes OpenTelemetry e é executado em um cluster do Google Kubernetes Engine.
Instrumentação
O arquivo app.py
no repositório do GitHub contém a instrumentação necessária para capturar e enviar dados do trace para seu projeto do Google Cloud:
O aplicativo importa vários pacotes do OpenTelemetry:
O aplicativo instrumenta solicitações da Web com contexto de trace e rastreia automaticamente os gerenciadores Flask e solicitações para outros serviços:
O aplicativo configura o exportador do Cloud Trace como um provedor de traces, que propaga o contexto do trace no formato dele:
O snippet de código a seguir mostra como enviar solicitações em Python. O OpenTelemetry propaga implicitamente o contexto de rastreamento para você com suas solicitações de saída:
Como o aplicativo funciona
Para maior clareza, nesta seção, cloud-trace-demo
é omitido dos nomes de serviço. Por exemplo, o serviço cloud-trace-demo-c
é referenciado como c
.
Este aplicativo cria três serviços chamados a
, b
e c
. O serviço a
está
configurado para chamar o serviço b
, o serviço b
está configurado para chamar o serviço c
.
Para detalhes sobre a configuração dos serviços, consulte os arquivos YAML no repositório do GitHub.
Ao emitir uma solicitação HTTP para o serviço a
neste guia de início rápido, você usou o seguinte comando curl
:
curl $(kubectl get svc -o=jsonpath='{.items[?(@.metadata.name=="cloud-trace-demo-a")].status.loadBalancer.ingress[0].ip}')
O comando curl
funciona da seguinte maneira:
kubectl
busca o endereço IP do serviço chamadocloud-trace-demo-a
.- O comando
curl
envia a solicitação HTTP para o serviçoa
. - O serviço
a
recebe a solicitação HTTP e envia uma solicitação ao serviçob
. - O serviço
b
recebe a solicitação HTTP e envia uma solicitação ao serviçoc
. - O serviço
c
recebe a solicitação HTTP do serviçob
e retorna a stringHello, I am service C
para o serviçob
. - O serviço
b
recebe a resposta do serviçoc
, anexa-a à stringAnd I am service B
e retorna o resultado ao serviçoa
. - O serviço
a
recebe a resposta do serviçob
e a anexa à stringHello, I am service A
. - A resposta do serviço
a
é impressa no Cloud Shell.
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados nesta página, siga estas etapas.
Se você criou um novo projeto do Google Cloud para este guia de início rápido, exclua o projeto para parar de acumular cobranças. Para excluir seu projeto, faça o seguinte:
- No console do Google Cloud, clique em menu Menu de navegação e selecione Página inicial.
- No painel Informações do projeto, clique em Acessar as configurações do projeto.
- Na janela Configurações, clique em Encerrar e conclua as etapas restantes.
Se você não criou um novo projeto do Google Cloud para este guia de início rápido, exclua o cluster do Google Kubernetes Engine chamado
cloud-trace-demo
executando o seguinte comando:gcloud container clusters delete cloud-trace-demo --zone $ZONE
A seguir
- Para informações sobre linguagens e plataformas compatíveis, consulte Sobre o Cloud Trace.
- Para ver detalhes sobre como instrumentar seus aplicativos, consulte Visão geral da instrumentação para o Cloud Trace.
- Para mais informações sobre a janela Visão geral, consulte Como visualizar traces no console do Google Cloud.
- Para mais informações sobre a janela Lista de traces, consulte Como localizar e visualizar traces.
- Para informações sobre o gráfico de cascata e os detalhes do trace, consulte Como visualizar detalhes do trace.
- Para informações sobre relatórios de análise, consulte Como criar e visualizar relatórios de análise.
- Para saber mais sobre como gerenciar clusters do Google Kubernetes Engine, consulte kubectl