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 +4 -4
- data/lib/mm_metrics/backends/base.rb +8 -12
- data/lib/mm_metrics/backends/dd.rb +21 -10
- data/lib/mm_metrics.rb +14 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f58d67f19081d0a76f67a429309a1f4108a809f2a152eda96d2ac6140940a6e3
|
4
|
+
data.tar.gz: c8ad578729936597e38a27e942ada2aa23ab9e4e3edba3664183fa03cf9bad9e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a8ee22c209c5bce64c108e82e82cd504b5750f25d93d306966f9d0e18c1e52a9a1d60498fa9065ce1f0b0f327d71e8a0f7aba5a8a05e1c8db4309968f35b0bab
|
7
|
+
data.tar.gz: 8359f4b097f32df0842304cf750e62645075becaf9e5bf92aa3fe885af79bc165dc93a93e39a5d7d28e3893aaf7b5ce1fed8fd70c1abee46ed39bebb54d55d1b
|
@@ -1,21 +1,17 @@
|
|
1
1
|
class MetricsBackend
|
2
|
-
def
|
3
|
-
|
2
|
+
def increment(metric, **extra)
|
3
|
+
raise NotImplementedError
|
4
4
|
end
|
5
5
|
|
6
|
-
def
|
7
|
-
raise
|
6
|
+
def gauge(metric, value, **extra)
|
7
|
+
raise NotImplementedError
|
8
8
|
end
|
9
9
|
|
10
|
-
def
|
11
|
-
raise
|
10
|
+
def histogram(metric, value, **extra)
|
11
|
+
raise NotImplementedError
|
12
12
|
end
|
13
13
|
|
14
|
-
def
|
15
|
-
raise
|
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
|
-
@
|
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 #{
|
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
|
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
|