1.0.1 • Published 8 years ago

stats-beat v1.0.1

Weekly downloads
2
License
MIT
Repository
github
Last release
8 years ago

stats-beat

Node.js performance statistics emitter

Install

npm install --save stats-beat

Note: requires node v4 or higher.

Usage

const statsBeat = require('stats-beat')();

var app = express();
//...
var server = app.listen(PORT);
statsBeat.start({ server });
export STATS_BEAT=all
npm start

Then all performance metrics will be prtinted on the console each 5 seconds

{"sysload%":18,"freememMB":3661,"cpu%":112,"rssMB":152,"heapMB":64,"rps":3149,"resTime_ms":20.887753158529616,"reqBytes":116,"resBytes":114849,"rxKBs":365,"txKBs":361653,"numconn":80,"evloop_us":6646}

To report only CPU and memory ech 2s, use this command:

export STATS_BEAT='period=2&cpu&rss'
npm start

You can register a listener to process the performance metrics in a custom way, e.g. write them in a csv file or send them to a central service.

const statsBeat = require('stats-beat')();

var app = express();
//...
var server = app.listen(PORT);
statsBeat.start({ server });
statsBeat.on('stats', (stats) => {
  // process stats
});

Reference

Stats

SelectorPropertyDescription
sysloadsysload%1 minute system load average as %. See os.loadavg()
freememfrememMBFree system memory in MB. See os.freemem()
cpucpu%Process CPU usage as % of one logical core. Requires node v6.1. See process.cpuUsage()
rssrssMBProcess memory (resident set size) in MB. See process.memoryUsage()
heapheapMBV8 heap used. See process.memoryUsage()
rpsrpsCompleted requests per second.
restimeresTime_msResponse time in ms.
reqbytesreqBytesTotal request size in bytes.
resbytesresBytesTotal response size in bytes.
rxraterxKBsKB received per second
txratetxKBsKB sent per second
numconnnumconnNumber of concurrent connections on the server. See server.getConnections()
evloopevloop_usNode event loop latency in microseconds