Correlation IDs — track requests across multiple services.
1const { v4: uuidv4 } = require("uuid");2const pino = require("pino");34// Middleware to generate/extract correlation ID5function correlationMiddleware(req, res, next) {6 req.correlationId = req.headers["x-correlation-id"] || uuidv4();7 res.setHeader("x-correlation-id", req.correlationId);8 req.log = logger.child({ correlationId: req.correlationId });9 next();10}1112// Pass correlation ID to downstream services13async function callService(url, correlationId) {14 return fetch(url, {15 headers: { "x-correlation-id": correlationId },16 });17}1819// Express middleware20app.use(correlationMiddleware);2122app.get("/api/orders", async (req, res) => {23 req.log.info("Fetching orders");2425 // Call another service with correlation ID26 const user = await callService(27 `http://user-service/users/${req.userId}`,28 req.correlationId29 );3031 req.log.info({ userId: user.id }, "Orders fetched");32 res.json({ orders: [] });33});
Benefits: