mm_metrics 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 763ead5059278babad407bfb070916255e96bfe696458af697963d6ce6e7ec33
4
- data.tar.gz: b6fe951760e95110ec0c9d7cf9611726bdf6080c6a6b7f7697769266c6b14bc0
3
+ metadata.gz: f58d67f19081d0a76f67a429309a1f4108a809f2a152eda96d2ac6140940a6e3
4
+ data.tar.gz: c8ad578729936597e38a27e942ada2aa23ab9e4e3edba3664183fa03cf9bad9e
5
5
  SHA512:
6
- metadata.gz: 4dde7f80c4f4dabe9dd6bcf07b173d5369b09aba4bf557fb8dc982a3f2f2bbe07f09a55b45f284ea22a9b13cfe8826f939a929437c16de5d05c49b0e2d861e5f
7
- data.tar.gz: dc6ebc96cc71c9ebcfc3c5d925677dbfdb099802e7b695fc862289758a818d11af8c98f7d8a2f971b81376ac23c015dba6bd29af152742f8e5ccc7afa65133fc
6
+ metadata.gz: a8ee22c209c5bce64c108e82e82cd504b5750f25d93d306966f9d0e18c1e52a9a1d60498fa9065ce1f0b0f327d71e8a0f7aba5a8a05e1c8db4309968f35b0bab
7
+ data.tar.gz: 8359f4b097f32df0842304cf750e62645075becaf9e5bf92aa3fe885af79bc165dc93a93e39a5d7d28e3893aaf7b5ce1fed8fd70c1abee46ed39bebb54d55d1b
@@ -1,21 +1,17 @@
1
1
  class MetricsBackend
2
- def self.connect(**connection_kwargs)
3
- return
2
+ def increment(metric, **extra)
3
+ raise NotImplementedError
4
4
  end
5
5
 
6
- def self.increment(metric, **extra)
7
- raise NotImplemented
6
+ def gauge(metric, value, **extra)
7
+ raise NotImplementedError
8
8
  end
9
9
 
10
- def self.gauge(metric, value, **extra)
11
- raise NotImplemented
10
+ def histogram(metric, value, **extra)
11
+ raise NotImplementedError
12
12
  end
13
13
 
14
- def self.histogram(metric, value, **extra)
15
- raise NotImplemented
16
- end
17
-
18
- def self.timed(metric, duration, **extra)
19
- raise NotImplemented
14
+ def timed(metric, duration, **extra)
15
+ raise NotImplementedError
20
16
  end
21
17
  end
@@ -2,26 +2,37 @@ require 'datadog/statsd'
2
2
  require 'logging'
3
3
  require_relative 'base'
4
4
 
5
- class DataDogMetricsBackend < MetricsBackend
6
- def initialize(host = 'localhost', port = 8125, logger = Logging.logger(STDOUT))
7
- @host = host
8
- @port = port
5
+ class DataDogMetricsBackend < MetricsBackend
6
+ def initialize(host = 'localhost', port = 8125, logger = Logging.logger(STDOUT))
7
+ @statsd = get_statsd(host, port)
9
8
  @logger = logger
10
- end
9
+ end
10
+
11
+ def get_statsd(host, port)
12
+ Datadog::Statsd.new(host, port)
13
+ end
11
14
 
12
- def increment(metric, tags = [])
15
+ def increment(metric, tags: [])
13
16
  @logger.debug "increment #{metric}"
17
+
18
+ @statsd.increment(metric, tags: tags)
14
19
  end
15
20
 
16
- def gauge(metric, value, tags = [])
21
+ def gauge(metric, value, tags: [])
17
22
  @logger.debug "gauge #{metric} to #{value}"
23
+
24
+ @statsd.gauge(metric, value, tags: tags)
18
25
  end
19
26
 
20
- def histogram(metric, value, tags = [])
27
+ def histogram(metric, value, tags: [])
21
28
  @logger.debug "histogram #{metric} to #{value}"
29
+
30
+ @statsd.histogram(metric, value, tags: tags)
22
31
  end
23
32
 
24
- def timed(metric, duration, tags = [])
25
- @logger.debug "time #{metric} as #{value}"
33
+ def timed(metric, duration, tags: [])
34
+ @logger.debug "time #{metric} as #{duration}"
35
+
36
+ @statsd.timing(metric, duration, tags: tags)
26
37
  end
27
38
  end
data/lib/mm_metrics.rb CHANGED
@@ -2,10 +2,23 @@ require_relative 'mm_metrics/backends/dd'
2
2
  require_relative 'mm_metrics/loggers';
3
3
  require_relative 'mm_metrics/config';
4
4
 
5
- def init_metrics()
5
+ def get_metrics_backend()
6
6
  log_level = Settings::DEBUG ? :debug : :warn
7
7
 
8
8
  logger = StreamLogger.new(log_level).log
9
9
 
10
10
  DataDogMetricsBackend.new(logger=logger)
11
11
  end
12
+
13
+ # runs a timer around a block
14
+ def timer(metric, tags: [])
15
+ metrics = get_metrics_backend
16
+
17
+ start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
18
+
19
+ return yield
20
+ ensure
21
+ finished = Process.clock_gettime(Process::CLOCK_MONOTONIC)
22
+
23
+ metrics.timed(metric, ((finished - start) * 1000).round, tags: tags)
24
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mm_metrics
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bobby Steinbach