O que é o Jaeger?

O Jaeger é um software que você pode usar para monitorar e solucionar problemas em componentes de software interconectados, chamados de microsserviços. Vários microsserviços se comunicam entre si para concluir uma única função de software. Os desenvolvedores usam o Jaeger para visualizar a cadeia de eventos nessas interações de microsserviços a fim de isolar o problema quando algo dá errado. O Jaeger também é chamado de Jaeger Tracing porque segue, ou rastreia, o caminho de uma solicitação por meio de uma série de interações de microsserviços.   

Por que o Jaeger é importante?

No passado, o projeto de software era monolítico, com várias funções agrupadas em uma única base de código. Por exemplo, para projetar um aplicativo de pedidos de comida, o menu de comida, os restaurantes e os sistemas de pagamento eram todos agrupados em uma única unidade de software. Esse tipo de projeto de software tornou a solução muito complexa e difícil de manter. Quando os desenvolvedores faziam alterações no código em uma área, isso afetava todo o sistema, tornando o gerenciamento de alterações um processo longo e cansativo. Para resolver esse problema, o projeto de arquitetura tornou-se mais modular.

Microsserviços

As aplicações modernas funcionam como uma coleção de unidades independentes menores, chamadas de microsserviços. Por exemplo, um aplicativo moderno de pedidos de comida pode conter as seguintes partes:

  • Um serviço de geolocalização para detectar onde o cliente está 
  • Um serviço que coleta e envia pedidos para restaurantes  
  • Um gateway de pagamento com várias opções de pagamento

 

Cada microsserviço funciona como uma aplicação independente e tem acesso ao seu próprio banco de dados e sua própria lógica. Os microsserviços se comunicam usando solicitações e respostas, como uma aplicação da Web. Um sistema base de microsserviços também é chamado de sistema distribuído.

Solução de problemas de arquitetura de microsserviços

É um desafio investigar problemas em sistemas distribuídos devido ao comportamento complexo dos microsserviços. Por exemplo, fazer um pedido de comida em um aplicativo modular pode acionar várias solicitações para diferentes microsserviços. Essas solicitações podem ocorrer de forma concorrente e independente, além de não precisarem ser sequenciais. Se ocorrer um problema com o pedido de comida, os desenvolvedores precisam determinar qual microsserviço o causou. As abordagens convencionais de rastreamento de problemas fornecem apenas uma imagem parcial da solicitação, tornando a solução de problemas de microsserviços cansativa.

 

O Jaeger é uma ferramenta de software que as equipes de TI usam para obter visibilidade e clareza sobre toda a cadeia de eventos. Eles podem resolver problemas mais rapidamente e melhorar a experiência do cliente.

Para que serve o Jaeger?

Os desenvolvedores usam o Jaeger para melhorar a performance de um sistema distribuído de várias maneiras. Veja alguns exemplos a seguir.

Monitoramento de transações distribuídas

O Jaeger possui recursos que monitoram movimentos de dados entre microsserviços. Os desenvolvedores podem adotar uma abordagem proativa para detectar e resolver problemas antes de interromper a experiência do usuário.

Otimização da latência

A análise do Jaeger pode localizar obstáculos em microsserviços, os quais tornam uma aplicação mais lenta. Os desenvolvedores usam o Jaeger para inspecionar o comportamento dos microsserviços e encontrar maneiras de torná-los mais rápidos.

Análise de causa raiz

Em uma arquitetura de microsserviço, um problema pode levar a outros. Os desenvolvedores podem usar o Jaeger para encontrar o ponto de partida de uma série de problemas relacionados em uma aplicação.

Análise de dependência de serviço

A dependência de serviço significa que uma aplicação depende de vários componentes para ser executada. Por exemplo, um aplicativo de navegação depende dos serviços de localização no aplicativo móvel. Os desenvolvedores usam o Jaeger para entender as relações complexas entre os diferentes microsserviços. 

Propagação de contexto distribuído

