Distributed Tracing helps track requests as they flow across multiple microservices in a distributed system.

Each service adds trace information so you can reconstruct the full request path, timing, and dependencies.

Key Tools & Standards

OpenTelemetry (OTel)

A standardized framework for collecting telemetry data (traces, metrics, logs, and events) across distributed systems.

Core Components

  1. Instruments → Language-specific libraries that capture telemetry data (traces, metrics, logs, profiling).
  2. Collector → A single binary that receives, processes, and exports telemetry data.
  3. Specification → Defines APIs and SDKs for consistent implementation.
  4. SDK Components
    • Instrumentation → Collects traces from your code (e.g., Express instrumentation). 🔗 Registry of instrumentations
    • Processors → Receive spans and apply transformations. Examples: SimpleSpanProcessor, BatchSpanProcessor.
    • Exporters → Send processed data to backends (e.g., Zipkin, Jaeger, OTLP, Prometheus).
    • Propagators → Inject and extract context across service boundaries using trace headers.

Telemetry Data Types

TypeCommon Tools
TracesZipkin, Jaeger
MetricsPrometheus
LogsGrafana Loki, Promtail, Fluent Bit
Eventsk-span

📺 Resources

Distributed Tracing Tools

Zipkin

🔗 https://zipkin.io/

Zipkin Components

  • Collector → Gathers trace data from instrumented services.
  • Storage → Persists trace data for analysis.
  • API → Enables querying and retrieving trace data.
  • Web UI → Visualizes trace spans and dependencies.

Jaeger

🔗 https://www.jaegertracing.io/

Alternative to Zipkin with similar distributed tracing capabilities.

Trace Context Propagation

When Service A calls Service B:

  1. Service A attaches a trace ID and parent span ID to the request header.
  2. Service B receives it and informs OpenTelemetry SDK that it’s part of the same trace context.
  3. This creates a unified trace across all services.

Observability Tools & Platforms

CategoryProductDescription / Link
Monitoring & Observability SuiteSematextFull-stack monitoring tools for DevOps teams to track logs, metrics, and traces.
Kernel-Level TracingeBPF Tracing (Groundcover Blog)Tracing at the kernel level using eBPF for deep visibility.
Observability Blog & ToolsGroundcover Observability ToolsOverview of observability tools and comparisons.
Observability Resource HubGroundcover BlogRegularly updated observability insights.
Awesome Observability ListGitHub: adriannovegil/awesome-observabilityCurated collection of observability best practices, tools, and guides.

Learning & Reference Material

Data Flow in Distributed Tracing

  1. Instrumentation collects trace data →
  2. Propagator attaches context headers →
  3. Collector receives data →
  4. Processor batches or modifies it →
  5. Exporter sends it to backend (e.g., Zipkin/Jaeger) →
  6. UI visualizes full trace flow across services.

Case Study

Distributed tracing tool

https://www.groundcover.com/blog/ebpf-tracing → to trace in kernel level

https://github.com/adriannovegil/awesome-observability#1-best-practices

Products

  1. https://sematext.com/ [We provide monitoring tools for DevOps teams that want to move faster provide A to Z monitoring]

https://www.groundcover.com/blog/observability-tools

Obervablity related blog → https://www.groundcover.com/blog

  1. https://zipkin.io/

https://github.com/adriannovegil/awesome-observability no

Book → Distributed Systems Observability

https://sre.google/books/ collection of book

Open telemetry → standard for tracing, logs the distributed system

  1. Traces → Zipkin
  2. metrics → Prometheus
  3. logs → grafan loki, promtel,flynn bit
  4. Events → k-span

Components of Open telemetry

  1. Instruments → library for each programming language to capture → traces metrics logs and profiling
  2. collector → single bin to receive process and export data →
  3. specification → API SDK

https://youtu.be/Txe4ji4EDUA → get started video

  • Zipkin

    Zipkin Components: Zipkin consists of several components:

    • Collector: Collects trace data from instrumented services and stores it.
    • Storage: Stores the collected trace data for later analysis.
    • API: Provides a query API for retrieving and analyzing trace data.
    • Web UI: Offers a user interface to visualize and analyze traces.

https://www.jaegertracing.io/ → Zipkin alternative

When service to service request go it insert a traceID 1. parent in header when service b recevied it inform to open telementry i recevied request from this trace id

SDK

  1. instrumentation → which trace collect from the code example → express instrumentation
    1. https://opentelemetry.io/ecosystem/registry/ [Search te instrumention]
  2. Processors → receive span and do change ex→ simple span processor, batch, multiple
  3. Exporter → send data to storage → elastic search etc.. ex →zipkin jager OTLP exporter Prometheus
  4. Propagator → inject context on outgoing/incoming activities using trace → header

Tracing