fix(smartmetrics): Refactor metrics calculation and update Prometheus integration documentation
This commit is contained in:
@ -1 +1,30 @@
|
||||
|
||||
# SmartMetrics Implementation Hints
|
||||
|
||||
## Prometheus Integration
|
||||
|
||||
The package now supports exposing metrics in Prometheus format through two mechanisms:
|
||||
|
||||
1. **Direct Export**: `getPrometheusFormattedMetrics()` returns metrics in Prometheus text exposition format
|
||||
2. **HTTP Endpoint**: `enablePrometheusEndpoint(port)` starts an HTTP server that exposes metrics on `/metrics`
|
||||
|
||||
### Architecture Decisions
|
||||
|
||||
- We use the prom-client library's default collectors for standard Node.js metrics
|
||||
- Custom gauges are created for our calculated metrics (CPU percentage, memory percentage, memory bytes)
|
||||
- The `getMetrics()` method calculates values directly rather than parsing the Prometheus registry JSON
|
||||
- For metrics like `nodejs_active_handles_total` and `nodejs_active_requests_total`, we return 0 in `getMetrics()` since these require deprecated Node.js APIs, but the Prometheus collectors still track the real values
|
||||
|
||||
### Consolidation Approach
|
||||
|
||||
Initially, we were mixing two approaches:
|
||||
1. Extracting values from the Prometheus registry JSON for default metrics
|
||||
2. Creating custom gauges for calculated metrics
|
||||
|
||||
We consolidated by:
|
||||
- Calculating all values directly in `getMetrics()` where possible
|
||||
- Only using the Prometheus registry for the text exposition format
|
||||
- This eliminates the dependency on parsing registry JSON and makes the code cleaner
|
||||
|
||||
### Memory Calculation
|
||||
|
||||
The package tracks memory usage across the main process and all child processes using `pidtree` and `pidusage`. This provides a more comprehensive view than just the main process memory.
|
Reference in New Issue
Block a user