Skip to content
Latchkey

O Que É um Span? A Unidade de um Trace Explicada

Um span é uma única operação nomeada e cronometrada dentro de um trace, o bloco de construção básico que, combinado com outros spans, forma a imagem completa de uma requisição.

Se um trace é a história de uma requisição, um span é uma frase dela. Spans são onde o tempo e o detalhe reais do tracing distribuído vivem. Entender spans é a chave para ler qualquer trace, porque tudo o que um trace lhe diz é a soma de seus spans.

O que um span captura

Um span registra o nome de uma operação, seus tempos de início e fim (e portanto sua duração), e seu status: sucesso ou erro. Ele também carrega identificadores, seu próprio span ID, o parent span ID e o trace ID compartilhado, que permitem posicioná-lo corretamente dentro da árvore do trace.

Atributos e events

Spans mantêm atributos, pares chave-valor que descrevem a operação, como o método HTTP, a instrução de banco de dados ou um nome de job. Eles também podem registrar events: pontos com timestamp dentro do span, como um retry ou um cache miss. Esses detalhes são o que transforma uma medição de tempo pura em algo diagnóstico.

Aninhamento e a árvore de spans

Spans formam uma hierarquia pai-filho. Um span de requisição pode ter spans filhos para cada chamada downstream, e esses filhos seus próprios filhos. O aninhamento codifica causalidade e tempo: você pode ver quais operações aconteceram dentro de quais, e quais rodaram em paralelo versus em sequência.

Root e child spans

O root span é aquele sem pai, representando toda a operação, a requisição de entrada ou a execução inteira do pipeline. Todo outro span descende dele. A duração do root span é o tempo total da operação, e os child spans explicam como esse tempo foi distribuído.

Spans no CI/CD

Quando você rastreia um pipeline, cada job ou passo se torna um span: a execução é o root span, jobs são seus filhos, e passos são deles. Durações e status de spans então mostram precisamente qual passo é lento ou está falhando, o equivalente de build de encontrar a chamada gargalo em um trace de requisição.

Principais conclusões

  • Um span é uma operação nomeada e cronometrada dentro de um trace.
  • Spans carregam atributos, events e IDs de parent/trace.
  • Eles se aninham em uma árvore que codifica causalidade e tempo.
  • Em um pipeline rastreado, jobs e passos mapeiam para spans.

Guias relacionados