Skip to main content

implement_correlation_id_tracing

🔗 Implement Correlation IDs for Distributed Tracing​

Inject a unique correlation ID into every request to trace execution across services and background jobs. Use a Rack middleware to generate or propagate an X-Request-ID, store it in RequestStore, and tag all log entries automatically.

# config/initializers/correlation_id_middleware.rb
class CorrelationIdMiddleware
def initialize(app)
@app = app
end

def call(env)
request_id = env['HTTP_X_REQUEST_ID'] || SecureRandom.uuid
RequestStore.store[:request_id] = request_id
Rails.logger.tagged(request_id) { @app.call(env) }
ensure
RequestStore.clear!
end
end

Rails.application.config.middleware.insert_before Rails::Rack::Logger, CorrelationIdMiddleware
# anywhere in your code
Rails.logger.info("User created", user_id: current_user.id)
# => [d290f1ee-6c54-4b01-90e6-d701748f0851] INFO -- : User created {:user_id=>42}