Distributed tracing permite que você veja toda a jornada de suas solicitações em sistemas distribuídos. Para o agente Python, oferecemos dois tipos de distributed tracing. Para obter mais detalhes, consulte Como funciona a amostragem span:
Padrão (Amostragem head-based): Antes de qualquer rastreamento chegar, determinamos uma porcentagem definida de rastreamento para aceitar e analisar. Isso fornece um ponto de partida sólido para ver como o rastreamento pode ajudá-lo. Ele está ativado por padrão no agente Python da New Relic.
Rastreamento Infinito (amostragem tail-based): Nosso serviço baseado em nuvem aceita todos os seus rastreamentos e depois os classifica para encontrar o mais importante. O rastreamento infinito analisa todo o seu rastreamento e oferece opções de configuração para obter amostras do rastreamento mais importante para você.
Se você deseja apenas experimentar distributed tracing padrão (Amostragem head-based) ou também configurar o Rastreamento Infinito (amostragem tail-based), você precisa começar configurando o rastreamento padrão.
Distributed tracing padrão
Esta é a melhor abordagem para configurar distributed tracingpadrão se você ainda não tiver instalado nenhum agente APM para seus serviços.
Dica
Ao instalar o agente New Relic Python, distributed tracing padrão é ativado por padrão. Se preferir desligá-lo, consulte nosso guia de configuração.
Identificar serviços
Descubra quais serviços você deseja usar para que cada um envie dados trace para o New Relic.
Instrumentar cada serviço com um agente APM
Para cada serviço envolvido em sua transação, você realizará a instalação separada do agente. Se alguns dos seus serviços usarem outros idiomas, basta repetir as etapas de instalação para esses idiomas.
Para iniciar a rotina de instalação, clique no bloco abaixo. Quando terminar de instalar cada agente, volte aqui para ver dicas para visualizar seu rastreamento.
Depois de instrumentar cada um de seus serviços com o agente APM, gere algum tráfego em sua aplicação para que possamos capturar algum rastro. Aqui estão duas maneiras de visualizar seu rastreamento na interface:
Esta é uma maneira de ver o rastreamento de um serviço específico:
Na seção Monitor do painel esquerdo, clique em Distributed tracing.
Para obter detalhes, clique em um trace individual. Se Group similar traces estiver ativado no menu superior, clique em um grupo trace e, em seguida, clique em um trace individual.
Se você não encontrar o rastreamento desejado, poderá filtrar por trace.id.
Selecione sua entidade (serviço) no painel esquerdo.
Para obter detalhes, clique em um trace individual. Se Group similar traces estiver ativado no menu superior, clique em um grupo trace e, em seguida, clique em um trace individual.
Se você não encontrar o rastreamento desejado, poderá filtrar por trace.id.
Você pode reunir seus detalhes de registro e rastreamento para tornar a resolução de problemas mais fácil e rápida. Com logs contextualizados, você pode ver a mensagem do log junto com o trace na interface do New Relic.
Distributed tracing padrão para o agente APM captura até 10% do seu rastreamento, mas se você quiser que analisemos todos os seus dados e encontremos o rastreamento mais relevante, você pode configurar o Rastreamento Infinito.
Antes de começar, primeiro certifique-se de atender aos requisitos.
Conclua a configuração do distributed tracingpadrão
A configuração do Infinite Tracing baseia-se no distributed tracing padrão. Portanto, certifique-se de ter concluído as etapas acima e continue com a configuração do observador trace .
Configurar o observador trace
O observador trace é um serviço New Relic baseado em AWS que coleta e analisa todos os seus rastreamentos. Siga as instruções em Configurar o observador de rastreamento. Quando terminar, retorne aqui com as informações do observador trace e continue com a próxima etapa para configurar o agente.
Configurar o agente para rastreamento infinito
As definições de configuração do Infinite Tracing incluem o distributed tracing padrão, além de informações sobre o observador trace . Observe que a configuração no lado do servidor não está disponível para Infinite Tracing.
Aqui está uma visão geral das configurações. Para obter mais ajuda com configuração, consulte Configuração do agente Python
Tipo
Configuração necessária
Rastreamento infinito
Abra a biblioteca com este comando de instalação e configure o arquivo de configuração ou variáveis de ambiente:
A partir da v8.7.0, o agente Python oferece suporte a lotes e compactação. Ambas as configurações são padronizadas como verdadeiras e podem ser alternadas com as seguintes opções:
Arquivo de configuração (newrelic.ini):
infinite_tracing.batching=true # Send spans to the trace observer in batches rather than one by one
infinite_tracing.compression=true # Enable gzip compression for data sent via Infinite Tracing
Variáveis ambientais:
NEW_RELIC_INFINITE_TRACING_BATCHING=true
NEW_RELIC_INFINITE_TRACING_COMPRESSION=true
Dica
Se precisar de ajuda com a configuração do proxy, consulte Suporte ao proxy.
(Opcional) Personalizar rastreamento infinito
Depois de adicionar as definições de configuração do agente, você deverá começar a ver os dados na interface do New Relic. Depois de passar algum tempo analisando seus dados, você pode querer ajustar alguns recursos do Infinite Tracing:
Se um serviço não estiver passando o cabeçalho de trace para outros serviços, você poderá usar a de distributed tracing carga útil API para instrumentar o serviço de chamada e o serviço chamado. O serviço de chamada usa uma chamada de API para gerar uma carga útil, que é aceita pelo serviço chamado.
Para instrumentar o serviço de chamada:
Certifique-se de que a versão do agente APM que monitora o serviço de chamada oferece suporte distributed tracing.
Invoque a chamada API do agente para gerar uma carga distributed trace (consulte API Python do agente).
Importante
Para manter a ordem adequada dos períodos em um trace, certifique-se de generate the payload in the context of the span that sends it.
Adicione essa carga à chamada feita ao serviço de destino (por exemplo, em um cabeçalho).
(Opcional) Identifique a chamada como uma chamada externa (consulte a API do agente Python).
Para instrumentalizar o serviço chamado:
Certifique-se de que a versão do agente APM que monitora o serviço chamado oferece suporte distributed tracing.
Se o agente New Relic no serviço chamado não identificar uma transação New Relic, use a API do agente para declarar uma transação. Esta é uma maneira de saber se uma transação não está em andamento: quando transaction = current_transaction() é executado, transaction é None. Ou, se result = accept_distributed_trace_payload(payload) for executado, o resultado será False.