Nukem's Possible Manifestation

    prometheus-middleware
    TypeScript icon, indicating that this package has built-in type declarations

    1.1.1 • Public • Published

    GitHub release GitHub license CI pipeline Opened issues Opened PR Code coverage Node version

    Node.js simple middleware to expose prometheus metrics

    Purpose

    Mdule to create an HTTP server to expose prometheus metrics.
    By default it:

    • runs an HTTP server to expose metrics
    • instantiates and returns a prom-client
    • patch http server to get request response time
    • allows to define custom metrics through prom-client

    Compatibility

    Supported and tested : >= 14.0

    Version Supported Tested
    14.x yes yes
    16.x yes yes

    It works with different HTTP server:

    By default you can access your metrics on this endpoint: http://localhost:9350/metrics

    Installation

    $ npm install prometheus-middleware --save

    Usage

    Basic

    const APM = require('prometheus-middleware')
    const apm = new APM()
    apm.init()

    Add a custom metric

    const APM = require('prometheus-middleware')
    const apm = new APM()
    apm.init()
    // ----------------
    const counter = new apm.client.Counter({
      name: 'metric_name',
      help: 'metric_help',
    })
    // ----------------
    counter.inc(); // Increment by 1
    counter.inc(10); // Increment by 10

    The metrics system is exactly the same as in prom-client librairy.

    Configuration

    The config is an JSON object which accepts the following property:

    const APM = require('prometheus-middleware')
    const apm = new APM({
      METRICS_ROUTE: "/metrics",
      PORT: 9350,
      PROM_CLIENT_CONF: {},
      HTTP_DURATION_BUCKETS: [0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2]
      HTTP_SUMMARY_PERCENTILES: [0.5, 0.9, 0.95, 0.99]
      NORMALIZE_ENDPOINT: false,
    })
    apm.init()

    Destroy the APM

    If you use a graceful exit method or if you want to simply stop the APM, you should run:

    const APM = require('prometheus-middleware')
    const apm = new APM()
    apm.init()
    
    process.on('SIGTERM', () => {
      apm.destroy()
    })
    Property Default Description
    METRICS_ROUTE /metrics Route to expose the metrics
    PORT 9350 Port to listen metrics
    PROM_CLIENT_CONF {} Configuration of the prom-client lib
    HTTP_DURATION_BUCKETS [0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2] List of values for HTTP request duration
    HTTP_SUMMARY_PERCENTILES [0.5, 0.9, 0.95, 0.99] List of values for HTTP request percentiles
    NORMALIZE_ENDPOINT true Normalize endpoint by occulting ids, and query parameters

    To see how to use the module you can refer to the example folder.

    Debug

    The agent use debug module in order not to pollute your logs. If you want to see all agent output just use DEBUG environment variable:

    DEBUG=prometheus-middleware* node myApp.js

    Test

    $ npm test

    Coverage report can be found in coverage/.

    Install

    npm i prometheus-middleware

    DownloadsWeekly Downloads

    59

    Version

    1.1.1

    License

    MIT

    Unpacked Size

    11.7 kB

    Total Files

    9

    Last publish

    Collaborators

    • wallet77
    • vincentvallet_voodoo