Veja a latência dos pedidos de apps

Saiba como recolher e ver dados de latência das suas aplicações:

  1. Crie um cluster do Google Kubernetes Engine (GKE) através da CLI do Google Cloud.

  2. Transfira e implemente uma aplicação de exemplo no seu cluster.

  3. Crie um rastreio enviando um pedido HTTP para a aplicação de exemplo.

  4. Veja as informações de latência do rastreio que criou.

  5. Limpar.


Para seguir orientações passo a passo para esta tarefa diretamente na Google Cloud consola, clique em Orientar-me:

Visita guiada


Antes de começar

  1. As restrições de segurança definidas pela sua organização podem impedir a conclusão dos seguintes passos. Para informações de resolução de problemas, consulte o artigo Desenvolva aplicações num ambiente Google Cloud restrito.

  2. 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.
  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  4. Verify that billing is enabled for your Google Cloud project.

  5. Enable the Google Kubernetes Engine and Cloud Trace APIs.

    Enable the APIs

  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  7. Verify that billing is enabled for your Google Cloud project.

  8. Enable the Google Kubernetes Engine and Cloud Trace APIs.

    Enable the APIs

  9. Crie um cluster do GKE

    Este guia cria um cluster do GKE padrão. Se usar o modo Autopilot para o Google Kubernetes Engine ou se ativar a Workload Identity Federation para o GKE, tem de configurar a sua aplicação para usar a Workload Identity Federation para o GKE.

    1. Na barra de ferramentas, clique em Ativar Cloud Shell e, de seguida, siga os passos no Cloud Shell.

    2. Crie um cluster:

      gcloud container clusters create cloud-trace-demo --zone us-central1-c
      

      O comando anterior, cuja conclusão demora vários minutos, cria um cluster padrão com o nome cloud-trace-demo na zona us-central1-c.

    3. Configure o kubectl para atualizar automaticamente as respetivas credenciais de modo a usar a mesma identidade que a Google Cloud CLI:

      gcloud container clusters get-credentials cloud-trace-demo --zone us-central1-c
      
    4. Valide o acesso ao seu cluster:

      kubectl get nodes
      

      Um exemplo do resultado deste 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
      

    Transfira e implemente uma aplicação

    Transfira e implemente uma aplicação Python que use a framework Flask e o pacote OpenTelemetry. A aplicação é descrita na secção Acerca da app desta página.

    No Cloud Shell, faça o seguinte:

    1. Clonar uma app Python do GitHub:

      git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
      
    2. Execute o seguinte comando para implementar a aplicação de exemplo:

      cd python-docs-samples/trace/cloud-trace-demo-app-opentelemetry && ./setup.sh
      

      O script setup.sh demora vários minutos a ser concluído.

      O script configura três serviços através de uma imagem pré-criada e, em seguida, aguarda que todos os recursos sejam aprovisionados. As cargas de trabalho têm os nomes cloud-trace-demo-a, cloud-trace-demo-b e cloud-trace-demo-c.

      Um exemplo do resultado deste 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.
      

    Crie dados de rastreio

    Um rastreio descreve o tempo que uma aplicação demora a concluir uma única operação.

    Para criar um rastreio, execute o seguinte comando 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 tem o seguinte aspeto:

    Hello, I am service A
    And I am service B
    Hello, I am service C
    

    Pode executar o comando curl várias vezes para gerar várias rastreios.

    Veja os dados de latência

    1. Na Google Cloud consola, aceda à página Explorador de rastreios:

      Aceda ao Explorador de rastreios

      Também pode encontrar esta página através da barra de pesquisa.

      A captura de ecrã seguinte mostra o resultado da execução do comando curl várias vezes. O gráfico apresenta dados de latência agregados para intervalos, que descrevem suboperações de rastreio.

      Janela do explorador de rastreios para o início rápido.

    2. Para ver um rastreio em detalhe, selecione um intervalo no gráfico ou uma linha na tabela.

      É apresentada a caixa de diálogo de detalhes do rastreio, conforme mostrado na captura de ecrã seguinte:

      Os detalhes adicionais sobre cada intervalo são apresentados no painel de detalhes.

      Um gráfico de Gantt apresenta informações sobre o rastreio selecionado. A primeira linha no gráfico de Gantt destina-se ao rastreio e cada linha seguinte é um intervalo no rastreio.

    3. Para ver informações detalhadas sobre um intervalo, no gráfico de Gantt, selecione o intervalo.

    Acerca da aplicação

    A aplicação de exemplo usada neste guia de início rápido está disponível num repositório do GitHub. Este repositório contém informações sobre como usar a aplicação em ambientes que não sejam o Cloud Shell. A aplicação de exemplo está escrita em Python, usa a framework Flask e os pacotes OpenTelemetry, e é executada num cluster do GKE.

    Este guia cria um cluster do GKE padrão. Se usar o modo Autopilot para o Google Kubernetes Engine ou se ativar a Workload Identity Federation para o GKE, tem de configurar a sua aplicação para usar a Workload Identity Federation para o GKE.

    Instrumentação

    O ficheiro app.py no repositório do GitHub, contém a instrumentação necessária para capturar e enviar dados de rastreio para o seu projeto Google Cloud :

    • A aplicação importa vários pacotes 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
      
    • A aplicação instrumenta pedidos Web com contexto de rastreio e rastreia automaticamente os controladores Flask e os pedidos a outros serviços:

      app = flask.Flask(__name__)
      FlaskInstrumentor().instrument_app(app)
      RequestsInstrumentor().instrument()
    • A aplicação configura o exportador do Cloud Trace como um fornecedor de rastreios, que propaga o contexto de rastreio no formato do Cloud Trace:

      def configure_exporter(exporter):
          """Configures OpenTelemetry context propagation to use Cloud Trace context
      
          Args:
              exporter: exporter instance to be configured in the OpenTelemetry tracer provider
          """
          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 seguinte fragmento de código mostra como enviar pedidos em Python. O OpenTelemetry propaga implicitamente o contexto do rastreio para si com os seus pedidos 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 funciona a candidatura

    Para maior clareza, nesta secção, cloud-trace-demo é omitido dos nomes dos serviços. Por exemplo, o serviço cloud-trace-demo-c é referenciado como c.

    Esta aplicação cria três serviços denominados 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 ver detalhes sobre a configuração dos serviços, consulte os ficheiros YAML no repositório do GitHub.

    Quando enviou um pedido HTTP para o serviço a neste início rápido, 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 forma:

    1. kubectl obtém o endereço IP do serviço denominado cloud-trace-demo-a.
    2. Em seguida, o comando curl envia o pedido HTTP para o serviço a.
    3. O serviço a recebe o pedido HTTP e envia um pedido ao serviço b.
    4. O serviço b recebe o pedido HTTP e envia um pedido ao serviço c.
    5. O serviço c recebe o pedido HTTP do serviço b e devolve a string Hello, I am service C ao serviço b.
    6. O serviço b recebe a resposta do serviço c, anexa-a à string And I am service B e devolve o resultado ao serviço a.
    7. O serviço a recebe a resposta do serviço b e anexa-a à string Hello, I am service A.
    8. A resposta do serviço a é impressa no Cloud Shell.

Limpar

Para evitar incorrer em cobranças na sua Google Cloud conta pelos recursos usados nesta página, siga estes passos.

Se criou um novo projeto e já não precisa dele, elimine o projeto.

Se usou um projeto existente, faça o seguinte:

  1. Para eliminar o cluster, no Cloud Shell, execute o seguinte comando:

    gcloud container clusters delete cloud-trace-demo --zone us-central1-c

O que se segue?