diff --git a/libraries/metrics/metrics.coffee b/libraries/metrics/metrics.coffee index 341b8e6ce9..59e4ee9899 100644 --- a/libraries/metrics/metrics.coffee +++ b/libraries/metrics/metrics.coffee @@ -6,10 +6,15 @@ hostname = require('os').hostname() buildKey = (key)-> "#{name}.#{hostname}.#{key}" +destructors = [] + module.exports = initialize: (_name) -> name = _name + registerDestructor: (func) -> + destructors.push func + set : (key, value, sampleRate = 1)-> statsd.set buildKey(key), value, sampleRate @@ -35,3 +40,7 @@ module.exports = http: require "./http" open_sockets: require "./open_sockets" + close: () -> + for func in destructors + func() + statsd.close() diff --git a/libraries/metrics/open_sockets.coffee b/libraries/metrics/open_sockets.coffee index d74a781496..d4a6eb6c8d 100644 --- a/libraries/metrics/open_sockets.coffee +++ b/libraries/metrics/open_sockets.coffee @@ -3,9 +3,12 @@ seconds = 1000 module.exports = OpenSocketsMonitor = monitor: (logger) -> - setInterval () -> + interval = setInterval () -> OpenSocketsMonitor.gaugeOpenSockets() , 5 * seconds + Metrics = require "./metrics" + Metrics.registerDestructor () -> + clearInterval(interval) gaugeOpenSockets: () -> Metrics = require "./metrics"