Jump to section

O que é Jaeger?

Copiar URL

Jaeger é um software open source para rastreamento de transações entre serviços distribuídos. Ele é usado para monitorar e solucionar problemas em ambientes de microsserviços complexos.

Rastreamento distribuído é uma maneira de ver e entender a cadeia de eventos inteira em interações complexas entre microsserviços.

O desenvolvimento moderno de software, nativo em nuvem, depende dos microsserviços: serviços independentes, cada um fornecendo uma funcionalidade básica diferente. Quando um usuário faz uma solicitação em uma app, muitos serviços individuais respondem para produzir um resultado.

Uma única chamada na app pode invocar dezenas de serviços diferentes que interagem uns com os outros. Como desenvolvedores e engenheiros isolam um problema quando ocorre um erro ou uma solicitação está lenta? Precisamos encontrar uma maneira de rastrear todas as conexões.

É aí que o rastreamento distribuído entra em cena. Geralmente, ele é executado como parte de uma service mesh, que é um modo de gerenciar e observar os microsserviços.

O Jaeger usa o rastreamento distribuído para seguir o caminho de uma solicitação por diferentes microsserviços. Em vez de tentar adivinhar, temos uma representação visual do fluxo da chamada.

Ter informações organizadas sobre as transações é útil para fins de depuração e otimização. O Jaeger inclui ferramentas para monitorar transações distribuídas, otimizar o desempenho e a latência e realizar análises de causa raiz (RCA), um método para solucionar problemas.

Como projeto open source, o Jaeger conta com uma comunidade de centenas de colaboradores. O Jaeger é baseado na instrumentação e APIs OpenTracing, independentes de fornecedor.

A Uber, uma empresa de transporte privado, desenvolveu o Jaeger como um projeto open source em 2015. Ele foi aceito como um projeto de incubação na Cloud Native Computing Foundation (CNCF) em 2017 e promovido ao status de graduado em 2019.

O Jaeger coleta, armazena e visualiza “traces” de sistemas distribuídos, trazendo insights sobre como as solicitações fluem por meio de um sistema, onde o tempo é gasto e onde ocorrem erros.

O Jaeger apresenta as solicitações de execução como traces, que mostram os dados/caminhos de execução através de um sistema. 

Um trace é formado por um ou mais spans, Um span é uma unidade de trabalho lógica do Jaeger, como consulta de banco de dados ou solicitação de HTTP. Cada span inclui o nome da operação, a data/hora de início e a duração. Os spans podem estar aninhados e ordenados.

Processo do Jaeger

O Jaeger funciona rastreando as execuções de uma operação em um sistema distribuído e atribuindo rotinas específicas a vários componentes dele. 

O SDK do OpenTelemetry pode ser usado em qualquer linguagem de programação e depois exportado para um formato compreensível para o Jaeger  ou outra plataforma de rastreamento.

Uma vez em operação, o Jaeger segue este processo:

  1. O rastreamento do Jaeger começa com a instrumentação de uma aplicação. A instrumentação modifica o código da aplicação para gerar traces. A instrumentação pode ser manual, usando as bibliotecas de cliente do Jaeger, disponíveis para várias linguagens de programação, ou automática, usando middleware e frameworks compatíveis com as APIs OpenTracing ou OpenTelemetry.
  2. Quando a aplicação é executada, os traces fornecem um caminho de execução detalhado de uma operação pelos microsserviços. Cada trace consiste em vários spans, sendo que cada span contém informações como o nome da operação, hora de início e de término e tags de pares de chave-valor que oferecem mais contexto (por exemplo, códigos de status de HTTP, mensagens de erro).
  3. Para vincular spans a um único trace, o Jaeger passa identificadores e outros contextos de trace entre serviços como parte de solicitações e respostas. Isso é conhecido como propagação de contextos. Cada span e trace possui um ID exclusivo que permite que componentes individuais de uma jornada de solicitação sejam reunidos.
  4. Os spans são coletados usando bibliotecas de cliente do Jaeger e enviados ao Jaeger Agent, que é normalmente implantado ao lado da aplicação ou como um DaemonSet em ambientes como o Kubernetes.
  5. Jaeger Collector recebe os spans do Jaeger Agent e os armazena em um banco de dados de back-end. O Jaeger tem suporte para várias opções de armazenamento, como Elasticsearch, Cassandra ou Google Cloud Bigtable, o que permite escalabilidade e flexibilidade na forma em que os dados dos traces são gerenciados.
  6. O serviço Jaeger Query conta com uma IU para os usuários pesquisarem e visualizarem traces. A IU do Jaeger permite que desenvolvedores e operadores explorem os detalhes de traces individuais, visualizem a hierarquia e os horários dos spans e analisem o comportamento e desempenho do sistema.
  7. O Jaeger Console é uma interface de usuário que possibilita visualizar seus dados distribuídos de traces para ter insights sobre: problemas de latência, análise de erros, análise de dependência e otimização do desempenho.

