prometheus-plugin-tcp-stats
v2.1.0
Published
Node.js prometheus client plugin for exporting different network servers statistics.
Downloads
3
Maintainers
Readme
prometheus-plugin-tcp-stats
Node.js prometheus client plugin for exporting tcp-based servers statistics.
Installation
npm i -S prometheus-plugin-tcp-stats
Requirements
>=prom-client-4.0.0
npm module (installed as peer dependency). If your project depends on previous version of client this plugin might not work.>=node-4.0.0
because this module uses ES6 syntax
Supported servers
All servers built on top of nodejs tcp core library. Some examples:
- tcp;
- http;
- express;
- koa;
- ws;
- uws (monitoring active connections can be supported with this patch. Feel free to vote up to make it merged into upstream).
And many others.
Metric list
- Request duration
- type: 'Histogram'
- name: 'nodejs_net_requests_duration_seconds'
- labels: ['family', 'address', 'port', 'type', 'pathname', 'code']
- Active connections
- type: 'Gauge'
- name: 'nodejs_net_active_connections'
- labels: ['family', 'address', 'port', 'type']
- Client errors
- type: 'Counter'
- name: nodejs_net_client_errors_total
- labels: ['family', 'address', 'port', 'type', 'code']
- Server errors
- type: 'Counter',
- name: nodejs_net_server_errors_total,
- labels: ['family', 'address', 'port', 'type', 'code']
- Bytes transferred
- type: 'Counter'
- name: nodejs_net_bytes_total
- labels: ['family', 'address', 'port', 'type', 'direction']
Usage
Simple
const client = require('prom-client');
const tcpStatsPlugin = require('prometheus-plugin-tcp-stats');
// start metrics collection
tcpStatsPlugin.init().start();
// log metrics to console
console.log(client.register.metrics());
// stop metrics collection
tcpStatsPlugin.stop();
// stop and clear metrics register
tcpStatsPlugin.reset();
Override metric defaults
const client = require('prom-client');
const tcpStatsPlugin = require('prometheus-plugin-tcp-stats');
const override = {
'nodejs_net_client_errors_total': { // provide default metric name to override it's params
type: 'Counter', // could be changed to Gaguge, but it's not recommended
name: 'my_custom_client_errors_total', // name could be changed
description: 'My custom description', // description could be changed
labelValues: { // additional labels
customLabel: 'hello', // custom labels could be added
customFnLabel: () => { return new Date() } // if it's a function, it will be called to get label value in runtime
}
}
};
// start metrics collection
tcpStatsPlugin.init(override).start(); // pass override object to init function
// log metrics to console
console.log(client.register.metrics());
// stop metrics collection
tcpStatsPlugin.stop();
// stop and clear metrics register
tcpStatsPlugin.reset();