aj-geddes avatar

distributed-tracing

Implement distributed tracing with Jaeger and Zipkin for tracking requests across microservices. Use

by aj-geddes|Open Source

Distributed Tracing

Table of Contents

Overview

Set up distributed tracing infrastructure with Jaeger or Zipkin to track requests across microservices and identify performance bottlenecks.

When to Use

  • Debugging microservice interactions
  • Identifying performance bottlenecks
  • Tracking request flows
  • Analyzing service dependencies
  • Root cause analysis

Quick Start

Minimal working example:

# docker-compose.yml
version: "3.8"
services:
  jaeger:
    image: jaegertracing/all-in-one:latest
    ports:
      - "5775:5775/udp"
      - "6831:6831/udp"
      - "16686:16686"
      - "14268:14268"
    networks:
      - tracing

networks:
  tracing:

Reference Guides

Detailed implementations in the references/ directory:

GuideContents
Jaeger SetupJaeger Setup, Node.js Jaeger Instrumentation
Express Tracing MiddlewareExpress Tracing Middleware
Python Jaeger IntegrationPython Jaeger Integration
Distributed Context PropagationDistributed Context Propagation
Zipkin IntegrationZipkin Integration, Trace Analysis

Best Practices

✅ DO

  • Sample appropriately for your traffic volume
  • Propagate trace context across services
  • Add meaningful span tags
  • Log errors with spans
  • Use consistent service naming
  • Monitor trace latency
  • Document trace format
  • Keep instrumentation lightweight

❌ DON'T

  • Sample 100% in production
  • Skip trace context propagation
  • Log sensitive data in spans
  • Create excessive spans
  • Ignore sampling configuration
  • Use unbounded cardinality tags
  • Deploy without testing collection
distributed-tracing - AI Agent Skill for Claude Code & Cursor | Agent Skills