Correlacionando rastreamentos do frontend e do backend
Propague o contexto do rastreamento pelas solicitações fetch para que os spans do backend apareçam no mesmo rastreamento da ação da interface que os disparou.
Correlacionando rastreamentos do frontend e do backend é uma aula grátis de React Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de React Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de React Academy inclui 4 aulas no total.
O objetivo do rastreamento distribuído
O objetivo final da observabilidade do front-end é um único rastreamento que conecte o clique de um usuário no React à rede, aos manipuladores de API, às chamadas de serviço e à consulta ao banco de dados que causou uma resposta lenta. Esse rastreamento de ponta a ponta torna instantânea a análise da causa raiz.
Padrão W3C TraceContext
A especificação W3C TraceContext define o formato do cabeçalho traceparent: version-traceId-parentSpanId-flags. Um valor de exemplo é: 00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01. O ID do rastreamento é compartilhado por todo o rastreamento distribuído; o ID do intervalo pai muda a cada salto.
Injeção automática de cabeçalhos
A instrumentação de solicitações do OpenTelemetry injeta automaticamente o cabeçalho traceparent em cada solicitação de saída. O cabeçalho transporta o ID atual do rastreamento e o ID do intervalo da solicitação do front-end como pai, permitindo que o back-end crie um intervalo filho vinculado ao intervalo do front-end.
Continuação do rastreamento no back-end
No servidor, a instrumentação HTTP do OpenTelemetry para Node.js/Express lê o cabeçalho traceparent recebido e cria intervalos que são filhos do intervalo da solicitação do front-end. O ID do rastreamento é preservado, então o Jaeger ou o Grafana Tempo mostram toda a cadeia — intervalo do navegador → intervalo do Express → intervalo do banco de dados — em uma única visualização em cascata.
Visualizando rastreamentos no Jaeger ou no Grafana Tempo
Com o front-end e o back-end instrumentados, abra o Jaeger ou o Grafana Tempo e pesquise um ID de rastreamento. Você verá a cascata completa: o intervalo do componente React no topo, o intervalo da solicitação abaixo dele, depois o intervalo do manipulador de rota do Express e, por fim, o intervalo da consulta ao banco de dados — todos com suas durações e atributos.
Correlação por usuário
Defina user.id como um atributo em todos os intervalos do seu aplicativo React usando span.setAttribute('user.id', userId). Faça o mesmo no back-end. Agora você pode filtrar seu back-end de observabilidade para mostrar todos os rastreamentos de um ID de usuário específico, permitindo diagnosticar problemas relatados por um cliente específico.
Correlação por sessão
Gere um ID de sessão exclusivo ao carregar a página e defina-o como session.id em todos os intervalos do front-end. Inclua-o nos cabeçalhos das solicitações para que o back-end também o associe aos intervalos do back-end. A correlação por sessão permite reconstruir a sequência completa de ações realizadas por um usuário em uma única sessão.
Vinculando sessões RUM a rastreamentos
Ferramentas comerciais como o Datadog integram sessões RUM a rastreamentos APM de forma nativa. O SDK RUM do Datadog injeta um cabeçalho específico (X-Datadog-Trace-Id) nas solicitações, e o SDK APM do Datadog no back-end o lê para vincular a reprodução da sessão RUM ao rastreamento distribuído — você pode assistir à reprodução da sessão e ver o rastreamento simultaneamente.
O benefício da correlação
Considere um usuário reclamando que o checkout está lento. Com rastreamamentos correlacionados, pesquise por user.id no seu back-end de observabilidade, encontre o rastreamento do checkout e veja imediatamente que a lentidão foi causada por uma consulta de 900 ms ao banco de dados, combinando duas tabelas grandes — algo invisível apenas nas métricas do front-end.
OpenTelemetry Collector como proxy
Os navegadores não podem enviar rastreamentos diretamente para o Jaeger ou outros back-ends devido a restrições de CORS e à exposição de credenciais. Em vez disso, execute um OpenTelemetry Collector como proxy: configure OTLPTraceExporter para enviar dados ao ponto de extremidade do Collector, que então os distribui para o Jaeger, o Grafana Tempo ou qualquer outro back-end.
Considerações de privacidade
Os rastreamentos do front-end podem capturar inadvertidamente dados sensíveis: valores de campos de formulário em URLs, PII em atributos de intervalos e tokens de sessão nos cabeçalhos. Revise sua instrumentação para garantir que nenhum dado sensível seja incluído nos atributos dos intervalos. Use span.setAttribute com moderação e higienize os parâmetros de consulta das URLs antes de registrá-los.
Formato do cabeçalho traceparent
Qual é o formato do cabeçalho traceparent do W3C TraceContext?
Resumo da lição
A correlação entre os rastreamentos do front-end e do back-end cria visibilidade de ponta a ponta em toda a jornada da solicitação do usuário. Os cabeçalhos traceparent do W3C TraceContext conectam automaticamente os intervalos das solicitações do navegador aos intervalos do back-end por meio da instrumentação do OpenTelemetry. Enriqueça todos os intervalos com user.id e session.id para uma depuração direcionada. Use um OpenTelemetry Collector como proxy entre o navegador e o back-end para evitar problemas de CORS e exposição de credenciais.
Perguntas Frequentes
A aula “Correlacionando rastreamentos do frontend e do backend” é grátis?
Sim — o texto completo de “Correlacionando rastreamentos do frontend e do backend” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de React Academy, atualize para CoddyKit PRO. O curso de React Academy inclui 4 aulas no total.
O que vou aprender em “Correlacionando rastreamentos do frontend e do backend”?
Propague o contexto do rastreamento pelas solicitações fetch para que os spans do backend apareçam no mesmo rastreamento da ação da interface que os disparou. Você pratica React Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar React Academy?
Nenhuma experiência prévia é necessária. React Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Correlacionando rastreamentos do frontend e do backend”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de React Academy?
Sim. Cada aula de React Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Observabilidade do frontend: o que é e por que importa
- Rastreamentos OpenTelemetry do navegador
- Monitoramento de usuários reais e Web Vitals
- Correlacionando rastreamentos do frontend e do backend