Просмотр исходного кода

Decaf cleanup: move functions to top level

Eric Mc Sween 6 лет назад
Родитель
Сommit
6f69fb4869
1 измененных файлов с 166 добавлено и 155 удалено
  1. 166 155
      libraries/metrics/index.js

+ 166 - 155
libraries/metrics/index.js

@@ -1,4 +1,3 @@
-let Metrics
 console.log('using prometheus')
 
 const ExpressCompression = require('compression')
@@ -13,173 +12,185 @@ const destructors = []
 
 require('./uv_threadpool_size')
 
-module.exports = Metrics = {
-  register: prom.registry,
+function initialize(_name, opts = {}) {
+  appname = _name
+  collectDefaultMetrics({ timeout: 5000, prefix: buildPromKey() })
+  if (opts.ttlInMinutes) {
+    prom.ttlInMinutes = opts.ttlInMinutes
+  }
 
-  initialize(_name, opts = {}) {
-    appname = _name
-    collectDefaultMetrics({ timeout: 5000, prefix: Metrics.buildPromKey() })
-    if (opts.ttlInMinutes) {
-      prom.ttlInMinutes = opts.ttlInMinutes
-    }
+  console.log(`ENABLE_TRACE_AGENT set to ${process.env.ENABLE_TRACE_AGENT}`)
+  if (process.env.ENABLE_TRACE_AGENT === 'true') {
+    console.log('starting google trace agent')
+    const traceAgent = require('@google-cloud/trace-agent')
 
-    console.log(`ENABLE_TRACE_AGENT set to ${process.env.ENABLE_TRACE_AGENT}`)
-    if (process.env.ENABLE_TRACE_AGENT === 'true') {
-      console.log('starting google trace agent')
-      const traceAgent = require('@google-cloud/trace-agent')
+    const traceOpts = { ignoreUrls: [/^\/status/, /^\/health_check/] }
+    traceAgent.start(traceOpts)
+  }
 
-      const traceOpts = { ignoreUrls: [/^\/status/, /^\/health_check/] }
-      traceAgent.start(traceOpts)
-    }
+  console.log(`ENABLE_DEBUG_AGENT set to ${process.env.ENABLE_DEBUG_AGENT}`)
+  if (process.env.ENABLE_DEBUG_AGENT === 'true') {
+    console.log('starting google debug agent')
+    const debugAgent = require('@google-cloud/debug-agent')
+    debugAgent.start({
+      allowExpressions: true,
+      serviceContext: {
+        service: appname,
+        version: process.env.BUILD_VERSION
+      }
+    })
+  }
 
-    console.log(`ENABLE_DEBUG_AGENT set to ${process.env.ENABLE_DEBUG_AGENT}`)
-    if (process.env.ENABLE_DEBUG_AGENT === 'true') {
-      console.log('starting google debug agent')
-      const debugAgent = require('@google-cloud/debug-agent')
-      debugAgent.start({
-        allowExpressions: true,
-        serviceContext: {
-          service: appname,
-          version: process.env.BUILD_VERSION
-        }
-      })
-    }
+  console.log(`ENABLE_PROFILE_AGENT set to ${process.env.ENABLE_PROFILE_AGENT}`)
+  if (process.env.ENABLE_PROFILE_AGENT === 'true') {
+    console.log('starting google profile agent')
+    const profiler = require('@google-cloud/profiler')
+    profiler.start({
+      serviceContext: {
+        service: appname,
+        version: process.env.BUILD_VERSION
+      }
+    })
+  }
 
-    console.log(
-      `ENABLE_PROFILE_AGENT set to ${process.env.ENABLE_PROFILE_AGENT}`
-    )
-    if (process.env.ENABLE_PROFILE_AGENT === 'true') {
-      console.log('starting google profile agent')
-      const profiler = require('@google-cloud/profiler')
-      profiler.start({
-        serviceContext: {
-          service: appname,
-          version: process.env.BUILD_VERSION
-        }
-      })
-    }
+  inc('process_startup')
+}
 
-    Metrics.inc('process_startup')
-  },
-
-  registerDestructor(func) {
-    destructors.push(func)
-  },
-
-  injectMetricsRoute(app) {
-    app.get(
-      '/metrics',
-      ExpressCompression({
-        level: parseInt(process.env.METRICS_COMPRESSION_LEVEL || '1', 10)
-      }),
-      function(req, res) {
-        res.set('Content-Type', prom.registry.contentType)
-        res.end(prom.registry.metrics())
-      }
-    )
-  },
-
-  buildPromKey(key = '') {
-    return key.replace(/[^a-zA-Z0-9]/g, '_')
-  },
-
-  sanitizeValue(value) {
-    return parseFloat(value)
-  },
-
-  set(key, value, sampleRate = 1) {
-    console.log('counts are not currently supported')
-  },
-
-  inc(key, sampleRate = 1, opts = {}) {
-    key = Metrics.buildPromKey(key)
-    opts.app = appname
-    opts.host = hostname
-    prom.metric('counter', key).inc(opts)
-    if (process.env.DEBUG_METRICS) {
-      console.log('doing inc', key, opts)
-    }
-  },
-
-  count(key, count, sampleRate = 1, opts = {}) {
-    key = Metrics.buildPromKey(key)
-    opts.app = appname
-    opts.host = hostname
-    prom.metric('counter', key).inc(opts, count)
-    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
-    opts.host = hostname
-    prom.metric('summary', key).observe(opts, timeSpan)
-    if (process.env.DEBUG_METRICS) {
-      console.log('doing timing', key, opts)
-    }
-  },
-
-  Timer: class {
-    constructor(key, sampleRate = 1, opts = {}) {
-      this.start = new Date()
-      key = Metrics.buildPromKey(key)
-      this.key = key
-      this.sampleRate = sampleRate
-      this.opts = opts
-    }
+function registerDestructor(func) {
+  destructors.push(func)
+}
 
-    done() {
-      const timeSpan = new Date() - this.start
-      Metrics.timing(this.key, timeSpan, this.sampleRate, this.opts)
-      return timeSpan
+function injectMetricsRoute(app) {
+  app.get(
+    '/metrics',
+    ExpressCompression({
+      level: parseInt(process.env.METRICS_COMPRESSION_LEVEL || '1', 10)
+    }),
+    function(req, res) {
+      res.set('Content-Type', prom.registry.contentType)
+      res.end(prom.registry.metrics())
     }
-  },
-
-  gauge(key, value, sampleRate = 1, opts = {}) {
-    key = Metrics.buildPromKey(key)
-    prom.metric('gauge', key).set(
-      {
-        app: appname,
-        host: hostname,
-        status: opts.status
-      },
-      this.sanitizeValue(value)
-    )
-    if (process.env.DEBUG_METRICS) {
-      console.log('doing gauge', key, opts)
-    }
-  },
+  )
+}
+
+function buildPromKey(key = '') {
+  return key.replace(/[^a-zA-Z0-9]/g, '_')
+}
+
+function sanitizeValue(value) {
+  return parseFloat(value)
+}
+
+function set(key, value, sampleRate = 1) {
+  console.log('counts are not currently supported')
+}
+
+function inc(key, sampleRate = 1, opts = {}) {
+  key = buildPromKey(key)
+  opts.app = appname
+  opts.host = hostname
+  prom.metric('counter', key).inc(opts)
+  if (process.env.DEBUG_METRICS) {
+    console.log('doing inc', key, opts)
+  }
+}
+
+function count(key, count, sampleRate = 1, opts = {}) {
+  key = buildPromKey(key)
+  opts.app = appname
+  opts.host = hostname
+  prom.metric('counter', key).inc(opts, count)
+  if (process.env.DEBUG_METRICS) {
+    console.log('doing count/inc', key, opts)
+  }
+}
 
-  globalGauge(key, value, sampleRate = 1, opts = {}) {
-    key = Metrics.buildPromKey(key)
-    prom
-      .metric('gauge', key)
-      .set({ app: appname, status: opts.status }, this.sanitizeValue(value))
-  },
+function summary(key, value, opts = {}) {
+  key = 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)
+  }
+}
+
+function timing(key, timeSpan, sampleRate, opts = {}) {
+  key = buildPromKey('timer_' + key)
+  opts.app = appname
+  opts.host = hostname
+  prom.metric('summary', key).observe(opts, timeSpan)
+  if (process.env.DEBUG_METRICS) {
+    console.log('doing timing', key, opts)
+  }
+}
+
+class Timer {
+  constructor(key, sampleRate = 1, opts = {}) {
+    this.start = new Date()
+    key = buildPromKey(key)
+    this.key = key
+    this.sampleRate = sampleRate
+    this.opts = opts
+  }
+
+  done() {
+    const timeSpan = new Date() - this.start
+    timing(this.key, timeSpan, this.sampleRate, this.opts)
+    return timeSpan
+  }
+}
+
+function gauge(key, value, sampleRate = 1, opts = {}) {
+  key = buildPromKey(key)
+  prom.metric('gauge', key).set(
+    {
+      app: appname,
+      host: hostname,
+      status: opts.status
+    },
+    this.sanitizeValue(value)
+  )
+  if (process.env.DEBUG_METRICS) {
+    console.log('doing gauge', key, opts)
+  }
+}
+
+function globalGauge(key, value, sampleRate = 1, opts = {}) {
+  key = buildPromKey(key)
+  prom
+    .metric('gauge', key)
+    .set({ app: appname, status: opts.status }, this.sanitizeValue(value))
+}
+
+function close() {
+  for (const func of destructors) {
+    func()
+  }
+}
+
+module.exports = {
+  initialize,
+  registerDestructor,
+  injectMetricsRoute,
+  buildPromKey,
+  sanitizeValue,
+  set,
+  inc,
+  count,
+  summary,
+  timing,
+  Timer,
+  gauge,
+  globalGauge,
+  close,
+
+  register: prom.registry,
 
   mongodb: require('./mongodb'),
   http: require('./http'),
   open_sockets: require('./open_sockets'),
   event_loop: require('./event_loop'),
   memory: require('./memory'),
-
-  timeAsyncMethod: require('./timeAsyncMethod'),
-
-  close() {
-    for (const func of destructors) {
-      func()
-    }
-  }
+  timeAsyncMethod: require('./timeAsyncMethod')
 }