• EnglishEspañol日本語한국어Português
  • EntrarComeçar agora

Esta tradução de máquina é fornecida para sua comodidade.

Caso haja alguma divergência entre a versão em inglês e a traduzida, a versão em inglês prevalece. Acesse esta página para mais informações.

Criar um problema

Detalhes técnicos distributed tracing

Aqui estão alguns detalhes técnicos sobre como funciona distributed tracing da New Relic:

Amostragem de rastreamento

A forma como o seu rastreamento será amostrado dependerá da sua configuração e da ferramenta de rastreamento New Relic que você está usando. Por exemplo, você pode estar usando um serviço de telemetria de terceiros (como OpenTelemetry) para implementar amostragem de rastreamento antes que seus dados cheguem até nós. Ou, se você estiver usando o Infinite Tracing, provavelmente nos enviará todos os seus dados trace e confiará em nossa amostragem.

Temos algumas estratégias de amostragem disponíveis:

Amostragem head-based ( distributed tracing padrão)

Com exceção do nosso recurso Infinite Tracing , a maioria de nossas ferramentas de rastreamento usa uma abordagem Amostragem baseada em cabeça. Isso aplica filtros a intervalos individuais antes que todos os intervalos em um trace cheguem, o que significa que as decisões sobre aceitar ou não intervalos são tomadas no início (o "cabeçalho") do processo de filtragem. Usamos essa estratégia de amostragem para capturar uma amostra representativa da atividade, evitando problemas de armazenamento e desempenho.

Assim que chega o primeiro intervalo em um trace , uma sessão é aberta e mantida por 90 segundos. A cada chegada subsequente de um novo intervalo para esse trace, o tempo de expiração é redefinido para 90 segundos. O rastreamento que não recebeu um intervalo nos últimos 90 segundos será fechado automaticamente. O resumo trace e os dados de extensão são gravados somente quando um trace é fechado.

Aqui estão alguns detalhes sobre como o Amostragem head-based é implementado em nossas ferramentas padrão distributed tracing :

Amostras tail-based (rastreamento infinito)

Nosso recurso Infinite Tracing usa uma abordagem tail-based de amostragem. "Amostras tail-based" significa que as decisões de retenção de tracesão feitas no final do processamento, após a chegada de todos os intervalos em um trace .

Com o Infinite Tracing, você pode nos enviar 100% dos seus dados trace do seu aplicativo ou serviço de telemetria de terceiros, e o Infinite Tracing descobrirá quais dados de trace são mais importantes. E você pode configurar a amostragem para garantir que o traço importante para você seja retido.

Importante

Como o Infinite Tracing pode coletar e encaminhar mais dados trace do seu aplicativo ou serviço de telemetria de terceiros, você poderá perceber que seus custos de saída aumentam como resultado. Recomendamos que você fique de olho nesses custos ao implementar o Infinite Tracing para garantir que esta solução seja ideal para você.

Sem amostragem

Algumas de nossas ferramentas não usam amostragem. Detalhes de amostragem para estas ferramentas:

Limites trace

Nossos sistemas de processamento de dados estão equipados com limites internos para proteger nossa infraestrutura contra picos inesperados de dados. Esta camada protetora não apenas mantém a integridade da nossa plataforma, mas também garante uma experiência confiável e consistente para todos os nossos clientes. Embora esses limites sejam ajustados conforme necessário com base em diversas condições, eles são definidos com uma abordagem voltada para o futuro. À medida que nossa base de usuários e o consumo de dados crescem, expandimos nossa capacidade de infraestrutura. Este compromisso garante que capturamos todos os dados dos clientes enviados para nós e oferecemos a você uma visão clara e ininterrupta dos seus dados trace .

Como os dados trace são estruturados

Compreender a estrutura de um distributed trace pode ajudá-lo a:

Um distributed trace possui uma estrutura semelhante a uma árvore, com "span filho que se referem a um "span pai. Este diagrama mostra alguns relacionamentos de extensão importantes em um trace:

