1.0.1 • Published 8 years ago
stats-beat v1.0.1
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
Selector | Property | Description |
---|---|---|
sysload | sysload% | 1 minute system load average as %. See os.loadavg() |
freemem | frememMB | Free system memory in MB. See os.freemem() |
cpu | cpu% | Process CPU usage as % of one logical core. Requires node v6.1. See process.cpuUsage() |
rss | rssMB | Process memory (resident set size) in MB. See process.memoryUsage() |
heap | heapMB | V8 heap used. See process.memoryUsage() |
rps | rps | Completed requests per second. |
restime | resTime_ms | Response time in ms. |
reqbytes | reqBytes | Total request size in bytes. |
resbytes | resBytes | Total response size in bytes. |
rxrate | rxKBs | KB received per second |
txrate | txKBs | KB sent per second |
numconn | numconn | Number of concurrent connections on the server. See server.getConnections() |
evloop | evloop_us | Node event loop latency in microseconds |