K8s em Exemplos: Rastreamento Distribuído
| Rastreamento distribuído segue requisições enquanto fluem através de microsserviços. Cada serviço adiciona spans a um trace, mostrando timing e relacionamentos. Baseado no paper Dapper do Google, ferramentas como Jaeger e Zipkin coletam traces. Use para: debugging de latência, entender dependências, encontrar gargalos. |
| terminal | |
| Quick start: faça deploy do Jaeger para coleta e visualização de traces. Para produção, use o Jaeger Operator ou chart Helm com storage persistente. A imagem all-in-one é adequada para desenvolvimento. | |
| otel-sidecar.yaml | |
| O sidecar OpenTelemetry Collector recebe traces da aplicação e exporta para backends (Jaeger, Zipkin, Tempo). Apps enviam traces para localhost; o sidecar lida com batching, retry e exportação. | |
| otel-collector-config.yaml | |
| Config do Collector define receivers (como traces chegam), processors (batching, filtragem), e exporters (para onde traces vão). Esta config recebe traces OTLP e exporta para Jaeger. | |
| trace-propagation.yaml | |
| Propagação de contexto de trace passa IDs de trace entre serviços via headers HTTP. O padrão W3C Trace Context usa headers | |
| jaeger-deployment.yaml | |
| Deploy Jaeger all-in-one para desenvolvimento. Inclui collector, query UI e storage em memória. Para produção, use componentes separados com storage persistente (Elasticsearch, Cassandra). | |
| sampling-config.yaml | |
| Sampling reduz volume de traces em sistemas de alto tráfego. Head-based sampling decide no início do trace; tail-based faz amostragem após ver o trace completo. Configure ratio (0.1 = 10%) ou use sampling adaptativo baseado no tráfego. | |
| terminal | |
| Acesse a UI do Jaeger para buscar traces por serviço, operação, tags ou duração. Visualize timelines de trace mostrando relacionamentos de spans, identifique serviços lentos e analise caminhos de erro. | |