Skip to content

obs: Add Prometheus metrics endpoint to API #219

@Xhristin3

Description

@Xhristin3

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:

  1. Register PrometheusModule in AppModule
  2. Enable default metrics (CPU, memory, event loop)
  3. Expose /metrics endpoint in Prometheus text format
  4. Track custom counters: http_requests_total, http_request_duration_seconds, websocket_connections_total
  5. Add @Metric decorators to controllers and gateway

Acceptance Criteria

  • GET /metrics returns Prometheus text format
  • Default metrics include Node.js process metrics
  • HTTP request counter incremented per route
  • HTTP request duration histogram populated
  • WebSocket connection counter tracked

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

Metadata

Metadata

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions