From 0b93a719f00b4b4786d6de131cbe54c9da76a371 Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Tue, 29 Apr 2014 15:20:31 +0100 Subject: [PATCH] added statsd metrics timing for each request --- services/web/app/coffee/infrastructure/Metrics.coffee | 3 +++ .../web/app/coffee/infrastructure/Monitor/HTTP.coffee | 11 ++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/services/web/app/coffee/infrastructure/Metrics.coffee b/services/web/app/coffee/infrastructure/Metrics.coffee index 7a972551fd..793efa8048 100644 --- a/services/web/app/coffee/infrastructure/Metrics.coffee +++ b/services/web/app/coffee/infrastructure/Metrics.coffee @@ -11,6 +11,9 @@ module.exports = inc : (key, sampleRate = 1)-> statsd.increment buildKey(key), sampleRate + timing: (key, timeSpan, sampleRate)-> + statsd.timing(key, timeSpan, sampleRate) + Timer : class constructor :(key, sampleRate = 1)-> this.start = new Date() diff --git a/services/web/app/coffee/infrastructure/Monitor/HTTP.coffee b/services/web/app/coffee/infrastructure/Monitor/HTTP.coffee index 0ad1df4ac9..3dcc979af0 100644 --- a/services/web/app/coffee/infrastructure/Monitor/HTTP.coffee +++ b/services/web/app/coffee/infrastructure/Monitor/HTTP.coffee @@ -1,10 +1,19 @@ +settings = require("settings-sharelatex") logger = require "logger-sharelatex" +os = require("os") +metrics = require("../Metrics") module.exports.logger = (req, res, next) -> startTime = new Date() end = res.end res.end = () -> end.apply(this, arguments) + responseTime = new Date() - startTime + routePath = req.route.path.replace(/\//g, '-').slice(1) + + processName = if settings.internal.web.name? then "web-#{settings.internal.web.name}" else "web" + key = "#{os.hostname()}.#{processName}.#{routePath}".toLowerCase().trim() + metrics.timing(key, responseTime, 0.2) logger.log req: url: req.originalUrl || req.url @@ -15,7 +24,7 @@ module.exports.logger = (req, res, next) -> "content-length": req.headers["content-length"] res: "content-length": res._headers?["content-length"] - "response-time": new Date() - startTime + "response-time": responseTime "http request" next()