daniyel / express-prom-bundle

express middleware with standard prometheus metrics in one bundle

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

build status Coverage Status license NPM version

express prometheus bundle

express middleware with popular prometheus metrics in one bundle.

Internally it uses prom-client. See: https://github.com/siimon/prom-client

Included metrics:

  • up: normally is just 1
  • nodejs_memory_heap_total_bytes and nodejs_memory_heap_used_bytes
  • http_request_seconds: http latency histogram labeled with status_code

Install

npm install express-prom-bundle

Usage

const promBundle = require("express-prom-bundle"),
const metricsMiddleware = promBundle({/* options */ });

app.use(metricsMiddleware);
app.use(/* your middleware */);
app.listen(3000);

ALERT!

The order in wich the routes are registered is important, since only the routes registered after the express-prom-bundle will be measured

You can use this to your advantage to bypass some of the routes. See the example below.

Options

  • prefix: prefix added to every metric name
  • whitelist, blacklist: array of strings or regexp specifying which metrics to include/exclude
  • buckets: buckets used for http_request_seconds histogram
  • excludeRoutes: array of strings or regexp specifying which routes should be skipped for http_request_seconds metric. It uses req.path as subject when checking
  • autoregister: boolean. If /metrics endpoint should be registered. It is true by default

Example

setup std. metrics but exclude up-metric:

"use strict";

const express = require("express"),
    app = express(),
    promBundle = require("express-prom-bundle");


// calls to this route will not appear in metrics
// because it's applied before promBundle
app.get("/status", (req, res) => res.send("i am healthy"));

app.use(promBundle({
    prefix: "demo_app:something",
    excludeRoutes: ["/foo"]
}));

// this call will NOT appear in metrics, because it matches excludeRoutes
app.get("/foo", (req, res) => res.send("bar"));

// calls to this route will appear in metrics
app.get("/hello", (req, res) => res.send("ok"));

app.listen(3000);

See an advanced example on github

License

MIT

About

express middleware with standard prometheus metrics in one bundle

License:MIT License


Languages

Language:JavaScript 97.0%Language:Makefile 3.0%