Implemeted health metric #274
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This PR implements the health and metrics endpoints requested in issue #39 to enable proper monitoring of the service in production.
Changes Made:
Added Prometheus Support
Installed prom-client package for metrics collection
Set up default Prometheus metrics collectors
Enhanced Health Service (health.service.js)
Added custom Prometheus metrics:
http_requests_total (Counter for total HTTP requests)
http_request_duration_seconds (Histogram for request latencies)
active_connections (Gauge for active connections)
memory_usage_bytes (Gauge for memory usage)
cpu_usage_percent (Gauge for CPU usage)
Added getPrometheusMetrics() function for Prometheus format output
Updated Performance Middleware (performance.middleware.js)
Modified to record metrics on each request (method, route, status code, duration)
Added New Endpoints (server.js)
GET /healthz - Lightweight health check endpoint (Kubernetes-style)
GET /metrics - Prometheus metrics endpoint for scraping
Existing Endpoints (Already Available):
GET /health/ - Basic health check with system status and dependencies
GET /health/metrics - Detailed JSON metrics
GET /health/ready - Readiness probe
GET /health/live - Liveness probe
Testing
Health Check:
Metrics:
Prometheus Configuration:
Add to your prometheus.yml:
Dependencies Added:
prom-client: For Prometheus metrics collection and formatting
Notes:
All endpoints return appropriate HTTP status codes (200 for healthy, 503 for unhealthy)
Metrics include request counts, latencies, memory usage, and CPU usage
The /healthz endpoint is a lightweight alias suitable for load balancers and Kubernetes health checks
Closes #39