O que são rastreamentos?

Definição de rastreamentos distribuídos

Os rastreamentos distribuídos são um tipo de dados de telemetria que fornecem um registro (transação) de ponta a ponta, em nível de código, de cada solicitação do usuário por meio de todo o caminho de uma aplicação.

O rastreamento distribuído oferece visibilidade da saúde de uma aplicação, das dependências e das interações entre os componentes do sistema. É um componente essencial da observabilidade e do monitoramento de performance de aplicação (APM) em ambientes nativos da nuvem.

Os rastreamentos ajudam os engenheiros de confiabilidade de sites (SREs), as equipes de ITOps e DevOps a entender a movimentação e o comportamento de ponta a ponta das solicitações por meio de vários microsserviços dentro de um sistema. Usando rastreamentos, os desenvolvedores podem encontrar gargalos e outros problemas de código que afetam o desempenho e a experiência do usuário e otimizá-los para obter eficiência.

Rastreamento distribuído versus rastreamento tradicional

Rastreamento distribuído é um jeito de observar as solicitações enquanto elas passam por ambientes distribuídos.

Por padrão, a arquitetura distribuída envolve uma complexa rede de serviços. Uma solicitação percorre vários microsserviços, cada um executando uma tarefa específica. Como resultado, rastrear uma solicitação em um sistema distribuído é uma tarefa complexa que seria impossível com o rastreamento tradicional usado para aplicações monolíticas.

O rastreamento tradicional fornece insights limitados e não tem escalabilidade. O método de rastreamento tradicional usa amostras aleatórias de rastreamentos de cada solicitação, o que resulta em rastreamentos incompletos.


Por que o rastreamento é importante para o desenvolvimento de aplicações?

O rastreamento é superimportante para o desenvolvimento de aplicações porque deixa os engenheiros de software seguirem uma solicitação por vários microsserviços. A capacidade de rastrear visualmente cada passo faz do rastreamento algo inestimável. Ele ajuda a corrigir bugs e problemas de desempenho resolvendo erros em diferentes aplicações.

O rastreamento ajuda a

  • Identificar problemas mais rapidamente: em um sistema distribuído, a solução de problemas é significativamente mais difícil do que em um monólito. O rastreamento distribuído ajuda a identificar a causa-raiz e o local dos erros de aplicação com mais rapidez, minimizando as interrupções.
  • Simplificar a depuração: o rastreamento fornece uma visão abrangente de como as solicitações interagem com diferentes microsserviços, auxiliando no processo de depuração, mesmo na arquitetura mais complexa.
  • Melhorar a colaboração: em um ambiente distribuído, equipes diferentes geralmente trabalham em serviços diferentes. Um rastreamento identifica onde o problema ocorreu e aponta para a equipe responsável por corrigi-lo.
  • Acelerar o desenvolvimento: com o rastreamento, os desenvolvedores podem obter insights valiosos sobre o comportamento do usuário, otimizar o desempenho da aplicação e simplificar os esforços para lançar atualizações e novas implantações.

Como o rastreamento funciona

O rastreamento funciona coletando, analisando e visualizando dados de telemetria de uma solicitação enquanto ela passa por diferentes serviços em uma arquitetura de microsserviços.

Antes de os dados de rastreamento (e outros dados de telemetria) serem gerados, uma aplicação deve ser instrumentalizada. Instrumentação é um processo de adicionar código para rastrear dados de rastreamento. Uma plataforma open source, como a OpenTelemetry (OTel), fornece SDKs, APIs e outras ferramentas independentes de fornecedor para instrumentar a arquitetura de microsserviços.

blog-elastic-otel-1.png

Coleta de dados

Uma ferramenta de rastreamento distribuído de ponta a ponta começa a coletar dados quando um usuário inicia uma solicitação. Informações de identificação — ID de rastreamento — são adicionadas a cada solicitação conforme ela entra no sistema. Essas informações de identificação são transmitidas à medida que passam por vários serviços e componentes.

Cada etapa da jornada da solicitação também é registrada. A etapa inicial é chamada de span pai, enquanto as próximas são chamadas de span filho. Cada span filho é codificado com o ID de rastreamento original, um ID de span exclusivo, registro de data e hora, status e outros metadados relevantes. Os spans são organizados hierarquicamente, seguindo a jornada pelos serviços em todo o ambiente.

