36 lines
639 B
JavaScript
36 lines
639 B
JavaScript
|
|
/**
|
|
* Module dependencies.
|
|
*/
|
|
|
|
const Stats = require('statsy');
|
|
|
|
/**
|
|
* Initialize stats middleware with `opts`
|
|
* which are passed to statsy.
|
|
*
|
|
* @param {Object} [opts]
|
|
* @return {Function}
|
|
* @api public
|
|
*/
|
|
|
|
export default function (opts) {
|
|
const s = new Stats(opts || {});
|
|
|
|
return async (ctx, next) => {
|
|
// counters
|
|
s.incr('request.count');
|
|
s.incr(`request.${ctx.method}.count`);
|
|
|
|
// size
|
|
s.histogram('request.size', ctx.request.length || 0);
|
|
|
|
// remote addr
|
|
// s.set('request.addresses', this.ip);
|
|
|
|
// duration
|
|
ctx.res.on('finish', s.timer('request.duration'));
|
|
|
|
await next();
|
|
};
|
|
}
|