O Jaeger traz insights sobre o comportamento de microsserviços e solicitações por meio de um sistema distribuído. Dessa forma, ele pode oferecer os seguintes benefícios:

  1. Otimização de desempenho: o Jaeger identifica onde estão ocorrendo atrasos em uma série de microsserviços, além de fornecer visualização sobre como os serviços interagem e dependem um do outro para ajudar a otimizar a alocação de recursos.
  2. Análise de causa raiz: ele rastreia com traces a origem de uma falha no serviço ou de um resultado inesperado para acelerar a resolução. Além disso, o Jaeger pode ser integrado a sistemas de monitoramento para alertar as equipes quando surgirem padrões incomuns, como picos na latência ou taxas de erro.
  3. Segurança e conformidade: à medida que mostram como os dados fluem em um sistema, os traces podem ser uma forma de trilha de auditoria, essencial para estar em conformidade com os requisitos regulatórios em relação a manipulação e processamento de dados.
  4. Desenvolvimento e teste: os desenvolvedores podem realizar rastreamento do Jaeger em ambientes locais, o que permite detectar erros, problemas de latência e dependência antes de implantar uma aplicação. 

O Red Hat® OpenShift® Observability é um conjunto completo de recursos de observabilidade para ajudar você a obter insights detalhados sobre o desempenho e a integridade da infraestrutura e de aplicações baseadas no OpenShift. Uma funcionalidade do stack de observabilidade da Red Hat é o rastreamento distribuído que, até 2024, incluía o Jaeger. No início de 2024, a Red Hat descontinuou o Jaeger e o Elasticsearch e os substituiu pelo Tempo Operator e a versão do OpenTelemetry da Red Hat.

A versão do OpenTelemetry da Red Hat pode ser usada para coletar traces em muitos formatos, não apenas provenientes de clientes do Jaeger, mas também do zipkin e do OpenTelemetry Protocol (OTLP). Este é apenas o começo, já que esse coletor pode ser usado para coletar todos os seus sinais de observabilidade. Os lançamentos mais recentes da Red Hat de rastreamento distribuído abrangem inúmeras melhorias. Além de implementar a geração automática de métricas com os spans, ele possibilita a criação de alertas baseados nessas métricas. Para ajudar na integração do stack do Prometheus, adicionamos o componente Target Allocator à nossa versão, que permite aos clientes fragmentar os endpoints do Prometheus facilmente e gerenciar e escalar com eficiência.

O Tempo funciona como um substituto econômico para os recursos de visualização e armazenamento de rastreamento distribuído fornecidos pelo produto do Jaeger. Ele facilita implantações locais simples para experimentar rastreamento distribuído ou para solucionar rapidamente problemas nas implantações que não exigem armazenamento extenso de rastreamento e grandes implantações. O Tempo ainda incorpora a interface de usuário do Jaeger, garantindo uma visualização eficiente dos traces.

Descubra os componentes e recursos do OpenShift →

Leitura recomendada

ARTIGO

Microsserviços e o suporte à integração de TI no setor de saúde

Microsserviços permitem que desenvolvedores da área de saúde e outros setores criem aplicações a partir de serviços com baixo acoplamento, facilitando as etapas de desenvolvimento, teste, implantação e upgrade.

ARTIGO

O que são microsserviços?

Microsserviços são uma abordagem de arquitetura para a criação de aplicações formadas por partes menores que funcionam juntas, mas de maneira independente.

ARTIGO

O que é service mesh?

Uma service mesh é uma camada de infraestrutura incorporada a uma aplicação que documenta como os serviços interagem, facilitando a comunicação e eliminando o downtime.

Leia mais sobre microsserviços

Soluções Red Hat

Uma plataforma de aplicações para empresas que oferece serviços testados para lançar aplicações na infraestrutura de sua escolha.

Conteúdo adicional

Estudo de caso

Banco Original usa o Red Hat OpenShift e garante aumento de 700% em pagamentos em tempo real

VÍDEO - THE SOURCE TV

A cultura dos microsserviços

Mais do que apenas uma nova abordagem técnica, os microsserviços apoiam a construção de uma nova cultura nas organizações, ancorada no conceito de DevOps

Estudo de caso

ANBIMA moderniza sua infraestrutura com orientações de especialistas em TI da Red Hat

Treinamentos Red Hat

Treinamento gratuito

Developing Cloud-Native Applications with Microservices Architectures