界面已本地化;技能介绍与说明文档按所选语言由 AI 自动翻译,代码、命令、路径和专业术语保留原文,以原作者文档为准。
探索技能
效率与协作 · SKILL.md

nestjs-observability

nestjs-observability

【效率与协作】Configure structured logging with Pino, Prometheus metrics, and health checks for NestJS services. Use when adding JSON logging, request tracing with correlation IDs, Prometheus metric endpoints, or liveness/readiness health checks.

独立 GitHub 快照 · 自动分类 · 以原作者文档为准

技能说明

GitHub

name: nestjs-observability description: Configure structured logging with Pino, Prometheus metrics, and health checks for NestJS services. Use when adding JSON logging, request tracing with correlation IDs, Prometheus metric endpoints, or liveness/readiness health checks. metadata: triggers: files: - 'main.ts' - '**/*.module.ts' keywords: - nestjs-pino - Prometheus - Logger - reqId

Observability Standards

Priority: P1 (HIGH)

Structured Logging (Pino)

Use nestjs-pino for high-performance, async JSON logging. Node's console.log blocking and unstructured.

See implementation examples

Tracing (Correlation)

  • Request ID: Every log line must include reqId. nestjs-pino handles this via AsyncLocalStorage.
  • Propagation: Pass x-request-id to downstream microservices and database queries for end-to-end tracing.

Metrics

Expose /metrics for Prometheus scraping using @willsoto/nestjs-prometheus.

See implementation examples

Health Checks

  • Terminus: Implement "Liveness" (I'm alive) vs "Readiness" (I can take traffic).
  • DB Check: TypeOrmHealthIndicator / PrismaHealthIndicator.
  • Memory Check: Fail readiness if Heap > 300MB to prevent crash loops.

Performance Headers (Dev Only)

  • X-Response-Duration-Ms, X-DB-Execution-Ms, X-API-Overhead-Ms
  • Gate behind ENABLE_PERFORMANCE_BENCHMARK feature flag; never expose in production.

Anti-Patterns

  • No console.log: Use nestjs-pino for async, structured, JSON-formatted logging.
  • No missing reqId: Propagate x-request-id header to all downstream services and queries.
  • No perf data in production by default: Gate benchmarking behind ENABLE_PERFORMANCE_BENCHMARK flag.
我的收藏