Este diagrama mostra como os intervalos em um distributed trace se relacionam entre si.

Este diagrama mostra vários conceitos importantes:

  • Trace root.

    O primeiro serviço ou processo em um trace é chamado de serviço ou processo

    root

    .

  • Process boundaries

    . Um processo representa a execução de um trecho lógico de código. Exemplos de processo incluem um serviço backend ou função do Lambda. Os períodos dentro de um processo são categorizados como um dos seguintes:

    • Entry span

      : o primeiro intervalo em um processo.

    • Exit span

      : um span é considerado um span de saída se a) for pai de um span de entrada, ou b) tiver atributo http. ou db. e, portanto, representar uma chamada externa.

    • In-process span

      : um intervalo que representa uma chamada de método ou função interna e que não é um intervalo de saída ou entrada.

  • Client spans

    . Um span de cliente representa uma chamada para outra entidade ou dependência externa. Atualmente, existem dois tipos de span de cliente:

    • Datastore

      . Se um span de cliente tiver um atributo prefixado com db. (como db.statement), ele será categorizado como um span de armazenamento de dados.

    • External

      . Se um span de cliente tiver um atributo prefixado com http. (como http.url) ou tiver um span filho em outro processo, ele será categorizado como um span externo. Esta é uma categoria geral para qualquer chamada externa que não seja consulta de armazenamento de dados. Se um período externo contiver http.url ou net.peer.name, ele será indexado na página Serviços externos .

  • Trace duration

    . A duração total de um trace é determinada pelo período de tempo desde o início do intervalo mais antigo até a conclusão do último intervalo.

Você pode consultar dados de relacionamento de extensão com o NerdGraph GraphiQL Explorer em api.newrelic.com/graphiql.

Como os dados trace são armazenados

Compreender como armazenamos dados trace pode ajudá-lo a consultar seus dados trace .

Salvamos dados trace como:

  • Span: Um intervalo representa operações que fazem parte de um distributed trace. As operações que um span pode representar incluem interação do lado do browser, consulta de armazenamento de dados, chamadas para outros serviços, temporização em nível de método e Função do Lambda. Um exemplo: em um serviço HTTP, um intervalo é criado no início de uma solicitação HTTP e concluído quando o servidor HTTP retorna uma resposta. Span atributo contém informações importantes sobre essa operação (como duração, dados do host, etc.), incluindo detalhes do relacionamento de trace (como traceId, guid). Para dados relacionados ao span, consulte span atributo.
  • Transaction: se uma entidade em um trace for monitorada por um agente, uma solicitação para essa entidade gerará um único evento Transaction. A transação permite que os dados trace sejam vinculados a outros recursos da New Relic. Para dados relacionados à transação, veja atributo da transação.
  • Metadados contextuais. Armazenamos metadados que mostram cálculos sobre um trace e as relações entre seus intervalos. Para consultar esses dados, utilize o explorador NerdGraph GraphiQL.

Como o contexto do trace é passado entre aplicativos

Apoiamos o padrão W3C Trace Context, que facilita o trace de transações entre redes e serviços. Quando você habilita distributed tracing, o agente New Relic adiciona cabeçalhos HTTP às solicitações de saída de um serviço. Os cabeçalhos HTTP funcionam como passaportes em uma viagem internacional: eles identificam o rastreamento do seu software e carregam informações importantes à medida que viajam por várias redes, processos e sistemas de segurança.

Os cabeçalhos também contêm informações que nos ajudam a vincular os spans posteriormente: metadados como ID trace , ID de span, ID da conta New Relic e informações de amostragem. Veja a tabela abaixo para mais detalhes sobre o cabeçalho:

Item

Descrição

accountId

Este é o ID da sua conta New Relic. No entanto, apenas os membros da sua conta e os administradores da New Relic podem associar esse ID às informações da sua conta de alguma forma.

