UNPKG

menoetius

Version:

node middleware to automatically instrument node applications for consumption by prometheus

43 lines (35 loc) 985 B
const metrics = require('./metrics') function plugin (server, options) { return { name: 'menoetius', version: '1.0.0', register: async (server, o) => { server.route({ method: 'GET', path: options.url, handler: async (request, h) => { return h.response(await metrics.summary()).type('text/plain') } }) server.ext('onRequest', async (request, h) => { request.menoetius = { start: process.hrtime() } return h.continue; }) server.events.on('response', (response) => { metrics.observe(response.method, response.path, response.response.statusCode, response.menoetius.start) }) } } } function instrument (server, options) { return server.register([plugin(server, options)]) } function instrumentable (server) { return server && !server.use && server.register } module.exports = { instrumentable: instrumentable, instrument: instrument }