generic-pool-prometheus-exporter
Prometheus exporter for the generic-pool
npm
package that's used by knex.
API
poolExporter
Create pool exporter
Types:
{type=min}
min size of the pool{type=max}
size of the pool{type=acquired}
number of resources that are currently acquired{type=spare_capacity}
number of resources the pool could create before
hitting any limits{type=available}
number of unused resources in the pool{type=borrowed}
number of resources that are currently acquired by
userland code{type=pending}
number of callers waiting to acquire a resource
Metrics:
# HELP pool_size_total Size of the pool
# TYPE pool_size_total gauge
pool_size_total{type="min"} 2
pool_size_total{type="max"} 3
pool_size_total{type="acquired"} 1
pool_size_total{type="spare_capacity"} 2
pool_size_total{type="available"} 0
pool_size_total{type="borrowed"} 1
pool_size_total{type="pending"} 0
Parameters
pool
Pool generic-pool instanceopts
Object? options
opts.register
String? register to useopts.name
Object metrics name (optional, default "pool_size_total"
)opts.labels
Object extra labels (optional, default {}
)opts.interval
Number pool info update interval,
set to null
to disable and call exporter.observe()
manually (optional, default 10000
)
Examples
With generic-pool
(node-pool)
const promClient = require('prom-client');
const pool = require('generic-pool');
const poolExporter = require('generic-pool-prometheus-exporter');
const myPool = genericPool.createPool({ ... }, { min 1, max: 5 });
const exporter = poolExporter(myPool);
console.log(promClient.register.metrics())
<caption>With manual observe
const promClient = require('prom-client');
const pool = require('generic-pool');
const poolExporter = require('generic-pool-prometheus-exporter');
const myPool = genericPool.createPool({ ... }, { min 1, max: 5 });
const exporter = poolExporter(myPool, { interval: null });
console.log(promClient.register.metrics())
console.log(promClient.register.metrics())
With knex
const promClient = require('prom-client');
const Knex = require('knex');
const poolExporter = require('generic-pool-prometheus-exporter');
const knex = Knex({
client: 'mysql'
...
});
const exporter = poolExporter(knex);
console.log(promClient.register.metrics())
Returns Function exporter { off, observe }