ID-Trace

Distributed Request & Identity Tracing System

License: MIT Build Status Version


📌 Overview

ID-Trace is a high-performance tracing framework designed to generate, correlate, and track unique trace IDs and user identities across distributed microservices. It ensures end-to-end observability, seamless logging context propagation, and effortless debugging for complex distributed workflows.


🏗 Architecture

ID-Trace operates as a lightweight context-propagation engine across service boundaries. It intercepts inbound requests, manages execution contexts (e.g., via AsyncLocalStorage/ThreadLocal), attaches correlated metadata (Trace ID, Span ID, User Identity), and injects those descriptors into outbound calls and logs.

                   ### System Overview
                              |-----------------------------|
                              |       Client / Ingress      |
                              |-----------------------------|
                                            | HTTP / gRPC
                                            ▼
                   |-------------------------------------------------------|
                   | API GATEWAY                                           |
                   | - Generates / Extracted: X-Trace-ID                   |
                   | - Resolves User Identity: X-User-ID                   |
                   |-------------------------------------------------------|
                                            |
                                  Inject Header | Context
                                            ▼
                   |----------------------------------------------------------|
                   | SERVICE A                                                |
                   |                                                          |
                   |  |-----------------------|    |-----------------------|  |
                   |  | ID-Trace Middleware   |--->| ID-Trace Local Context|  |
                   |  | (Interceptors/Filters)|    | (Trace ID, Span ID,   |  |
                   |  |-----------------------|    |  User ID)             |  |
                   |                               |-----------------------|  |
                   |                                          |               |
                   |                                          ▼               |
                   |                               |-----------------------|  |
                   |                               | Contextual Structured |  |
                   |                               | Logger                |  |
                   |                               |-----------------------|  |
                   |----------------------------------------------------------|
                                            | Outbound HTTP / gRPC / Kafka
                                            ▼
                   |---------------------------------------------------------|
                   | SERVICE B                                               |
                   |                                                         |
                   |  |-----------------------|    |-----------------------| |
                   |  | ID-Trace Middleware   |--->| ID-Trace Local Context| |
                   |  |-----------------------|    |-----------------------| |
                   |---------------------------------------------------------|

Core Architecture Components

  1. Context Interceptors / Middleware:

    • Inbound: Intercepts incoming HTTP headers, gRPC metadata, or message queue attributes to extract X-Trace-ID, X-Parent-Span-ID, and X-User-ID. If missing at the entry point, ID-Trace generates a new cryptographically secure UUIDv4 trace context.
    • Outbound: Automatically injects updated tracing headers (X-Trace-ID, X-Span-ID, X-User-ID) into downstream outgoing HTTP calls, gRPC clients, and message producers (e.g., Kafka/RabbitMQ headers).
  2. Async Local Context Store:

    • Uses language-native asynchronous storage mechanisms (such as AsyncLocalStorage in Node.js, ThreadLocal in Java, or context.Context in Go) to ensure context isolation across concurrent asynchronous operations without manual parameter passing.
  3. Identity Binding Engine:

    • Ties authenticated user/session credentials to the distributed context as early as possible (e.g., at API Gateway / Authentication Service) so user operations can be traced end-to-end across unauthenticated internal microservice hops.
  4. Contextual Logger Integration:

    • Wraps application loggers (Winston, Zap, Logback, SLF4J) to automatically attach trace_id, span_id, and user_id to every structured log output.

🔀 Context Propagation & Headers Contract

ID-Trace uses standard HTTP header/metadata specifications to propagate state across network boundaries:

Header Name Purpose Example Value
X-Trace-ID Unique identifier for the entire request execution chain a1b2c3d4-e5f6-7890-abcd-1234567890ef
X-Span-ID Unique identifier for an individual operation within a service 890ef12345
X-Parent-Span-ID Span ID of the caller service 1234567890
X-User-ID Authenticated user/entity identifier user_9876

✨ Features

  • 🔍 End-to-End Tracing: Propagates Trace IDs, Span IDs, and Correlation IDs across asynchronous boundaries and network hops.
  • 👤 Identity Mapping: Binds authenticated user/session identities to distributed execution contexts.
  • ⚡ Lightweight & Fast: Minimal performance overhead with non-blocking asynchronous context propagation.
  • 🛠️ Framework Integration: Ready-to-use middleware for standard HTTP servers, RPC frameworks, and message queues (e.g., Express, FastAPI, Spring Boot, Kafka, gRPC).
  • 📊 Log Format Consistency: Standardizes log output structures across multi-language microservices.

give the meaning this lines

</> Developed with 💡 by Gokul V

GitHub Profile LinkedIn Profile

Share this project:

Updates