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.
Liberar espaço.
Para seguir as instruções detalhadas desta tarefa diretamente no Google Cloud console, clique em Orientações:
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 Google Cloud de.
- Faça login na sua Google Cloud conta do. Se você começou a usar o Google Cloud, crie uma conta para avaliar o desempenho dos nossos produtos em situações reais. Clientes novos também recebem US $300 em créditos para executar, testar e implantar cargas de trabalho.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Google Kubernetes Engine and Cloud Trace APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Google Kubernetes Engine and Cloud Trace APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
Funções exigidas
Para receber as permissões necessárias para criar um cluster do Google Kubernetes Engine e visualizar os spans de rastreamento, solicite ao seu administrador que lhe conceda as seguintes funções do IAM em seu projeto:
-
Administrador do Kubernetes Engine (
roles/container.admin) -
Usuário do Cloud Trace (
roles/cloudtrace.user) -
Usuário da conta de serviço (
roles/iam.serviceAccountUser) -
Administrador do Service Usage (
roles/serviceusage.serviceUsageAdmin)
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Também é possível conseguir as permissões necessárias usando personalizados papéis ou outros predefinidos papéis.
Criar um cluster do GKE
Este guia cria um cluster padrão do GKE. Se você usar o modo Autopilot para o Google Kubernetes Engine ou ativar a Federação de Identidade da Carga de Trabalho para GKE, então você deve configurar seu aplicativo para usar a Federação de Identidade da Carga de Trabalho para GKE.
Na barra de ferramentas, clique em terminal
Ativar o Cloud Shell e execute as etapas a seguir nele.Crie um cluster:
gcloud container clusters create cloud-trace-demo --zone us-central1-cO comando anterior, que leva vários minutos para ser concluído, cria um cluster padrão com o nome
cloud-trace-demona zonaus-central1-c.Configure
kubectlpara 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-cVerifique o acesso ao cluster:
kubectl get nodesUm 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
Baixar e implantar um aplicativo
Baixe 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.gitExecute o comando a seguir para implantar o aplicativo de amostra:
cd python-docs-samples/trace/cloud-trace-demo-app-opentelemetry && ./setup.shA consulta
setup.shleva 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-becloud-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 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.
A captura de tela a seguir mostra o resultado da execução do comando
curlvárias vezes. O gráfico mostra dados de latência agregados para spans, que descrevem suboperações de rastreamento.
Para conferir os detalhes de um trace, selecione um período no gráfico ou uma linha na tabela.
A caixa de diálogo de detalhes do trace é aberta, conforme mostrado na captura de tela a seguir:
Um diagrama de Gantt mostra informações sobre o trace selecionado. A primeira linha no diagrama de Gantt é para o trace, e cada linha seguinte é um período no trace.
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 amostra é escrito em Python, usa o framework Flask e os pacotes OpenTelemetry e é executado em um cluster do GKE.
Este guia cria um cluster padrão do GKE. Se você usar o modo Autopilot para o Google Kubernetes Engine ou ativar a Federação de Identidade da Carga de Trabalho para GKE, então você deve configurar seu aplicativo para usar a Federação de Identidade da Carga de Trabalho para 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 Google Cloud projeto:
O aplicativo importa vários pacotes OpenTelemetry:
O aplicativo instrumenta solicitações da Web com contexto de trace e rastreia automaticamente os handlers e solicitações do Flask para outros serviços:
O aplicativo configura o exportador do Cloud Trace como um provedor de trace, 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 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, e 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:
kubectlbusca o endereço IP do serviço chamadocloud-trace-demo-a.- O comando
curlenvia a solicitação HTTP para o serviçoa. - O serviço
arecebe a solicitação HTTP e envia uma solicitação ao serviçob. - O serviço
brecebe a solicitação HTTP e envia uma solicitação ao serviçoc. - O serviço
crecebe a solicitação HTTP do serviçobe retorna a stringHello, I am service Cpara o serviçob. - O serviço
brecebe a resposta do serviçoc, anexa-a à stringAnd I am service Be retorna o resultado ao serviçoa. - O serviço
arecebe a resposta do serviçobe a anexa à stringHello, I am service A. - A resposta do serviço
aé impressa no Cloud Shell.
Liberar espaço
Para evitar cobranças na conta do Google Cloud pelos recursos usados nesta página, siga as etapas abaixo.
Se você criou um novo projeto e não precisa mais dele, então exclua 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:
Para mais informações sobre a janela Explorador de traces, consulte Encontrar e visualizar traces.
Para saber mais sobre como gerenciar clusters do GKE, consulte kubectl.