Skip to content

Add database connection pool metrics to Prometheus endpoint #883

Description

@RUKAYAT-CODER

Overview

The application uses TypeORM with a PostgreSQL connection pool, but pool utilization metrics (active connections, idle connections, waiting queries) are not exposed to Prometheus. A pool saturation event (all connections in use) is invisible until it causes request timeouts.

Specifications

Features:

  • Export pool metrics: db_pool_active_connections, db_pool_idle_connections, db_pool_waiting_requests, db_pool_max_connections.

Tasks:

  • Use TypeORM's DataSource.driver.pool to read pool stats (pg-pool exposes these).
  • Create a DbPoolMetricsCollector that polls pool stats every 15 seconds.
  • Register the Prometheus gauges in MetricsModule.
  • Add a Prometheus alert rule for pool utilization > 80%.

Impacted Files:

  • src/monitoring/metrics/
  • New src/monitoring/collectors/db-pool-metrics.collector.ts

Acceptance Criteria

  • Pool metrics appear on the Prometheus scrape endpoint.
  • Alert fires when active connections exceed 80% of the pool max.
  • Metrics remain accurate under concurrent load (load test verified).

Metadata

Metadata

Assignees

Labels

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