Neste guia de início rápido, você usa o Cloud Shell para implantar um aplicativo de amostra em um cluster do Google Kubernetes Engine (GKE).
O aplicativo é escrito em Python.
Após a implantação, use curl
para emitir uma solicitação HTTP. Essa ação faz com que um trace seja capturado e enviado para seu projeto do Google Cloud.
Por fim, use a interface do Cloud Trace para visualizar as informações de latência do trace gerado.
Antes de começar
-
Faça login na sua conta do Google.
Se você ainda não tiver uma, inscreva-se.
-
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 confirmar se o faturamento está ativado para o 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
Para ativar a API do Google Kubernetes Engine, emita o seguinte comando no Cloud Shell:
gcloud services enable container.googleapis.com
Para criar o cluster do GKE chamado
demo
, execute o seguinte comando no Cloud Shell:gcloud container clusters create demo --zone us-west1-b
Esse comando leva de três a cinco minutos para ser concluído. Após a conclusão, o projeto do Google Cloud conterá o cluster do GKE chamado
demo
. Você precisa ter permissão para criar clusters com acesso externo no projeto do Google Cloud. Se o Google Cloud estiver em uma organização ou em uma pasta, talvez você não tenha essas permissões, mesmo que seja o proprietário do projeto. Se esse comando falhar, entre em contato com o administrador do sistema.Para verificar a criação, execute o seguinte comando
kubectl
:kubectl get nodes
Um exemplo de saída desse comando é:
NAME STATUS ROLES AGE VERSION gke-demo-default-pool-24680f3d-bzvg Ready <none> 26m v1.14.10-gke.27 gke-demo-default-pool-24680f3d-hfnq Ready <none> 26m v1.14.10-gke.27 gke-demo-default-pool-24680f3d-qnh6 Ready <none> 26m v1.14.10-gke.27
Implante o aplicativo de amostra executando o seguinte comando:
cd python-docs-samples/trace/cloud-trace-demo-app && ./setup.sh
O script
setup.sh
, que faz parte desse projeto, configura três serviços diferentes, marcados comocloud-trace-demo-a
,cloud-trace-demo-b
ecloud-trace-demo-c
. Como o script de configuração ajusta um serviço por vez, a configuração leva vários minutos para ser concluída. Veja a seguir um exemplo do que o script imprime no Cloud Shell durante a execução:Creating service a deployment.apps/cloud-trace-demo-a unchanged service/cloud-trace-demo-a unchanged Fetching the external IP of service a Passing external IP for the first service 34.82.132.95 to the second service template deployment.apps/cloud-trace-demo-b created service/cloud-trace-demo-b created Fetching the external IP of service b Passing external IP for the service b 35.230.0.131 to the service c deployment.apps/cloud-trace-demo-c created service/cloud-trace-demo-c created
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, execute o seguinte comando:
curl $(kubectl get svc cloud-trace-demo-c -ojsonpath='{.status.loadBalancer.ingress[0].ip}')
O comando curl
gera uma solicitação HTTP GET
e emite a solicitação para o serviço chamado cloud-trace-demo-c
. Quando essa solicitação é concluída, Helloworld!
é impresso no shell.
É possível executar o comando curl
várias vezes para gerar vários traces.
Visualizar os dados de trace
Para abrir a interface do Cloud Trace, no Console do Google Cloud, clique em menu Menu de navegação e selecione 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 é o painel 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. Essa ação resulta na abertura de dois painéis que exibem os detalhes do trace selecionado:
Um painel exibe o trace em um gráfico de cascata, e o painel mostra os detalhes. Cada linha no gráfico de cascata 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 cascata. Observe que os períodos são para três endereços IP diferentes; eles correspondem aos endereços IP dos três serviços.
A partir desse trace, é possível ver que uma solicitação HTTP recebida pelo nome do serviço cloud-trace-demo-c
é transmitida para o serviço cloud-trace-demo-b
e, em seguida, para cloud-trace-demo-a
.
A tabela de detalhes pode incluir um link para os dados que foram enviados para o Cloud Logging. Para ver as informações na interface do Cloud Logging, clique em Visualizar. A captura de tela a seguir ilustra um exemplo de registro gerado por dados de trace:
Observe que os endereços IP exibidos na visualização em cascata correspondem aos endereços IP dos serviços chamados cloud-trace-demo-a
e cloud-trace-demo-b
.
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 OpenCensus e é executado em um cluster do Google Kubernetes Engine.
Os autores do aplicativo escolheram usar o framework do Flask porque seu uso simplifica o desenvolvimento de aplicativos e porque queriam usar o middleware do OpenCensus Flask. Você não precisa usar o framework Flask se estiver usando Python.
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:
As instruções de importação do aplicativo incluem uma instrução para
Flask
e para vários pacotes do OpenCensus. OStackdriverExporter
é o objeto que envia dados de trace para seu projeto do Google Cloud:O aplicativo cria um componente de middleware que usa o Flask como o framework HTTP:
Neste aplicativo, o campo
sampler
é definido pelo método OpenCensusAlwaysOnSampler()
. Esse método retornaTrue
para cada decisão de amostragem e garante que 100% das solicitações gerem traces. A amostragem de todas as solicitações não é recomendada em um ambiente de produção. Para mais informações, consulte Taxa de amostragem.Na função
main
do aplicativo, construa o middleware do Flask que usa oStackdriverExporter()
:O aplicativo contém mais uma modificação que não é necessária. Em vez disso, essa modificação é ilustrativa. No aplicativo, a resposta para a rota
/
inclui o cabeçalhoX-Cloud-Trace-Context
:O cabeçalho
X-Cloud-Trace-Context
é um cabeçalho HTTP que contém informações sobre o trace atual, incluindo o identificador de trace. Para que serviços diferentes possam adicionar informações de período ao mesmo trace, esses serviços precisam ser capazes de reconhecer o identificador de trace. Por padrão, o pacote do OpenCensus inclui automaticamente esse contexto nos cabeçalhos de resposta.
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
. Ele configura o serviço c
para chamar o serviço b
e para o serviço b
chamar o serviço a
.
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 c
neste guia de início rápido, você usou o seguinte comando curl
:
curl $(kubectl get svc cloud-trace-demo-c -ojsonpath='{.status.loadBalancer.ingress[0].ip}')
O comando curl
funciona da seguinte maneira:
kubectl
busca o endereço IP do serviço chamadocloud-trace-demo-c
.- O comando
curl
envia a solicitação HTTP para o serviçoc
. - O serviço
c
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çoa
. - O serviço
a
recebe a solicitação e retorna a stringHello
. A stringHello
é uma palavra-chave passada como um argumento padrão para esse serviço. - O serviço
b
recebe a resposta do serviçoa
, anexa a stringworld
e retornaHelloworld
. A stringworld
é uma palavra-chave passada como um argumento padrão para esse serviço. - O serviço
c
recebe a resposta do serviçob
, anexa!
e retornaHelloworld!
. - A resposta do serviço
c
é impressa no Cloud Shell.
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados neste guia de início rápido, 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
demo
executando o seguinte comando:gcloud container clusters delete demo --zone us-west1-b
A seguir
- Para informações sobre linguagens e plataformas compatíveis, consulte Sobre o Cloud Trace.
- Para detalhes sobre como instrumentar seus aplicativos, consulte Como configurar 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
- Leia nossos recursos sobre DevOps e conheça nosso programa de pesquisa.