Problem Statement
The API has no metrics endpoint. The xstreamroll-processing worker has a simple JSON metrics server on port 3002, but the API (NestJS on port 3001) exposes no observability data at all. Request counts, response latencies, error rates, and WebSocket connection counts are untracked.
Evidence
No prom-client, @willsoto/nestjs-prometheus, or metrics middleware exists in api/. Worker has custom JSON metrics at xstreamroll-processing/src/metrics.ts.
Impact
Zero production observability for the API. Cannot monitor request rates, p95 latency, error rates, or WebSocket connection counts. Capacity planning and alerting are impossible without manual tooling.
Proposed Solution
Add @willsoto/nestjs-prometheus (NestJS-native Prometheus module) to the API:
- Register PrometheusModule in AppModule
- Enable default metrics (CPU, memory, event loop)
- Expose
/metrics endpoint in Prometheus text format
- Track custom counters: http_requests_total, http_request_duration_seconds, websocket_connections_total
- Add
@Metric decorators to controllers and gateway
Acceptance Criteria
File Map
api/package.json — add @willsoto/nestjs-prometheus
api/src/metrics/metrics.module.ts — new
api/src/metrics/metrics.controller.ts — new
api/src/app.module.ts — import MetricsModule
api/src/middleware/request-logger.middleware.ts — add counter increment
Labels: observability
Priority: Medium | Difficulty: Intermediate | Estimated Effort: 1d
Labels: observability
Priority: Medium | Difficulty: Intermediate | Estimated Effort: 1d
Backlog ID: REPO-036
Problem Statement
The API has no metrics endpoint. The xstreamroll-processing worker has a simple JSON metrics server on port 3002, but the API (NestJS on port 3001) exposes no observability data at all. Request counts, response latencies, error rates, and WebSocket connection counts are untracked.
Evidence
No
prom-client,@willsoto/nestjs-prometheus, or metrics middleware exists inapi/. Worker has custom JSON metrics atxstreamroll-processing/src/metrics.ts.Impact
Zero production observability for the API. Cannot monitor request rates, p95 latency, error rates, or WebSocket connection counts. Capacity planning and alerting are impossible without manual tooling.
Proposed Solution
Add
@willsoto/nestjs-prometheus(NestJS-native Prometheus module) to the API:/metricsendpoint in Prometheus text format@Metricdecorators to controllers and gatewayAcceptance Criteria
File Map
api/package.json— add @willsoto/nestjs-prometheusapi/src/metrics/metrics.module.ts— newapi/src/metrics/metrics.controller.ts— newapi/src/app.module.ts— import MetricsModuleapi/src/middleware/request-logger.middleware.ts— add counter incrementLabels: observability
Priority: Medium | Difficulty: Intermediate | Estimated Effort: 1d
Labels: observability
Priority: Medium | Difficulty: Intermediate | Estimated Effort: 1d
Backlog ID: REPO-036