Para o APM, instrumentar uma aplicação e ativar a coleta de rastreamento possibilita a coleta de métricas de rastreamento de aplicações, ou valores numéricos, que podem ser usados para monitorar o desempenho da aplicação. Alguns exemplos:

  • Taxa de solicitação — o número de solicitações por segundo
  • Taxa de erro — o número de solicitações que falham
  • Latência — o tempo que leva para responder a uma solicitação
  • Duração — o tempo que a solicitação leva
  • Taxa de transferência — o volume de solicitações que uma aplicação pode tratar em um determinado período de tempo

Análise de rastreamento

Quando você concluir a solicitação e o rastreamento coletar todos os dados, os dados serão agregados. Usando os dados de intervalos, como identificadores de rastreamento, registros de data e hora e outras informações contextuais, você pode localizar gargalos de recursos, problemas de latência ou erros.

Monitoramento e visualização

O rastreamento de métricas de aplicações pode ajudar a monitorar o desempenho de uma aplicação. Quando e se elas mudarem, as equipes de SREs e DevOps podem entrar em ação.

Com inteligência artificial (IA) ou machine learning, o processo de monitoramento pode ser parcialmente automatizado e os engenheiros são alertados sobre possíveis problemas antes que eles ocorram. Um assistente de IA também pode ajudar a aprofundar a análise de rastreamento e explorar rapidamente os problemas subjacentes, correlacionando dados de observabilidade de outras fontes.

Por fim, todos os spans são visualizados em um gráfico em cascata, com um span pai na parte superior e os spans filhos aninhados abaixo. Esse gráfico é uma visão geral do que uma aplicação estava fazendo enquanto tentava responder a uma solicitação. Assim, os engenheiros podem entender quais partes de um sistema distribuído estão enfrentando problemas de desempenho, erros ou gargalos.


Padrões abertos para rastreamento no OpenTelemetry

OpenTelemetry é um framework de observabilidade open source que consiste em ferramentas, APIs e SDKs. OTel permite que SREs, DevOps e equipes de TI instrumentem, coletem e exportem dados de telemetria, incluindo rastreamentos, em um formato único e unificado para análise.

A Cloud Native Computing Foundation (CNCF) desenvolveu o OTel para fornecer protocolos, esquemas e ferramentas padronizados para coletar e rotear dados de telemetria para plataformas de observabilidade. Com um forte foco em rastreamentos, o OTel é o resultado de uma fusão de dois projetos anteriores do CNCF, o OpenTracing e o OpenCensus. Eles foram projetados para definir um único padrão para instrumentação de código e roteamento de dados de telemetria para um backend de observabilidade.

Desde 2019, quando os dois projetos foram combinados, tanto as comunidades open source quanto as empresas têm adotado OTel porque ele fornece um formato único e unificado de instrumentação e é preparado para o futuro.

Antes do OpenTelemetry e seus padrões abertos, os dados de observabilidade eram muitas vezes inconsistentes e difíceis de correlacionar. Em um ambiente distribuído, DevOps e TI precisaram instrumentar diferentes bibliotecas que suportassem as várias aplicações e serviços de sua organização, em várias linguagens de programação. Muitas vezes, cada ferramenta de instrumentação de código, APM ou rastreamento era proprietária, criando uma infinidade de problemas para o rastreamento distribuído. Quando não há um padrão nem uma ferramenta única para coletar (e exportar) rastreamentos de todas as aplicações, o trabalho dos engenheiros de encontrar problemas ou erros de desempenho se torna um desafio.

Com o OTel, por outro lado, os engenheiros não precisam reinstrumentalizar o código para rastrear dados de rastreamento de diferentes serviços, nem precisam redirecionar manualmente os dados de telemetria a cada alteração. Há apenas um framework open source para ferramentas de observabilidade e monitoramento compatíveis com OpenTelemetry.

À medida que novas tecnologias — como integrações mais profundas com IA na detecção de anomalia e IA generativa — surgem, o OpenTelemetry continuará a fornecer um framework único e suportado para rastreamento distribuído de ponta a ponta.

Os padrões OTel para rastreamento incluem:

  • Um único conjunto de APIs e convenções para coletar dados de rastreamento
  • Span é definido como uma unidade núcleo de rastreamento
  • Convenções semânticas para nomear spans e adicionar atributos
  • Um mecanismo de contexto para vincular spans entre diferentes serviços
  • Suporte para diferentes linguagens de programação

Saiba mais sobre o OpenTelemetry com a Elastic


Rastreamentos, métricas, logs e perfis

