Com mais de 43 milhões de veículos visualizados por mês, o desempenho e a disponibilidade do site Dealer.com impulsionam os negócios de milhares de concessionárias de automóveis nos Estados Unidos. Se o site não estiver disponível ou apresentar um erro, e os compradores não conseguirem uma cotação rápida e simples ou não conseguirem fazer uma busca preliminar por um novo carro ou caminhão, a venda poderá não acontecer.

Em ambientes de software complexos como o da Dealer.com, as solicitações costumam passar por vários serviços discretos. Um único serviço com problema no caminho pode afetar todo o tempo de resposta da solicitação, transformar uma boa experiência do cliente em uma ruim e, potencialmente, fazer com que os clientes procurem a concorrência.

As equipes de software, que trabalham em ambientes nos quais há muitos serviços envolvidos no atendimento de uma solicitação, precisam entender profundamente o desempenho de todos os serviços, tanto upstream quanto downstream, para que possam resolver os problemas de desempenho de modo mais efetivo, mensurar a saúde geral do sistema e priorizar áreas de alto valor para melhoria. 

O trace distribuído da New Relic está incluso para os clientes do APM

O trace distribuído da New Relic foi criado para proporcionar às equipes de software que trabalham em ambientes modernos um modo fácil de coletar, visualizar e analisar traces por meio de arquiteturas complexas. E se você já está usando o monitoramento do desempenho de aplicativos (APM) da New Relic, recebe o trace distribuído sem custos adicionais. Somente é necessário atualizar seus agentes, abrir o New Relic e selecionar Traces para ver seus dados de trace.

Os agentes do New Relic APM removem completamente a carga operacional do gerenciamento do software de trace complexo, para que engenheiros, como o Andrew da Dealer.com, tenham disponibilidade para instrumentar seus ambientes para gerar telemetria de trace ilimitada sem se preocupar com as complexidades associadas à implantação e ao dimensionamento de componentes.

A integração com o trace distribuído da New Relic é muito fácil. Simplesmente atualizamos nosso agente e, de repente, já tínhamos o trace distribuído. Foi uma experiência ótima.

É possível observar todos os traces do aplicativo nos sistemas distribuídos automaticamente. O trace distribuído da New Relic fornece um gráfico de dispersão e exibições em cascata para vários frameworks de linguagem, como C, Go, Java, .NET, Node.js, PHP, Python, Ruby e mais. Ele também inclui os dados de navegador e monitoramento de Mobile do New Relic, o AWS Lambda e os traces de formato do Zipkin por meio da API de trace, além de ser compatível com padrões comuns para traces, como OpenTelemetry e W3C, para que você possa investigar e solucionar problemas mais rapidamente.

A exibição do trace distribuído, parte do monitoramento do desempenho de aplicativos do New Relic.

Compreensão da complexidade do software

Para entender por que o trace distribuído é tão importante, é útil observar as plataformas de nuvem, a conteinerização e a orquestração de contêiner que organizações de software progressivas usam para criar, dimensionar e operar rapidamente os aplicativos essenciais aos negócios.

Apesar das muitas vantagens das arquiteturas de software desenvolvidas em microsserviços e serverless, o número crescente de componentes e sua diversidade em linguagem, ambiente operacional e propriedade criam uma grande carga para as equipes que tentam gerenciá-los. As equipes não conseguem trabalhar efetivamente para resolver problemas em um sistema complexo até que entendam todas as dependências de serviços e como as características de desempenho de serviços dependentes afetam suas solicitações e transações. Para encontrar a agulha no palheiro, é necessário ter uma exibição completa do sistema inteiro.

Entender como um serviço downstream não muito distante pode criar um gargalo crítico para um serviço é essencial para a resolução rápida de problemas. Tão importante quanto isso é fornecer às equipes de DevOps insights sobre como otimizar os códigos. Se não for possível determinar quando, por que e como um problema acontece, pequenos defeitos podem continuar na produção até que uma grande tempestade de eventos aconteça e o sistema pare de uma vez. O trace distribuído fornece uma exibição detalhada das solicitações individuais para que você saiba precisamente quais partes de um grande sistema estão causando problemas, de modo que consiga otimizar e resolver esses problemas rapidamente.

Dados x insights

O trace distribuído fornece visibilidade de ponta a ponta revelando as dependências do serviço. Você pode considerar isso como um modo de registrar e visualizar solicitações por meio de sistemas distribuídos e complexos. Entretanto, coletar e visualizar dados de trace pode ser muito trabalhoso e complexo de implementar, como implantar, gerenciar e dimensionar gateways ou satélites de terceiros para coleta de dados.

A New Relic facilita o trace distribuído com a instrumentação automática. Nosso código do aplicativo de instrumentação automática usa agentes de linguagem que trabalham com centenas de frameworks e bibliotecas diferentes em várias linguagens. É possível implantar um agente, e o New Relic APM instrumenta todos os serviços envolvidos na solicitação, bem como cria tempos para as operações no serviço e adiciona automaticamente informações importantes sobre resolução de problemas para cada span. Você também pode adicionar atributos personalizados às transações e ver todas as informações no trace, sem alterar nada.

Os agentes do New Relic APM criam automaticamente uma ID de trace exclusiva para cada solicitação de entrada e propagam essa ID e outras informações de correlação necessárias como o "contexto de trace" em toda a chamada. Por exemplo, quando um serviço faz uma chamada a outro serviço, o New Relic adiciona o contexto de trace ao cabeçalho de solicitação HTTP para o próximo serviço usar. Nossa instrumentação automática foi criada para eliminar o trabalho difícil de gerenciamento e propagação de contexto.

E se você estiver usando um transporte que exige instrumentação manual? O agente do New Relic APM fornece uma API que você pode usar para injetar e extrair o contexto de trace. Usar o formato W3C Trace Context para propagar o contexto de trace faz com que ele fique interoperável com outras ferramentas ou agente de trace que também são compatíveis com esse padrão.

Nada disso importa se você não consegue identificar os insights nos dados em seu stack. O New Relic APM fornece exibições de trace criadas para ajudar você a entender rapidamente por que uma solicitação específica está lenta, onde um erro se originou e onde você pode otimizar seu código para aprimorar a experiência dos seus clientes.

Aqui está um diagrama que mostra como esses componentes trabalham juntos no trace distribuído da New Relic:

Os quatro componentes do trace distribuído
Os quatro componentes do trace distribuído.

Comece a usar o trace distribuído da New Relic

Tudo pronto para começar a identificar maneiras de melhorar seus aplicativos? Com o New Relic APM e o trace distribuído, logo você estará analisando arquiteturas complexas para entender melhor as dependências no seu sistema.

1. Examine a documentação do trace distribuído.

2. Implante ou atualize para o agente APM mais recente para cada serviço envolvido no caminho de chamada no qual tem interesse. O trace distribuído fica disponível imediatamente após a atualização.

3. É isso! Agora você pode acessar as informações do trace distribuído do New Relic APM e identificar rapidamente traces lentos e traces com erros. Também pode usar filtros avançados para encontrar traces com uma combinação de atributos.


Veja todos os spans que compõem um trace. Use detalhes coletados de cada span para entender o que aconteceu e resolver o problema.