/** * 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(); }; }