Os dados de telemetria — logs, métricas e rastreamentos — fornecem total observabilidade do comportamento de aplicações, servidores, serviços ou bancos de dados em um ambiente distribuído. Também conhecidos como os três pilares da observabilidade, os logs, as métricas e os rastreamentos criam um registro completo e correlacionado de cada solicitação e transação do usuário.

Cada um dos três tipos de dados fornece informações essenciais sobre o ambiente. Juntos, eles ajudam as equipes de DevOps, TI e SRE a acompanhar o desempenho de todo o sistema em tempo real e historicamente.

Traces

Os rastreamentos são registros detalhados do caminho de uma solicitação em todo o sistema distribuído para fornecer contexto. Ao reunir dados isolados e registrar todas as ações de um usuário, os rastreamentos ajudam os engenheiros a descobrir gargalos, depurar e monitorar aplicações que usam várias aplicações, além de entender as dependências e interações entre os componentes do sistema.

Logs

Os arquivos de log são os registros com data e hora de eventos e mensagens do sistema. Normalmente, os logs são usados para solução de problemas e depuração. Eles fornecem insights sobre o comportamento do sistema e ajudam a identificar problemas.

Além disso, a maioria das linguagens de programação tem recursos de recursos de log integrados. Portanto, os desenvolvedores tendem a continuar usando seus frameworks de recursos de log existentes.

Saiba mais sobre recursos de log e OpenTelemetry

Métricas

As métricas são valores numéricos que representam o estado ou o desempenho de um sistema em um período de tempo. As métricas são os principais indicadores de desempenho. Os DevOps e outras equipes os usam para monitorar a integridade do sistema, identificar tendências e disparar alertas.

Perfis: o futuro quarto pilar da observabilidade moderna

As métricas, os logs e os rastreamentos oferecem insights valiosos sobre o que ocorre e em que contexto. Também é importante entender por que o sistema se comporta dessa forma: por que há um gargalo de desempenho ou um desperdício de computação? É aí que entra o perfil contínuo. Ele ajuda a obter uma visão abrangente do sistema e oferece um nível mais profundo de visibilidade — até o nível do código.

Saiba mais sobre os pilares da observabilidade


Como implementar o rastreamento distribuído

Os rastreamentos distribuídos são essenciais para o monitoramento e a resolução de problemas de sistemas complexos e aplicações distribuídas. Antes de implementar o rastreamento distribuído, é importante definir metas e necessidades de rastreamento e identificar serviços essenciais e caminhos de requisição. Aqui estão cinco etapas para uma implementação bem-sucedida do rastreamento distribuído:

  1. Escolha uma ferramenta de rastreamento, como o OpenTelemetry (a estrutura agora padrão para coletar rastreamentos, métricas e logs). Ela deve ser compatível com a pilha de tecnologia que você já possui, além de ser preparada para o futuro.
  2. Instrumente serviços e aplicações. Isso envolve adicionar código de rastreamento à sua base de código e definir rastreamentos (spans) em sua aplicação.
  3. Colete rastreamentos iniciando uma solicitação para coletar dados. Garanta que os rastreamentos sejam precisos e completos por meio da propagação do contexto, um componente essencial do rastreamento distribuído.
  4. Exporte rastreamentos para monitoramento, análise e visualização para o backend escolhido por você ou para o provedor de serviços de rastreamento na nuvem.
  5. Identifique gargalos de desempenho, ineficiências e erros. Os dados de rastreamento podem ajudar a detectar erros, encontrar serviços de baixo desempenho e visualizar fluxos de dados entre os serviços.

Baixe o e-book para saber como implementar o rastreamento distribuído usando o monitoramento de performance de aplicação (APM)


APM e rastreamentos distribuídos com o Elastic

O monitoramento de performance de aplicação (APM) desempenha um papel fundamental na observabilidade moderna, orientando você em todos os seus dados de telemetria, fornecendo contexto e melhorando a análise de causa-raiz com machine learning.

Aproveite o Elastic Observability e o poder do Search para melhorar a qualidade do código com rastreamento distribuído de ponta a ponta. Capture e analise transações distribuídas abrangendo microsserviços, arquiteturas sem servidor e arquiteturas monolíticas, incluindo suporte para AWS Lambda, instrumentação automática e linguagens populares como Java, .NET, PHP, Python, Go e outras. Minimize o tempo de inatividade e otimize a experiência do cliente anotando transações com dados do cliente e marcadores de implantação.


Rastreamentos de recursos