distributed tracing ajuda a monitor e analisar o comportamento de seus sistemas distribuídos. Depois de ativar distributed tracing, você poderá usar nossas ferramentas de interface para pesquisar rastreamentos e analisá-los.
Se você deseja solucionar erros em uma transação que abrange vários serviços:
- Abra a página da interface distributed tracing .
- Classifique seu rastreamento usando um filtro para encontrar aquela solicitação específica e mostrar apenas o rastreamento que contém erros.
- Na página de detalhes do rastreamento, revise o intervalo ao longo da rota de solicitação que originou o erro.
- Observando a classe e a mensagem do erro, navegue até o serviço a partir de seu intervalo no trace para ver se o erro está ocorrendo em uma taxa alta.
Continue lendo para explorar as opções na interface distributed tracing .
Abra a interface distributed tracing
Para visualizar o rastreamento de um serviço específico:
Acesse one.newrelic.com > All entities.
Em
Your system
no painel esquerdo, selecione a entidade que contém o trace que você deseja inspecionar.
Clique em
Distributed tracing
no painel esquerdo.
Ou, para visualizar o rastreamento de todas as suas contas:
Vá para
one.newrelic.com > All Capabilities
.
Clique no bloco
Traces
.
Dica
Se você não tiver acesso às contas de alguns serviços em um rastreamento, ocultaremos alguns detalhes desses serviços.
Filtre seus dados de extensão
Temos uma variedade de ferramentas para ajudá-lo a encontrar rastreamentos e extensões para que você possa resolver problemas. A página de abertura distributed tracing é preenchida com uma lista padrão de rastreamento. Você pode refinar rapidamente esta lista usando estas ferramentas:
A barra de consulta Find traces é uma maneira rápida de restringir sua pesquisa por rastreamento. Você pode começar a digitar na barra de consulta ou usar o dropdown para criar uma consulta composta.
Os retornos da consulta são baseados no atributo span , não no atributo trace . Você define intervalos que possuem determinados critérios e a pesquisa exibe o rastreamento que contém esses intervalos.
Se você usar um filtro multi-atributo, ele será afetado pelo primeiro atributo selecionado. relatórios distributed tracing em dois tipos de dados: evento de transação e spans. Quando você seleciona um atributo no filtro, o tipo de dados ao qual o atributo está anexado determina os atributos disponíveis. Por exemplo, se você filtrar um atributo que está anexado a um evento de transação, somente atributos de evento de transação estarão disponíveis quando você tentar incluir filtro em valores de atributo adicionais.
As consultas para rastreamento são semelhantes ao NRQL (nossa linguagem de consulta), com algumas exceções principais:
Os valores de string não exigem aspas (por exemplo, você pode usar
appName = MyApp
ouappName = 'MyApp'
)O operador
like
não requer%
(por exemplo, você pode usarappName like product
ouappName like %product%
).Estes são dois exemplos de como usar a barra de consulta:
A consulta na imagem abaixo encontra rastreamento que:
Passe pelos aplicativos WebPortal e Inventory Service
Ter uma chamada de armazenamento de dados do Serviço de Inventário que leva mais de 500 ms
Contém um erro em qualquer span.
Vá para one.newrelic.com > All capabilities > Apps > Distributed tracing
A consulta na imagem abaixo encontra rastreamento que:
Conter trechos que passam pelo aplicativo WebPortal e onde ocorreu um erro em qualquer trecho no aplicativo WebPortal
Contém períodos em que o atributo
customer_user_email
contém um valor que termina comhotmail.com
em qualquer lugar do trace.Vá para one.newrelic.com > All capabilities > Apps > Distributed tracing
Além da barra de consulta na parte superior da página, você pode usar uma variedade de filtros no painel esquerdo para encontrar o rastreamento de seu interesse.
Infinite tracing data: selecione esta opção apenas para mostrar o traço relacionado ao recurso Rastreamento Infinito.
Multi span traces only: use isso para ocultar o rastreamento de intervalo único.
Error filters: em Errors selecione os erros pelos quais filtrar.
Histogram filters: abaixo de Errors na parte inferior do painel esquerdo, você pode clicar em More filters para mostrar os filtros do histograma. Arraste os controles deslizantes para alterar os valores, como Trace duration:
- Arraste a extremidade esquerda do controle deslizante para comparações maiores que.
- Arraste a extremidade direita do controle deslizante para comparações menores que.
- Arraste cada extremidade do controle deslizante em direção ao centro para filtrar por um intervalo.
Quando você arrasta o controle deslizante, ele altera a lista de traços e o que é mostrado nos gráficos trace .
Organize seus dados de extensão
A visualização padrão do distributed tracing mostra o rastreamento agrupado pelo mesmo intervalo de entrada raiz. Em outras palavras, os rastreamentos são agrupados pelo período em que o New Relic começou a registrar a solicitação. Você pode deslizar o botão de alternância Group similar traces para ativar e desativar esse recurso.
Com grupos trace você obtém uma visão de alto nível do rastreamento para poder entender o comportamento da solicitação para grupos de rastreamento semelhantes. Isso ajuda você a entender quedas ou picos na trace , duração e erros de rastreamento. Ao clicar em um dos grupos trace , você obtém todos os detalhes padrão no contexto do grupo trace específico selecionado.
Se Group similar traces estiver ativado, você verá três gráficos na parte superior da página no distributed tracing. Esses gráficos mostram a contagem trace , a duração do 95º percentil e a contagem de erros para cada um dos grupos trace listados na tabela abaixo dos gráficos. Para alterar os filtros nesses gráficos, consulte filtros do painel esquerdo.
O gráfico de dispersão trace é uma maneira rápida de procurar traços periféricos. Isso estará disponível na página de abertura do distributed tracing se você desativar o botão de alternância Group similar traces na parte superior da página.
No gráfico de dispersão, você pode mover o cursor pelo gráfico para visualizar detalhes trace e clicar em pontos individuais para obter detalhes:
Controle o que é exibido no gráfico de dispersão:
Selecione o tipo de duração no dropdown
View by
:
Backend duration
Root span duration
Trace duration
Em
Facet traces by
, selecione uma destas opções:
Root entry span
: agrupa pela transação raiz, que é o endpoint do serviço raiz. Em um trace em que o Serviço A chama o Serviço B e o Serviço B chama o Serviço C, o intervalo de entrada raiz é o endpoint do Serviço A. Por exemplo: "Serviço A - GET /usuário/%".
Root entity
: Agrupe pelo nome da primeira entidade no rastreamento. Em um trace em que o Serviço A chama o Serviço B e o Serviço B chama o Serviço C, a entidade raiz seria o Serviço A.
Errors
: agrupar se o rastreio contém ou não erros.
- Para dicas sobre como alterar os filtros no gráfico de dispersão, verifique os filtros do painel esquerdo.
Dica
Algumas consultas que produzem muitos resultados podem resultar em falso positivo nos gráficos. Isso pode se manifestar como gráficos mostrando resultados trace que não estão na lista trace .
Detalhes adicionais da interface
Aqui estão alguns detalhes, regras e limites adicionais da interface distributed tracing :
Os erros no nível do intervalo mostram onde os erros se originaram em um processo, como eles surgiram e onde foram tratados. Cada intervalo que termina com um erro é mostrado com um erro na interface e contribui para a contagem total de erros desse trace.
Aqui estão algumas dicas gerais sobre como entender os erros de span:
Os períodos com erros são destacados em vermelho na interface distributed tracing . Você pode ver mais informações no painel Error Details para cada período.
Todos os spans que saem com erros são contados na contagem de erros de span.
Quando vários erros ocorrem no mesmo intervalo, apenas um é gravado no intervalo nesta ordem de precedência:
- A
noticeError
- O erro de intervalo mais recente dentro do escopo desse intervalo
Esta tabela descreve como diferentes erros de span são tratados:
Tipo de erro
Descrição
Períodos terminando em erros
Um erro que sai do limite de um intervalo resulta em um erro nesse intervalo e em qualquer intervalo ancestral que também saia com um erro, até que o erro seja detectado ou saia da transação. Você pode ver se um erro foi detectado em um intervalo ancestral.
Observe erros
Os erros detectados pelas chamadas à API do agente
noticeError
ou pela instrumentação automática do agente são anexados ao span atualmente em execução.Erros de código de resposta
Erros de código de resposta são anexados ao intervalo associado, como:
Span de cliente: Transação externa prefixada com
http
oudb
.Intervalo de entrada: No caso de uma transação terminar com um erro de código de resposta.
O código de resposta para esses períodos é capturado como um atributo
http.statusCode
e anexado a esse período.
Erros OpenTelemetry
A caixa Error Details do painel direito é preenchida por períodos contendo
otel.status_code = ERROR
e exibe o conteúdo deotel.status_description
.Dica
Os eventos de span do OpenTelemetry manipulados pelo aplicativo/serviço são exibidos independentemente do status de erro de span e não estão necessariamente associados a um status de erro de span. Você pode visualizar exceções e não exceções de eventos de extensão clicando em View span events no painel direito.
- A
Se um intervalo for exibido como anômalo na interface, significa que o seguinte é verdadeiro:
- O intervalo é mais de dois Desvio padrão mais lento que a média de todos os intervalos com o mesmo nome do mesmo serviço nas últimas seis horas.
- A duração do intervalo é superior a 10% da duração do trace.
Quando um processo chama outro processo, e ambos os processos são instrumentos da New Relic, o trace contém uma representação da chamada no lado do cliente e uma representação no lado do servidor. O span de cliente (processo de chamada) pode ter diferenças relacionadas ao tempo quando comparado ao span do servidor (chamado processo). Essas diferenças podem ser devidas a:
Desvio do relógio devido a diferenças de horário do relógio do sistema
Diferenças na duração, devido a fatores como latência da rede ou atraso na resolução do DNS
A interface mostra essas diferenças relacionadas ao tempo exibindo um esboço do span de cliente no mesmo espaço que o span do servidor. Este intervalo representa a duração do intervalo de cliente.
Não é possível determinar todos os fatores que contribuem para essas discrepâncias relacionadas ao tempo, mas aqui estão alguns padrões comuns de intervalo e dicas para entendê-los:
R. Quando um intervalo de cliente é maior que o intervalo do servidor, isso pode ser devido à latência em diversas áreas, como: tempo de rede, tempo de fila, tempo de resolução de DNS ou de um balanceador de carga que não podemos ver. B. Quando um span de cliente começa e termina antes do início de um span de servidor, isso pode ser devido à distorção do relógio ou ao fato de o servidor estar executando um trabalho assíncrono que continua após o envio da resposta. C. Quando um intervalo de cliente inicia após um intervalo de servidor, é mais provável que haja uma distorção de relógio.
Rastreamento fragmentado são rastreios com períodos ausentes. Quando um span está faltando ou possui IDs de span pai inválidos, seu span filho fica separado do restante do trace, ao qual nos referimos como "órfão". Os trechos órfãos aparecem na parte inferior do trace e não terão linhas de conexão com o restante do trace. Se você tiver períodos fragmentados, verá a palavra Fragmented na parte superior da página de detalhes:
Tipos de propriedades de extensão órfãs indicadas na interface:
No root span. Falta o intervalo raiz, que é a primeira operação na solicitação. Quando isso acontece, o intervalo com o timestamp mais antigo é exibido como raiz.
Orphaned span. Um único intervalo com um intervalo pai ausente. Isso pode ser devido ao span pai ter um ID que não corresponde ao seu span filho.
Orphaned trace fragment. Um grupo de extensões conectadas em que a primeira extensão do grupo é uma extensão órfã.
Isso pode acontecer por vários motivos, incluindo:
Collection limits. Alguns aplicativos de transferência com taxas elevadas podem exceder os limites de cobrança (por exemplo, limites de cobrança do agente APM ou limites de API). Quando isso acontece, pode resultar na falta de períodos no rastreamento. Uma forma de remediar isso é desligar alguns relatórios, para que o limite não seja atingido.
Incorrect instrumentation. Se uma aplicação for instrumento incorretamente, ela não passará o contexto do trace corretamente e isso resultará em trace fragmentado. Para remediar isso, examine a fonte de dados que está gerando intervalos órfãos para garantir que a instrumentação seja feita corretamente. Para descobrir a fonte de dados de um intervalo, selecione-a e examine os detalhes do intervalo.
Spans still arriving. Se algum span pai ainda não tiver sido coletado, isso poderá resultar em lacunas temporárias até que todo o trace seja relatado.
UI display limits. Podem ocorrer intervalos órfãos se um trace exceder o limite de exibição de intervalo de 10K.
O rastreio preservado é semelhante aos instantâneos do rastreio original. Eles arquivam um trace completo que foi visualizado anteriormente e ultrapassou o período de retenção. O rastreamento completo está disponível apenas por 7 dias, a menos que você tenha adquirido a retenção estendida (que seria refletida automaticamente na interface). No entanto, o traço preservado pode existir por até 1 ano e geralmente funciona como o trace original.
Observe que o rastreamento preservado não exibirá dados de desempenho de intervalo ou dados de anomalia de intervalo. O rastreio preservado pode não estar acessível se uma entidade em um trace preservado for excluída, expirar ou parar de relatar dados.
Se você não tiver acesso às contas New Relic que monitor outros serviços, alguns detalhes do intervalo e do serviço ficarão ofuscados na interface. A ofuscação pode incluir:
Nome do span oculto por asteriscos
Nome do serviço substituído pelo ID da conta e ID do aplicativo New Relic
Para obter mais informações sobre os fatores que afetam seu acesso às contas, consulte Acesso à conta.
Ao visualizar a cascata de intervalos, os nomes dos intervalos podem ser exibidos em um formato incompleto que é mais legível do que o nome completo do intervalo. Para encontrar o nome completo, selecione esse intervalo e procure Full span name. Saber o nome completo pode ser valioso para consultar esses dados com NRQL.
Às vezes, um trace pode ter (ou parecer ter) períodos ou serviços ausentes. Isso pode se manifestar como uma discrepância entre a contagem de intervalos ou serviços de um trace exibidos na listatrace e a contagem exibida na página de detalhestrace .
Os motivos para falta de períodos e discrepâncias de contagem incluem:
Um agente pode ter atingido seu limite de coleta de período.
Um intervalo pode ser contado inicialmente, mas não ser exibido em um trace , por motivos como latência de rede ou problema de consulta.
A interface pode ter atingido o limite de exibição de 10K.
Todos os spans coletados, inclusive os não exibidos, podem ser consultados no NRQL.
Além dessas ferramentas de interface, você também pode conferir o exemplo de consulta NRQL na consulta dados distributed trace .