Conferir a latência das solicitações do app
Saiba como coletar e visualizar dados de latência dos seus aplicativos:
Criar um cluster do Google Kubernetes Engine (GKE) usando a CLI do Google Cloud.
Faça o download e implante um aplicativo de exemplo no cluster.
Criar um trace enviando uma solicitação HTTP para o aplicativo de amostra.
Conferir as informações de latência do trace criado.
Fazer a limpeza.
Para seguir as instruções passo a passo desta tarefa diretamente no console do Google Cloud, clique em Orientação:
Antes de começar
-
As restrições de segurança definidas pela sua organização podem impedir que você conclua as etapas a seguir. Para informações sobre solução de problemas, consulte Desenvolver aplicativos em um ambiente restrito do Google Cloud.
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Google Kubernetes Engine and Cloud Trace APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Google Kubernetes Engine and Cloud Trace APIs.
Criar um cluster do GKE
Na barra de ferramentas, clique em terminal.
Ative o Cloud Shell e execute as etapas a seguir no Cloud Shell.Crie um cluster:
gcloud container clusters create cloud-trace-demo --zone us-central1-c
O comando anterior, que leva vários minutos para ser concluído, cria um cluster padrão com o nome
cloud-trace-demo
na zonaus-central1-c
.Configure
kubectl
para atualizar automaticamente as credenciais e usar a mesma identidade da CLI do Google Cloud:gcloud container clusters get-credentials cloud-trace-demo --zone us-central1-c
Verifique o acesso ao cluster:
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
Fazer o download, implantar e aplicar
Faça o download e implante um aplicativo Python, que usa o framework Flask e o pacote OpenTelemetry. O aplicativo é descrito na seção Sobre o app desta página.
No Cloud Shell, faça o seguinte:
Clone um app Python do GitHub:
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Execute o comando a seguir para implantar o aplicativo de amostra:
cd python-docs-samples/trace/cloud-trace-demo-app-opentelemetry && ./setup.sh
A consulta
setup.sh
leva alguns minutos para ser concluída.O script configura três serviços usando uma imagem pré-criada e aguarda o provisionamento de todos os recursos. As cargas de trabalho são chamadas de
cloud-trace-demo-a
,cloud-trace-demo-b
ecloud-trace-demo-c
.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.
Criar dados de trace
Um trace descreve o tempo que um aplicativo leva para concluir uma única operação.
Para criar um trace, execute o comando a seguir no Cloud Shell:
curl $(kubectl get svc -o=jsonpath='{.items[?(@.metadata.name=="cloud-trace-demo-a")].status.loadBalancer.ingress[0].ip}')
A resposta do comando anterior será parecida com esta:
Hello, I am service A
And I am service B
Hello, I am service C
É possível executar o comando curl
várias vezes para gerar vários traces.
Consultar dados de latência
-
No console do Google Cloud, acesse a página Explorador de traces:
Acessar o Explorador de traces
Também é possível encontrar essa página usando a barra de pesquisa.
Cada trace é representado por um ponto no gráfico e uma linha na tabela.
Na captura de tela a seguir, há vários traces:
Para conferir os detalhes de um trace, selecione um ponto no gráfico ou uma linha na tabela.
O gráfico de dispersão é atualizado, e o ponto selecionado é destacado com um círculo desenhado ao redor do ponto e todos os outros pontos que representa todos os outros traços ficam esmaecidos.
Um diagrama de Gantt mostra informações sobre o trace selecionado. A primeira linha no diagrama de Gantt é para o trace e existe uma linha para cada período no trace. Um período descreve quanto tempo leva para executar uma suboperação completa.
Para consultar informações detalhadas sobre um período, selecione o período no diagrama de Gantt.
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 exemplo é escrito em Python, usa o framework Flask e os pacotes OpenTelemetry e é executado em um cluster do GKE.
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 as solicitações da Web com contexto de trace e de forma automática rastreia gerenciadores e solicitações do Flask para outros serviços:
O aplicativo configura o exportador do Cloud Trace como um provedor de traces, que propaga o contexto de trace no formato do Cloud Trace:
O snippet de código a seguir mostra como enviar solicitações em Python. O OpenTelemetry propaga implicitamente o contexto de trace para você com seus solicitações enviadas:
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 o stringHello, I am service C
para o serviçob
. - O serviço
b
recebe a resposta do serviçoc
, a anexa à stringAnd I am service B
e retorna o resultado para o 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 conta do Google Cloud pelos recursos usados nesta página, siga estas etapas.
Se você criou um novo projeto e não precisa mais dele, excluir o projeto.
Se você usou um projeto atual, faça o seguinte:
Para excluir o cluster, execute o comando a seguir no Cloud Shell:
gcloud container clusters delete cloud-trace-demo --zone us-central1-c
A seguir
- Para informações sobre linguagens e plataformas compatíveis, consulte Visão geral do Cloud Trace.
Para detalhes sobre como instrumentar seus aplicativos, consulte:
- Instrumentar para o Cloud Trace.
- OpenTelemetry (link em inglês).
- Modelo de dados.
Para mais informações sobre a janela Explorador de traces, consulte Encontrar e visualizar traces.
Para saber mais sobre o gerenciamento de clusters do GKE, consulte kubectl.