A propagação de contexto distribuído é a maneira como uma aplicação transfere informações descritivas junto com os dados. Isso ajuda os desenvolvedores a avaliar a performance do microsserviço como um todo. Por exemplo, o Jaeger marca solicitações de pedidos com o nome do cliente para que os desenvolvedores possam associar o caminho da solicitação ao cliente específico. 

Como o Jaeger funciona?

O Jaeger trabalha com os princípios de rastreamento distribuído e usa a estrutura do OpenTracing.

Rastreamento distribuído

O rastreamento distribuído é uma técnica de software que monitora sequências de eventos entre microsserviços. Ele rastreia todas as conexões e fornece tabelas e gráficos para que você visualize os caminhos de solicitação em uma aplicação. Como uma ferramenta de rastreamento distribuído, o Jaeger rastreia os movimentos das solicitações atribuindo um identificador exclusivo a cada solicitação e coletando informações quando um serviço específico processa a solicitação. 

OpenTracing

O OpenTracing é uma estrutura de código aberto, ou disponível gratuitamente, que fornece os padrões para tornar o rastreamento distribuído preciso e pronto para uso nos sistemas de software modernos. Por exemplo, ele fornece um padrão comum para definir a estrutura das informações monitoradas que trafegam entre microsserviços. O Jaeger usa o OpenTracing para fornecer uma solução completa para coletar, armazenar, gerenciar, analisar e visualizar dados de microsserviços.  

Modelo de dados do OpenTracing

O modelo de dados do OpenTracing fornece a definição básica para conectar dados de diferentes componentes. Os dois termos principais que ele usa são período e rastreamento.

Período

Um período é uma única unidade lógica de trabalho realizada em um sistema de rastreamento distribuído. Cada período tem os seguintes componentes:

  • Um nome de operação
  • Um horário para ser iniciado e finalizado
  • Etiquetas ou valores que ajudam os desenvolvedores a analisar o período
  • Logs que armazenam todas as mensagens geradas pelo microsserviço
  • Contexto do período ou descrições adicionais sobre ele

Rastreamento

Um rastreamento é uma coleção de um ou mais períodos que pertencem ao mesmo processo. Ele representa os eventos que acontecem durante um período específico. Os períodos que pertencem ao mesmo rastreamento compartilham o mesmo ID de rastreamento. Por exemplo, um rastreamento gerado quando um cliente realiza um pedido de comida resulta nos seguintes períodos: 

  • O cliente envia um pedido
  • O pagamento é processado
  • A lista de pedidos é enviada ao restaurante
  • A comida é recolhida
  • A comida é entregada

Quais são os componentes do Jaeger?

A plataforma de rastreamento distribuído do Jaeger é composta pelos seguintes componentes. 

Cliente do Jaeger

O cliente do Jaeger contém implementações específicas de linguagem da API OpenTracing em linguagens de programação como Go, JavaScript, Java, Python, Ruby e PHP.

Os desenvolvedores usam essas APIs para criar períodos no Jaeger sem a necessidade de programa o código-fonte para rastreamento distribuído. 

Atendente do Jaeger

O atendente do Jaeger é um daemon de rede ou um processo que é executado continuamente em segundo plano para a realização de funções exigidas por outros processos. Ele atende os períodos que o cliente envia por meio do protocolo de datagrama do usuário (UDP), um tipo de método de comunicação que permite que as aplicações troquem mensagens em uma rede.  

O atendente se conecta ao cliente em ambientes de contêineres como o Amazon Elastic Kubernetes Service. Os grupos de atendentes criam períodos em lotes e os enviam ao coletor. Isso permite que a aplicação seja executada sem enviar ativamente informações de rastreamento para o back-end do Jaeger. 

Coletor do Jaeger

Um coletor do Jaeger é um componente de software que recupera rastreamentos do coletor. Ele verifica, processa e armazena os rastreamentos no banco de dados.

Armazenamento

