Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

prometheus-middleware

Package Overview
Dependencies
Maintainers
0
Versions
20
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

prometheus-middleware

Middleware to add an HTTP server to expose prometheus metrics.

  • 1.4.0
  • latest
  • Source
  • npm
  • Socket score

Version published
Maintainers
0
Created
Source

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

Node.js simple middleware to expose Prometheus metrics

Purpose

Module 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
  • patches http server to get request response time
  • allows to define custom metrics through prom-client

Compatibility

Supported and tested : >= 14.0

VersionSupportedTested
16.xyesyes
18.xyesyes
20.xyesyes

It works with different HTTP servers:

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

In order to handle remote attack and to avoid high cardinality, the default behavior of this lib is to override the path label in case of HTTP code 404.

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()
})
PropertyDefaultDescription
METRICS_ROUTE/metricsRoute to expose the metrics
PORT9350Port 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_ENDPOINTtrueNormalize 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/.

Keywords

FAQs

Package last updated on 15 Oct 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc