Pillar 3: Distributed Tracing - Connect the Dots
MDC (Mapped Diagnostic Context) propagates contextual information across service boundaries.
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 identifierX-Person-User-IP: Client IP addressX-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