Henry Oswald 7 лет назад
Родитель
Сommit
4806e6fd87
2 измененных файлов с 12 добавлено и 9 удалено
  1. 1 1
      libraries/metrics/http.coffee
  2. 11 8
      libraries/metrics/metrics.coffee

+ 1 - 1
libraries/metrics/http.coffee

@@ -12,7 +12,7 @@ module.exports.monitor = (logger) ->
 				routePath = req.route.path.toString().replace(/\//g, '_').replace(/\:/g, '').slice(1)
 				routePath = req.route.path.toString().replace(/\//g, '_').replace(/\:/g, '').slice(1)
 				key = "http-requests.#{routePath}.#{req.method}.#{res.statusCode}"
 				key = "http-requests.#{routePath}.#{req.method}.#{res.statusCode}"
 
 
-				Metrics.timing(key, responseTime)
+				Metrics.timing("http_request", responseTime, null, {method:req.method, status_code:res.status_code, path:routePath})
 				logger.log
 				logger.log
 					req:
 					req:
 						url: req.originalUrl || req.url
 						url: req.originalUrl || req.url

+ 11 - 8
libraries/metrics/metrics.coffee

@@ -78,17 +78,20 @@ module.exports = Metrics =
 			})
 			})
 		promMetrics[key].inc({name: name, host: hostname}, count)
 		promMetrics[key].inc({name: name, host: hostname}, count)
 
 
-	timing: (key, timeSpan, sampleRate)->
+	timing: (key, timeSpan, sampleRate, opts = {})->
 		statsd.timing(buildKey(key), timeSpan, sampleRate)
 		statsd.timing(buildKey(key), timeSpan, sampleRate)
-		key = Metrics.buildPromKey("timer_#{key}")
+		key = Metrics.sanitizeKey("timer_" + key)
 		if !promMetrics[key]?
 		if !promMetrics[key]?
 			promMetrics[key] = new prom.Summary({
 			promMetrics[key] = new prom.Summary({
 				name: key,
 				name: key,
 				help: key,
 				help: key,
 				maxAgeSeconds: 600,
 				maxAgeSeconds: 600,
-				ageBuckets: 10
+				ageBuckets: 10,
+				labelNames: ['app', 'path', 'status_code', 'method']
 			})
 			})
-		promMetrics[key].observe(timeSpan)
+		opts.app = name
+		console.log(key, opts, "timing key")
+		promMetrics[key].observe(opts, timeSpan)
 
 
 	Timer : class
 	Timer : class
 		constructor :(key, sampleRate = 1)->
 		constructor :(key, sampleRate = 1)->
@@ -109,9 +112,9 @@ module.exports = Metrics =
 			promMetrics[key] = new prom.Gauge({
 			promMetrics[key] = new prom.Gauge({
 				name: key,
 				name: key,
 				help: key, 
 				help: key, 
-				labelNames: ['name','host']
+				labelNames: ['app','host']
 			})
 			})
-		promMetrics[key].set({name: name, host: hostname}, this.sanitizeValue(value))
+		promMetrics[key].set({app: name, host: hostname}, this.sanitizeValue(value))
 
 
 	globalGauge: (key, value, sampleRate = 1)->
 	globalGauge: (key, value, sampleRate = 1)->
 		statsd.gauge buildGlobalKey(key), value, sampleRate
 		statsd.gauge buildGlobalKey(key), value, sampleRate
@@ -120,9 +123,9 @@ module.exports = Metrics =
 			promMetrics[key] = new prom.Gauge({
 			promMetrics[key] = new prom.Gauge({
 				name: key,
 				name: key,
 				help: key, 
 				help: key, 
-				labelNames: ['name','host']
+				labelNames: ['app','host']
 			})
 			})
-		promMetrics[key].set({name: name},this.sanitizeValue(value))
+		promMetrics[key].set({app: name},this.sanitizeValue(value))
 
 
 	mongodb: require "./mongodb"
 	mongodb: require "./mongodb"
 	http: require "./http"
 	http: require "./http"