Um trace registra o caminho completo de uma solicitação em um sistema distribuído, desde o primeiro serviço acessado até a resposta final. O ARMS coleta esses dados para que você visualize cada chamada de serviço, sua duração e seu status de sucesso.
Benefícios
Em sistemas distribuídos, uma única solicitação geralmente passa por vários serviços. Quando ocorre timeout, falha ou exceção, identificar a causa raiz exige visibilidade completa da cadeia de chamadas. Os traces oferecem essa visibilidade:
Solução de problemas: os traces mostram o caminho completo da solicitação e o status de execução de todos os serviços envolvidos, o que permite isolar falhas rapidamente.
Otimização de desempenho: a duração individual de cada span revela gargalos de execução e fornece um alvo preciso para otimizações.
Monitoramento do sistema: os traces proporcionam visibilidade em tempo real do comportamento do sistema e ajudam engenheiros de O&M a avaliar a integridade dos serviços e a utilização de recursos.
Conceitos principais
Trace
Um trace captura a execução completa de uma solicitação, desde a entrada no sistema até a resposta final. Por exemplo, uma ação do usuário que aciona chamadas em três microsserviços gera um único trace que cobre todo o percurso, incluindo todas as chamadas de procedimento remoto (RPC) e consultas ao banco de dados.
Cada trace é uma árvore de spans. O ARMS atribui a todo trace um trace ID exclusivo, mantido em todos os serviços durante a solicitação. Todos os spans pertencentes à mesma solicitação compartilham esse trace ID, o que permite consultar todos os spans relacionados em um único local durante a depuração.
O span na raiz da árvore — o root span — não possui pai e marca o início do trace. Todos os demais spans têm um parent span ID que os vincula ao span originador, formando a hierarquia de chamadas.
Span
O span é a unidade básica de um trace e representa uma única operação lógica, como uma chamada de método, invocação de bloco de programa, RPC ou consulta ao banco de dados.
Cada span registra:
Um span ID exclusivo
Timestamps de início e fim
Um parent span ID (ausente no root span)
Os spans se aninham uns dentro dos outros para formar a árvore de traces, refletindo a hierarquia real de chamadas entre serviços.