Event Emitter based node library that emits process metrics (uptime, memory, cpu) at given intervals
Requirements: this library is written for Node.js >= 6.0
As usual, this happens through NPM:
npm install --save metrica
Then, in your code:
const m = require('metrica')()
// metrics is an event emitter
m.on('tick', (data) => console.log(data))
// tick happens (by default) every minute and data will look like:
// {
// cpu: {
// user: 129255,
// system: 25515
// },
// memory: {
// rss: 21843968,
// heapTotal: 8208384,
// heapUsed: 5394352,
// external: 8628
// },
// uptime: 44.858
// }
When running your Node.js app in production you might be interested in gathering metrics about the running process. Perhaps, you want to log this information or send it to a centralized metrics system.
This library gives you an easy way to collect process metric continuously and offers a convenient event based interface so that you can easily attach your custom logic to handle the new metrics.
When instantiating a new process metrics you can specify some options:
interval: 60000, autoStart: true
interval
(default60000
) - Allows you to specify how often the metrics are collected. This can be a number (milliseconds) or a string expression as supported by thems
moduleautoStart
(defaulttrue
) - Will automatically start the collection of metrics at given intervals. If set tofalse
you should start the collection with the.start()
method
A process metrics instance will expose few methods:
.start()
- Will start the automatic collection of metrics (which will triggertick
events at given intervals).stop()
- Will stop the automatic collection of metrics.getMetrics()
- Will get and return the current metrics. It's not going to trigger atick
event.
A process metrics instance is an event emitter and will emit the following events:
tick
- triggered continuously at the given interval time. It will contain as a payload the current metrics object.
This example will collect and log metrics for 5 seconds and then stop the collection:
const metrica = require('metrica')
const m = metrica({ interval: '1s', autoStart: false })
m.on('tick', (metrics) => console.log('Tick:', metrics))
setTimeout(() => m.stop(), 5000)
m.start()
Everyone is very welcome to contribute to this project. You can contribute just by submitting bugs or suggesting improvements by opening an issue on GitHub.
Licensed under MIT License. © Luciano Mammino.