appId

Este é o ID do aplicativo que gera o cabeçalho de trace. Assim como accountId, esse identificador não fornecerá nenhuma informação, a menos que você seja um usuário da conta.

guid

Com distributed tracing, cada segmento de trabalho em um trace é representado por um span e cada período tem um atributo guid . O guid do último intervalo no processo é enviado com a solicitação de saída para que o primeiro segmento de trabalho no serviço de recebimento possa adicionar esse guid como o atributo parentId que conecta os dados no trace.

Tipo pai

A fonte do cabeçalho de trace, como em mobile, browser, aplicativo Ruby, etc. Este se torna o atributo parent.type na transação acionada pela solicitação à qual este cabeçalho está anexado.

Prioridade

Um valor de classificação de prioridade gerado aleatoriamente que ajuda a determinar quais dados serão amostrados quando os limites de amostragem forem atingidos. Este é um valor float definido pelo primeiro agente New Relic que faz parte da solicitação para que todos os dados no trace tenham o mesmo valor de prioridade.

Amostrado

Um valor booleano que informa ao agente se os dados de rastreamento devem ser coletados para a solicitação. Isso também é adicionado como um atributo em qualquer período e dados de transação coletados.

Timestamp

Timestamp Unix em milissegundos quando a carga foi criada.

traceId

O ID único (uma string gerada aleatoriamente) usado para identificar uma única solicitação à medida que ela cruza os limites entre processos e entre processos. Este ID permite a vinculação de spans em um distributed trace. Isso também é adicionado como um atributo nos dados de extensão e transação.

transactionId

O identificador exclusivo do evento de transação.

Chave de conta confiável

Esta é uma chave que ajuda a identificar quaisquer outras contas associadas à sua conta. Portanto, se você tiver várias subcontas que o trace atravessa, podemos confirmar se todos os dados incluídos no trace vêm de uma fonte confiável e nos informa qual usuário deve ter acesso aos dados.

Versão e chave de dados

Isso identifica versões principais/secundárias, portanto, se um agente receber um cabeçalho de trace de uma versão com alterações significativas daquela em que está, ele poderá rejeitar esse cabeçalho e relatar a rejeição e o motivo.

Essas informações de cabeçalho são transmitidas ao longo de cada intervalo de um trace, a menos que o progresso seja interrompido por algo como middleware ou agente que não reconhece o formato do cabeçalho (veja a Figura 1).

Figura 1

Para resolver o problema de propagação de cabeçalho, oferecemos suporte à especificação W3C Trace Context, que requer dois cabeçalhos padronizados. Nossos agentes W3C New Relic mais recentes enviam e recebem esses dois cabeçalhos obrigatórios e, por padrão, também enviam e recebem o cabeçalho do agente New Relic anterior:

  • W3C (traceparent): o cabeçalho principal que identifica todo o trace (ID trace ) e o serviço de chamada (ID do span).
  • W3C (tracestate): um cabeçalho obrigatório que contém informações específicas do fornecedor e rastreia onde um trace esteve.
  • New Relic (newrelic): O cabeçalho proprietário original que ainda é enviado para manter a compatibilidade com versões anteriores do agente New Relic anterior.

Esta combinação de três cabeçalhos permite que o rastreamento seja propagado através do instrumento de serviços com estes tipos de agente:

  • Agente W3C New Relic
  • Agente New Relic não W3C
  • Agente compatível com W3C Trace Context

Importante

Se suas solicitações tocam apenas no agente compatível com o contexto de rastreamento W3C, você pode optar por desativar o cabeçalho New Relic. Consulte a documentação de configuração do agente para obter detalhes sobre como desativar o cabeçalho newrelic .

Os cenários abaixo mostram vários tipos de propagação de cabeçalho bem-sucedida.

Se ainda não o fez, crie sua conta New Relic gratuita abaixo para começar a monitorar seus dados hoje mesmo.

Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.