feat(observability): add phase9 health, readiness, metrics, request tracing, and simulator ops checks

This commit is contained in:
2026-01-25 10:00:00 +00:00
parent f6d66c3650
commit 2580719e03
5 changed files with 134 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
import { randomUUID } from 'crypto';
import type { NextFunction, Request, Response } from 'express';
import { incrementMetric } from '../observability/metrics';
export const requestContext = (req: Request, res: Response, next: NextFunction): void => {
const requestId = req.headers['x-request-id']?.toString() ?? randomUUID();
const start = Date.now();
res.setHeader('x-request-id', requestId);
incrementMetric('http.requests.total');
res.on('finish', () => {
const durationMs = Date.now() - start;
incrementMetric(`http.status.${res.statusCode}`);
console.log(
JSON.stringify({
requestId,
method: req.method,
path: req.path,
statusCode: res.statusCode,
durationMs,
ip: req.ip,
}),
);
});
next();
};