diff --git a/libraries/metrics/http.coffee b/libraries/metrics/http.coffee index 5b0dad072f..e3097c8c72 100644 --- a/libraries/metrics/http.coffee +++ b/libraries/metrics/http.coffee @@ -12,9 +12,12 @@ module.exports.monitor = (logger) -> end.apply(this, arguments) responseTime = process.hrtime(startTime) responseTimeMs = Math.round(responseTime[0] * 1000 + responseTime[1] / 1000) + requestSize = parseInt(req.headers["content-length"], 10) if req.route?.path? routePath = req.route.path.toString().replace(/\//g, '_').replace(/\:/g, '').slice(1) Metrics.timing("http_request", responseTimeMs, null, {method:req.method, status_code: res.statusCode, path:routePath}) + if requestSize + Metrics.summary("http_request_size_bytes", requestSize, {method:req.method, status_code: res.statusCode, path:routePath}) remoteIp = req.ip || req.socket?.socket?.remoteAddress || req.socket?.remoteAddress reqUrl = req.originalUrl || req.url referrer = req.headers['referer'] || req.headers['referrer'] @@ -23,7 +26,7 @@ module.exports.monitor = (logger) -> httpRequest: requestMethod: req.method requestUrl: reqUrl - requestSize: req.headers["content-length"] + requestSize: requestSize status: res.statusCode responseSize: res._headers?["content-length"] userAgent: req.headers["user-agent"] diff --git a/libraries/metrics/metrics.coffee b/libraries/metrics/metrics.coffee index 8f72e778dc..a939f1bfba 100644 --- a/libraries/metrics/metrics.coffee +++ b/libraries/metrics/metrics.coffee @@ -91,6 +91,14 @@ module.exports = Metrics = if process.env['DEBUG_METRICS'] console.log("doing count/inc", key, opts) + summary : (key, value, opts = {})-> + key = Metrics.buildPromKey(key) + opts.app = appname + opts.host = hostname + prom.metric('summary', key).observe(opts, value) + if process.env['DEBUG_METRICS'] + console.log("doing summary", key, value, opts) + timing: (key, timeSpan, sampleRate, opts = {})-> key = Metrics.buildPromKey("timer_" + key) opts.app = appname diff --git a/libraries/metrics/package.json b/libraries/metrics/package.json index 2d976634ee..de6c86b37e 100644 --- a/libraries/metrics/package.json +++ b/libraries/metrics/package.json @@ -1,6 +1,6 @@ { "name": "metrics-sharelatex", - "version": "2.5.1", + "version": "2.6.0", "description": "A drop-in metrics and monitoring module for node.js apps", "repository": { "type": "git", diff --git a/libraries/metrics/statsd/metrics.coffee b/libraries/metrics/statsd/metrics.coffee index 8e3be8c26c..ac072627f3 100644 --- a/libraries/metrics/statsd/metrics.coffee +++ b/libraries/metrics/statsd/metrics.coffee @@ -29,6 +29,9 @@ module.exports = Metrics = count : (key, count, sampleRate = 1)-> statsd.count buildKey(key), count, sampleRate + summary : (key, value)-> + # not supported + timing: (key, timeSpan, sampleRate)-> statsd.timing(buildKey(key), timeSpan, sampleRate)