Newts Parading Majestically

    generic-pool-prometheus-exporter

    3.0.0 • Public • Published

    generic-pool-prometheus-exporter

    Build Status

    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 instance
    • opts Object? options
      • opts.register String? register to use
      • opts.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())
    // exporter.registry.off()
    <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 });
     
    // exporter.observe();
    console.log(promClient.register.metrics())
    // exporter.observe();
    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())
    // =>
    // # 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

    Returns Function exporter { off, observe }

    Install

    npm i generic-pool-prometheus-exporter

    DownloadsWeekly Downloads

    9

    Version

    3.0.0

    License

    MIT

    Last publish

    Collaborators

    • hekike