O sistema de rastreamento do Jaeger recebe períodos e os armazena em um back-end ou banco de dados de armazenamento permanente. Armazenamento permanente significa que os dados armazenados permanecem intactos mesmo se o computador estiver desligado. Por exemplo, os desenvolvedores usam o AWS OpenSearch Service como armazenamento permanente para armazenar e aceitar períodos.

Ingestor

Uma maneira de implantar o Jaeger é enviar dados de rastreamento para o Kafka, um sistema distribuído para aplicações que armazenam e recuperam fluxos de informações. Um ingestor é um módulo que lê dados de rastreamento do Kafka e os armazena separadamente. 

Consulta

O serviço de consulta recupera informações de rastreamento do banco de dados. Os desenvolvedores usam consultas para encontrar rastreamentos com horário, etiquetas, prazo e operação específicos. 

Console do Jaeger

O console do Jaeger é um programa de software com uma interface de usuário que você pode usar para visualizar e analisar rastreamentos. Ele exibe dados de rastreamento em gráficos e tabelas. 

Como os desenvolvedores usam o Jaeger?

Quando os desenvolvedores criam uma aplicação, eles usam as bibliotecas de cliente do Jaeger para criar períodos. Ao adicionar códigos ao programa para produzir dados de rastreamento, eles criam o que é conhecido como uma aplicação instrumentada. A aplicação instrumentada gera automaticamente o seguinte:

 

  1. Períodos contendo ID do período, ID do rastreamento, etiquetas, logs e contexto do período 
  2. Rastreamentos para cada solicitação

 

Os desenvolvedores usam o console do Jaeger para pesquisar, filtrar, visualizar e analisar esses dados de rastreamento distribuído. Eles podem usar a interface de usuário do software Jaeger para visualizar informações detalhadas, como prazos do processo, erros e logs dos microsserviços. 

Quais são as estratégias de amostragem do Jaeger?

Uma aplicação instrumentada transmite automaticamente dados de rastreamento sempre que a aplicação está em execução. Você pode usar esses dados de rastreamento para medir a performance da aplicação. Isso também chamado de dados de telemetria. Para evitar que o back-end do Jaeger fique sobrecarregado com dados de telemetria excessivos, você pode filtrá-los ou experimentá-los configurando estratégias de amostragem em sua implementação do Jaeger. Estas são algumas estratégias de amostragem:

  • Amostragem constante, a qual coleta o mesmo número de amostras para todos os tipos de rastreamentos.
  • Amostragem probabilística, que coleta amostras aleatoriamente até atingir determinada porcentagem.
  • Amostragem com limitação de taxa, a qual recupera um número específico de amostras a cada segundo.
  • Amostragem adaptável, que ajusta automaticamente a taxa de amostragem para obter diversos rastreamentos em um prazo específico.

O que é o AWS App Mesh?

AWS App Mesh é um service mesh ou uma infraestrutura de software que faz o trabalho pesado para que você possa gerenciar com mais facilidade sistemas distribuídos baseados em microsserviços. O AWS App Mesh faz o seguinte: 

  • Oferece visibilidade completa e alta disponibilidade para suas aplicações.
  • Configura cada serviço para exportar dados de monitoramento e implementa uma lógica consistente de controle de comunicações em toda a aplicação. 
  • Fornece controle de tráfego de rede para ajudar os desenvolvedores a criar aplicativos de nuvem seguros. 

Você pode usar o AWS App Mesh como uma solução independente para suas necessidades de rastreamento distribuído. Ele também oferece suporte a várias ferramentas de terceiros que não são da AWS, como Jaeger, que você pode usar para monitorar, registrar ou rastrear comunicações de microsserviços.

Comece a usar o Jaeger no App Mesh criando uma conta Na AWS hoje mesmo.

Próximas etapas do Jaeger na AWS

Confira outros recursos relacionados a produtos
Saiba mais sobre o AWS App Mesh 
Cadastre-se para obter uma conta gratuita

Obtenha acesso instantâneo ao nível gratuito da AWS. 

Cadastre-se 
Comece a criar no console

Comece a criar com a AWS no Console de Gerenciamento da AWS.

Fazer login