Observability Standards
Priority: P1 (OPERATIONAL)
Logging, monitoring, and observability patterns for production applications.
- •Standard: Use
nestjs-pinofor high-performance JSON logging.- •Why: Node's built-in
console.logis blocking and unstructured.
- •Why: Node's built-in
- •Configuration:
- •Redaction: Mandatory masking of sensitive fields (
password,token,email). - •Context: Always inject
Loggerand set the context (LoginService).
- •Redaction: Mandatory masking of sensitive fields (
Tracing (Correlation)
- •Request ID: Every log line must include a
reqId(Request ID).- •
nestjs-pinohandles this automatically usingAsyncLocalStorage. - •Propagation: Pass
x-request-idto downstream microservices/database queries key to trace flows.
- •
Metrics
- •Exposure: Use
@willsoto/nestjs-prometheusto expose/metricsfor Prometheus scraping. - •Key Metrics:
- •
http_request_duration_seconds(Histogram) - •
db_query_duration_seconds(Histogram) - •
memory_usage_bytes(Gauge)
- •
Health Checks
- •Terminus: Implement explicit logic for "Liveness" (I'm alive) vs "Readiness" (I can take traffic).
- •DB Check:
TypeOrmHealthIndicator/PrismaHealthIndicator. - •Memory Check: Fail if Heap > 300MB (prevent crash loops).
- •DB Check: