Implementing distributed logging
Once we have created a distributed system, everything gets more complicated. One of the things that becomes more complicated is logging and tracing a request across multiple microservices. In Chapter 11, we covered distributed logging – this is a technique that allows us to trace all the log lines that are relevant to a specific request flow via the use of correlation IDs (reqId
). In this section, we will put that into practice.
First, we modify our gateway’s server.js
file to generate a new UUID for the request chain, like so:
const crypto = require('crypto') const fastify = require('fastify')({   logger: true,   genReqId (req) {     const uuid = crypto.randomUUID()     req.headers['x-request-id'] = uuid     return uuid   } })
Note that we generate a new UUID at every request and assign it back to the headers...