From 4b075db0385087ca77a6305b3b9f0c5859061144 Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Tue, 16 Oct 2018 16:47:12 +0100 Subject: [PATCH 1/4] non tested promethius counters added --- libraries/metrics/metrics.coffee | 15 +++++++++++++++ libraries/metrics/package.json | 3 ++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/libraries/metrics/metrics.coffee b/libraries/metrics/metrics.coffee index e9a25966b5..d23f3ec06d 100644 --- a/libraries/metrics/metrics.coffee +++ b/libraries/metrics/metrics.coffee @@ -1,6 +1,9 @@ StatsD = require('lynx') statsd = new StatsD(process.env["STATSD_HOST"] or "localhost", 8125, {on_error:->}) +prom = require('prom-client') +collectDefaultMetrics = client.collectDefaultMetrics + name = "unknown" hostname = require('os').hostname() @@ -14,6 +17,8 @@ require "./uv_threadpool_size" module.exports = Metrics = initialize: (_name) -> name = _name + collectDefaultMetrics({ timeout: 5000, prefix: name }) + registerDestructor: (func) -> destructors.push func @@ -23,9 +28,19 @@ module.exports = Metrics = inc : (key, sampleRate = 1)-> statsd.increment buildKey(key), sampleRate + counter = new prom.Counter({ + name: key, + help: key #https://prometheus.io/docs/instrumenting/writing_exporters/#help-strings this is probably wrong + }); + counter.inc() count : (key, count, sampleRate = 1)-> statsd.count buildKey(key), count, sampleRate + counter = new prom.Counter({ + name: key, + help: key #https://prometheus.io/docs/instrumenting/writing_exporters/#help-strings this is probably wrong + }); + counter.inc(count) timing: (key, timeSpan, sampleRate)-> statsd.timing(buildKey(key), timeSpan, sampleRate) diff --git a/libraries/metrics/package.json b/libraries/metrics/package.json index e19c11ddf2..d3421a3619 100644 --- a/libraries/metrics/package.json +++ b/libraries/metrics/package.json @@ -7,8 +7,9 @@ "url": "https://github.com/sharelatex/metrics-sharelatex.git" }, "dependencies": { - "lynx": "~0.1.1", "coffee-script": "1.6.0", + "lynx": "~0.1.1", + "prom-client": "^11.1.3", "underscore": "~1.6.0" }, "devDependencies": { From 7e359c9df2955a4499bcfcc3629f6de6e79a857a Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Tue, 16 Oct 2018 17:19:21 +0100 Subject: [PATCH 2/4] add trace and debug agent to metrics --- libraries/metrics/metrics.coffee | 21 ++++++++++++++++++++- libraries/metrics/package.json | 4 +++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/libraries/metrics/metrics.coffee b/libraries/metrics/metrics.coffee index d23f3ec06d..1da51b63b9 100644 --- a/libraries/metrics/metrics.coffee +++ b/libraries/metrics/metrics.coffee @@ -14,11 +14,30 @@ destructors = [] require "./uv_threadpool_size" + +traceAgent = require('@google-cloud/trace-agent') +debugAgent = require('@google-cloud/debug-agent') + +.start({ + serviceContext: { + allowExpressions: true, + service: 'filestore-readonly', + version: '0.0.1' + } +}); + module.exports = Metrics = initialize: (_name) -> name = _name collectDefaultMetrics({ timeout: 5000, prefix: name }) - + traceAgent.start() + debugAgent.start({ + serviceContext: { + allowExpressions: true, + service: name, + version: '0.0.1' + } + }) registerDestructor: (func) -> destructors.push func diff --git a/libraries/metrics/package.json b/libraries/metrics/package.json index d3421a3619..648d4d627b 100644 --- a/libraries/metrics/package.json +++ b/libraries/metrics/package.json @@ -22,6 +22,8 @@ "grunt-execute": "^0.2.2", "grunt-mocha-test": "^0.11.0", "sandboxed-module": "", - "sinon": "" + "sinon": "", + "@google-cloud/debug-agent": "^3.0.0", + "@google-cloud/trace-agent": "^3.2.0" } } From 7f3cd3c77cef3bd48903dbd43baaf9bb2b9acc5e Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Wed, 21 Nov 2018 10:30:18 +0000 Subject: [PATCH 3/4] just do debugging and tracing --- libraries/metrics/metrics.coffee | 25 +++---------------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/libraries/metrics/metrics.coffee b/libraries/metrics/metrics.coffee index 1da51b63b9..ea5c5f8e1d 100644 --- a/libraries/metrics/metrics.coffee +++ b/libraries/metrics/metrics.coffee @@ -1,8 +1,10 @@ StatsD = require('lynx') statsd = new StatsD(process.env["STATSD_HOST"] or "localhost", 8125, {on_error:->}) +traceAgent = require('@google-cloud/trace-agent') +debugAgent = require('@google-cloud/debug-agent') + prom = require('prom-client') -collectDefaultMetrics = client.collectDefaultMetrics name = "unknown" hostname = require('os').hostname() @@ -15,21 +17,10 @@ destructors = [] require "./uv_threadpool_size" -traceAgent = require('@google-cloud/trace-agent') -debugAgent = require('@google-cloud/debug-agent') - -.start({ - serviceContext: { - allowExpressions: true, - service: 'filestore-readonly', - version: '0.0.1' - } -}); module.exports = Metrics = initialize: (_name) -> name = _name - collectDefaultMetrics({ timeout: 5000, prefix: name }) traceAgent.start() debugAgent.start({ serviceContext: { @@ -47,19 +38,9 @@ module.exports = Metrics = inc : (key, sampleRate = 1)-> statsd.increment buildKey(key), sampleRate - counter = new prom.Counter({ - name: key, - help: key #https://prometheus.io/docs/instrumenting/writing_exporters/#help-strings this is probably wrong - }); - counter.inc() count : (key, count, sampleRate = 1)-> statsd.count buildKey(key), count, sampleRate - counter = new prom.Counter({ - name: key, - help: key #https://prometheus.io/docs/instrumenting/writing_exporters/#help-strings this is probably wrong - }); - counter.inc(count) timing: (key, timeSpan, sampleRate)-> statsd.timing(buildKey(key), timeSpan, sampleRate) From 725abdce3b629b97b9b0eaca6bc4c588021be88a Mon Sep 17 00:00:00 2001 From: Christopher Hoskin Date: Wed, 21 Nov 2018 12:42:40 +0000 Subject: [PATCH 4/4] Remove spurious blank lines --- libraries/metrics/metrics.coffee | 2 -- 1 file changed, 2 deletions(-) diff --git a/libraries/metrics/metrics.coffee b/libraries/metrics/metrics.coffee index 0e0709d74b..7d07d6aed3 100644 --- a/libraries/metrics/metrics.coffee +++ b/libraries/metrics/metrics.coffee @@ -21,8 +21,6 @@ destructors = [] require "./uv_threadpool_size" - - module.exports = Metrics = initialize: (_name) -> name = _name