Skip to content

Pillar 3: Distributed Tracing - Connect the Dots

MDC (Mapped Diagnostic Context) propagates contextual information across service boundaries.

MDC Sequence Diagram MDC Propagation Flow

What is MDC?

  • Thread-local storage: Context stored per thread
  • Automatically included: Every log statement includes MDC values
  • Propagated across services: Sent via HTTP headers

Our Implementation

  • RequestLoggingFilter: Sets MDC values (request_id, user_ip, http_method, request_uri)
  • MdcPropagationInterceptor: Adds MDC as HTTP headers
  • Backend receives: Uses propagated values from headers

HTTP Headers Used

  • X-Request-ID: Unique request identifier
  • X-Person-User-IP: Client IP address
  • X-Person-HTTP-Method: HTTP method (GET, POST, etc.)
  • X-Person-Request-URI: Request path

Key Takeaways

  • MDC provides thread-local context storage
  • HTTP headers propagate context between services
  • Automatic inclusion in all log statements
  • Foundation for distributed tracing