|
@@ -0,0 +1,29 @@
|
|
|
|
|
+os = require("os")
|
|
|
|
|
+
|
|
|
|
|
+module.exports.monitor = (logger) ->
|
|
|
|
|
+ return (req, res, next) ->
|
|
|
|
|
+ Metrics = require("./metrics")
|
|
|
|
|
+ startTime = new Date()
|
|
|
|
|
+ end = res.end
|
|
|
|
|
+ res.end = () ->
|
|
|
|
|
+ end.apply(this, arguments)
|
|
|
|
|
+ responseTime = new Date() - startTime
|
|
|
|
|
+ routePath = req.route.path.toString().replace(/\//g, '_').replace(/\:/g, '').slice(1)
|
|
|
|
|
+ key = "#{routePath}.#{req.method}.#{res.statusCode}"
|
|
|
|
|
+
|
|
|
|
|
+ Metrics.timing(key, responseTime)
|
|
|
|
|
+ logger.log
|
|
|
|
|
+ req:
|
|
|
|
|
+ url: req.originalUrl || req.url
|
|
|
|
|
+ method: req.method
|
|
|
|
|
+ referrer: req.headers['referer'] || req.headers['referrer']
|
|
|
|
|
+ "remote-addr": req.ip || req.socket?.socket?.remoteAddress || req.socket?.remoteAddress
|
|
|
|
|
+ "user-agent": req.headers["user-agent"]
|
|
|
|
|
+ "content-length": req.headers["content-length"]
|
|
|
|
|
+ res:
|
|
|
|
|
+ "content-length": res._headers?["content-length"]
|
|
|
|
|
+ statusCode: res.statusCode
|
|
|
|
|
+ "response-time": responseTime
|
|
|
|
|
+ "http request"
|
|
|
|
|
+ next()
|
|
|
|
|
+
|