Problema
Você ativou distributed tracing , mas os dados que você esperava ver não aparecem na interface distributed tracing do New Relic.
Antes que você comece
Antes de realizar a resolução de problemas, pode ser útil:
Revise os detalhes técnicos de como funciona distributed tracing .
Use nosso aplicativo de status de instrumentação para ter uma visão geral de sua instrumentação trace , incluindo taxas de amostragem. Isso pode ajudá-lo a entender períodos ausentes e rastreamentos fragmentados. Para encontrar isso, acesse:
one.newrelic.com > All capabilities > Apps > Distributed tracing instrumentation status
.
Soluções
Aqui estão algumas causas e soluções para dados trace ausentes:
Problemas com habilitação ou instrumento
Para que distributed tracing relate detalhes de todos os nós em um trace, cada aplicativo deve ser monitorado por um agente New Relic que tenha distributed tracing ativado.
Se a conta New Relic de um aplicativo não tiver distributed tracing habilitado, ele terá estes problemas:
- Sua página de interface distributed tracing não terá dados.
- Ele não reportará dados para rastreamento distribuído de outras contas.
Ao habilitar distributed tracing para aplicativos e serviços que o New Relic utiliza automaticamente, você geralmente verá dados completos e detalhados para esses nós na interface distributed tracing .
No entanto, você pode perceber que alguns serviços ou aplicativos estão faltando no rastreio ou que há alguns spans internos que você espera ver que estão faltando. Se for esse o caso, você pode querer implementar a instrumentação personalizada do aplicativo ou transação específica para ver mais detalhes no rastreamento. Alguns exemplos de quando você pode precisar fazer isso:
Transactions not automatically instrumented
. Para garantir que seu aplicativo seja automaticamente instrumento, leia a documentação de compatibilidade e requisitos do agente New Relic que você está usando. Caso uma aplicação não seja um instrumento automático, ou se desejar adicionar instrumentação de atividade específica, consulte instrumentação personalizada.
All Go applications
. O agente Go, diferentemente de outros agentes, requer instrumentação manual do seu código. Para obter instruções, consulte Instrumento a aplicativo Go.
A service doesn't use HTTP
. Se um serviço não se comunicar via HTTP, o agente New Relic não enviará cabeçalhos distributed tracing . Esse pode ser o caso de algum aplicativo que não seja da web ou fila de mensagens. Para remediar isso, use a para instrumentar o distributed tracing API aplicativo chamador ou chamado.
Problemas com vãos
Se seu agente não conseguir gravar dados com rapidez suficiente no observador trace , queue_size
será uma configuração adicional do agente APM para limitar o número de períodos que o agente manterá. Veja os exemplos a seguir para seu agente:
Método de configuração .NET | Exemplo |
---|---|
Arquivo de configuração |
|
Variável de ambiente |
|
Método de configuração Python | Exemplo |
---|---|
Arquivo de configuração |
|
Variável de ambiente |
|
Às vezes, a propagação do cabeçalho é bem-sucedida, mas as informações de extensão não são enviadas para o New Relic. Por exemplo, se o OpenTelemetry não for um instrumento com um exportador New Relic, os detalhes do span nunca chegarão ao New Relic.
Neste diagrama, observe que a propagação do cabeçalho foi bem-sucedida, mas nenhum exportador está configurado no Serviço 2 para enviar o span para o New Relic:
O diagrama a seguir também mostra a propagação de cabeçalho bem-sucedida, mas inclui um exportador no Serviço 2 que envia os detalhes do intervalo para o New Relic (consulte Trace API):
Distributed tracing padrão para usa amostragem adaptativa. Isso significa que uma porcentagem das chamadas para um serviço será relatada como parte de um distributed trace. Chamadas específicas para o seu serviço podem não ter sido selecionadas para amostragem.
Existem limites para o número de intervalos que podem ser coletados e exibidos. Se um aplicativo gerar um número muito grande de intervalos para uma única chamada, ele poderá exceder o limite de coleta de intervalos do agente APM para esse ciclo de coleta. Isso pode resultar na perda de intervalos e limitar significativamente o número de rastreamentos que o agente pode amostrar e relatar completamente.
Atualmente, mostramos apenas 10.000 spans por vez.
Os spans devem ser enviados nos últimos sessenta minutos para serem capturados em um índice trace . Se você enviar intervalos com mais de sessenta minutos, mas mais recentes que um dia, os dados do intervalo ainda serão gravados. No entanto, ele não será inserido no índice trace , que controla a lista trace na interface do usuário distributed tracing . Se um intervalo tiver um timestamp com mais de um dia, ele será descartado. Isso geralmente ocorre quando há distorção de relógio (diferenças de tempo) entre sistemas ou trabalhos em segundo plano de longa duração.
Importante
Quaisquer intervalos enviados por meio do protocolo OpenTelemetry (OTLP, abreviadamente) com mais de sessenta minutos não serão gravados no NRDB, produzindo o seguinte NrIntegrationError:
The span timestamp cannot be older than 60 minutes.
Problemas com detalhes trace
Se a sua transação estiver enviando apenas o cabeçalho proprietário da New Relic, algum middleware poderá não reconhecer o formato e então descartar as informações conforme mostrado neste diagrama:
Uma solução é atualizar seu agente New Relic para uma versão que suporte W3C Trace Context. No diagrama abaixo, o agente New Relic compatível com W3C passa o cabeçalho anterior junto com dois cabeçalhos padronizados:
Alguns problemas potenciais com proxies e outros intermediários:
Incomplete trace. Alguns intermediários não propagarão automaticamente o cabeçalhodistributed tracing . Nesse caso, você deve configurar esse componente para permitir que o cabeçalho seja passado da origem ao destino. Para obter instruções, consulte a documentação desse componente intermediário.
Missing intermediary in trace. Se o intermediário for monitor New Relic, certifique-se de que ele propague o cabeçalho
newrelic
que é gerado ou atualizado pelo agente New Relic em execução nesse intermediário. Isso pode se manifestar quando um intermediário estava anteriormente visível no rastreamento, mas desapareceu depois que distributed tracing foi habilitado para uma entidade upstream (por exemplo, um aplicativo de monitoramento de browser).Dica
Se alguma entidade relatar dados trace para outro sistema de rastreamento, você poderá usar o ID trace da interface do New Relic para pesquisar outros sistemas de rastreamento em busca de períodos ausentes.
Se cada agente em uma cadeia suportar W3C Trace Context, então poderemos unir os trechos em um trace completo. Se parte da cadeia for de um agente, como o Zipkin, que não oferece suporte W3C Trace Context, os intervalos provenientes desse agente poderão não ser incluídos no trace.
Se um trace contiver dados do aplicativo monitor de várias contas New Relic e suas permissões de usuário não permitirem que você acesse essas contas, alguns detalhes do intervalo e do serviço serão ofuscados na interface.
Por exemplo, você poderá ver uma série de asteriscos (*****) em vez do nome do serviço na sua lista distributed tracing se não tiver acesso à conta vinculada ao serviço.
A lista trace é gerada por índices trace , que são capturados em uma janela de vinte minutos a partir do momento em que os primeiros spans são recebidos.
Geralmente, isso se deve a períodos tardios.
Se você estiver observando tempos backend excepcionalmente curtos para rastreamentos longos, isso provavelmente é um problema com o carimbo de data/hora enviado.
Por exemplo, o intervalo raiz pode reposicionar microssegundos como milissegundos. Isso também pode acontecer se o intervalo raiz for um aplicativo de browser. Ao usar um cliente externo, como um browser da Web, você poderá enfrentar distorções de relógio (diferenças de tempo) com mais frequência.
Problemas com aplicativo do browser
Versões mais antigas de alguns agentes são incompatíveis com distributed tracing para aplicativos de browser. Se o aplicativo do browser fizer uma solicitação AJAX para um aplicativo APM executando um agente incompatível, o agente APM poderá não registrar a transação e abranger os dados dessa solicitação.
Se distributed tracing estiver habilitado para um aplicativo de browser e você não estiver vendo dados de transação ou de intervalo para solicitações downstream do APM, revise os dados do browser em requisitos distributed tracing e confirme se todos os aplicativos estão executando versões suportadas do agente APM.
Se o rastreamento parecer estar faltando nos intervalos do usuário final, leia e entenda os distributed tracing requisitos pelo browser e ative os procedimentos.
Na página da interfaceAJAX , há links para a interface distributed tracing , independentemente de haver períodos de usuário final presentes nesse trace. Para obter detalhes sobre quais dados geram intervalos, consulte Requisitos.
Versões mais antigas de alguns agentes são incompatíveis com distributed tracing para aplicativos de browser. Se os intervalos de APM estiverem ausentes consistentemente no rastreamento que inclui o aplicativo do browser, consulte os dados do browser nos requisitos distributed tracing e confirme se todos os aplicativos estão executando versões suportadas do agente APM.
Para outras causas de extensões de browser órfãs, consulte relatórios de extensão de Browser.
Outros problemas
Causa potencial: para aplicativos que têm vários nomes de aplicativo, o atributo entity.name
será associado somente ao nome do aplicativo principal. Para pesquisar por outros nomes de aplicativos, pesquise usando o atributo appName
.
Dúvidas sobre integração com OpenTelemetry devem ser encaminhadas ao Fórum de Suporte.
Outros fatores que afetam o acesso
Para obter mais informações sobre os fatores que podem afetar sua capacidade de acessar o recurso New Relic, consulte Fatores que afetam o acesso.