Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.
Guia de início rápido: rastrear a latência do app usando o Cloud Trace

Rastrear a latência do app usando o Cloud Trace

Para saber como usar o Cloud Trace, faça o seguinte:

  1. Implante um aplicativo de amostra em um cluster do Google Kubernetes Engine (GKE).

  2. Crie um trace enviando uma solicitação HTTP para o aplicativo de amostra.

  3. 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:

  1. 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.
  2. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  3. Verifique se o faturamento está ativado para seu projeto na nuvem. Saiba como verificar se o faturamento está ativado em um projeto.

  4. No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projeto do Google Cloud.

    Acessar o seletor de projetos

  5. 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:

  1. Para abrir o Cloud Shell, clique em Ativar o Cloud Shell na barra de ferramentas do Console do Google Cloud:

    Ative o Cloud Shell.

    Após alguns instantes, uma sessão do Cloud Shell é aberta no console do Google Cloud.

  2. Para fazer o download do código-fonte do GitHub, execute o seguinte comando:

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    
  3. Ative a API Google Kubernetes Engine usando o seguinte comando:

    gcloud services enable container.googleapis.com
    
  4. Para criar o cluster do GKE chamado cloud-trace-demo na zona us-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.

  5. Atualize as credenciais do cluster do GKE executando o seguinte comando:

    gcloud container clusters get-credentials cloud-trace-demo --zone $ZONE
    
  6. 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
    
  7. 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 de cloud-trace-demo-a, cloud-trace-demo-b e cloud-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:

Acessar o "Trace"

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:

Painel de traces recentes que exibe os traces mais recentes e a latência deles.

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 Lista de trace:

Janela da lista de traces para o início rápido.

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:

Exibição de hierarquia que mostra cinco períodos.

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:

Detalhes adicionais sobre cada período são mostrados no painel de detalhes.

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:

    from opentelemetry import trace
    from opentelemetry.exporter.cloud_trace import CloudTraceSpanExporter
    from opentelemetry.instrumentation.flask import FlaskInstrumentor
    from opentelemetry.instrumentation.requests import RequestsInstrumentor
    from opentelemetry.propagate import set_global_textmap
    from opentelemetry.propagators.cloud_trace_propagator import CloudTraceFormatPropagator
    from opentelemetry.sdk.trace import TracerProvider
    from opentelemetry.sdk.trace.export import BatchSpanProcessor
  • O aplicativo instrumenta solicitações da Web com contexto de trace e rastreia automaticamente os gerenciadores Flask e solicitações para outros serviços:

    app = flask.Flask(__name__)
    FlaskInstrumentor().instrument_app(app)
    RequestsInstrumentor().instrument()
  • O aplicativo configura o exportador do Cloud Trace como um provedor de traces, que propaga o contexto do trace no formato dele:

    def configure_exporter(exporter):
        set_global_textmap(CloudTraceFormatPropagator())
        tracer_provider = TracerProvider()
        tracer_provider.add_span_processor(BatchSpanProcessor(exporter))
        trace.set_tracer_provider(tracer_provider)
    
    configure_exporter(CloudTraceSpanExporter())
    tracer = trace.get_tracer(__name__)
  • 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:

    if endpoint is not None and endpoint != "":
        data = {'body': keyword}
        response = requests.get(
            endpoint,
            params=data,
        )
        return keyword + "\n" + response.text
    else:
        return keyword, 200

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:

  1. kubectl busca o endereço IP do serviço chamado cloud-trace-demo-a.
  2. O comando curl envia a solicitação HTTP para o serviço a.
  3. O serviço a recebe a solicitação HTTP e envia uma solicitação ao serviço b.
  4. O serviço b recebe a solicitação HTTP e envia uma solicitação ao serviço c.
  5. O serviço c recebe a solicitação HTTP do serviço b e retorna a string Hello, I am service C para o serviço b.
  6. O serviço b recebe a resposta do serviço c, anexa-a à string And I am service B e retorna o resultado ao serviço a.
  7. O serviço a recebe a resposta do serviço b e a anexa à string Hello, I am service A.
  8. 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:

    1. No console do Google Cloud, clique em Menu de navegação e selecione Página inicial.
    2. No painel Informações do projeto, clique em Acessar as configurações do projeto.
    3. 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