Module: Meter
- Defined in:
- lib/meter/mdc.rb,
lib/meter.rb,
lib/meter/version.rb,
lib/meter/configure.rb,
lib/meter/metric/log.rb,
lib/meter/metric/base.rb,
lib/meter/backends/udp.rb,
lib/meter/metric/gauge.rb,
lib/meter/backends/base.rb,
lib/meter/configuration.rb,
lib/meter/metric/timing.rb,
lib/meter/rails/railtie.rb,
lib/meter/metric/counter.rb,
lib/meter/backends/logger.rb,
lib/meter/backends/statsd.rb,
lib/meter/backends/datadog.rb,
lib/meter/metric/histogram.rb,
lib/meter/rails/middleware.rb,
lib/meter/backends/json_log.rb
Overview
Defined Under Namespace
Modules: Backends, MDC, Metric, Rails, VERSION
Classes: Configuration
Class Method Summary
collapse
-
.config ⇒ Object
Public: Lazy-loads and returns the the configuration instance.
-
.configure {|config| ... } ⇒ Object
Public: Yields the configuration instance.
-
.gauge(key, value, sample_rate: 1, tags: {}, data: {}) ⇒ Object
-
.histogram(key, value, sample_rate: 1, tags: {}, data: {}) ⇒ Object
-
.increment(key, value: 1, sample_rate: 1, tags: {}, data: {}) ⇒ Object
-
.log(key, tags: {}, data: {}) ⇒ Object
(also: track)
-
.send_metric_to_backends(metric) ⇒ Object
-
.should_sample?(sample_rate = 1) ⇒ Boolean
-
.timing(key, value, sample_rate: 1, tags: {}, data: {}) ⇒ Object
Class Method Details
.config ⇒ Object
Public: Lazy-loads and returns the the configuration instance.
7
8
9
|
# File 'lib/meter/configure.rb', line 7
def self.config
@config ||= ::Meter::Configuration.new
end
|
Public: Yields the configuration instance.
13
14
15
|
# File 'lib/meter/configure.rb', line 13
def self.configure(&block)
yield config
end
|
.gauge(key, value, sample_rate: 1, tags: {}, data: {}) ⇒ Object
36
37
38
39
40
41
|
# File 'lib/meter.rb', line 36
def gauge(key, value, sample_rate: 1, tags: {}, data: {})
metric = Metric::Gauge.new(name: key, value: value, sample_rate: sample_rate, tags: tags, data: data)
send_metric_to_backends(metric)
rescue => exception
::Meter.config.logger.error exception.inspect
end
|
.histogram(key, value, sample_rate: 1, tags: {}, data: {}) ⇒ Object
43
44
45
46
47
48
|
# File 'lib/meter.rb', line 43
def histogram(key, value, sample_rate: 1, tags: {}, data: {})
metric = Metric::Histogram.new(name: key, value: value, sample_rate: sample_rate, tags: tags, data: data)
send_metric_to_backends(metric)
rescue => exception
::Meter.config.logger.error exception.inspect
end
|
.increment(key, value: 1, sample_rate: 1, tags: {}, data: {}) ⇒ Object
21
22
23
24
25
26
|
# File 'lib/meter.rb', line 21
def increment(key, value: 1, sample_rate: 1, tags: {}, data: {})
metric = Metric::Counter.new(name: key, value: value, sample_rate: sample_rate, tags: tags, data: data)
send_metric_to_backends(metric)
rescue => exception
::Meter.config.logger.error exception.inspect
end
|
.log(key, tags: {}, data: {}) ⇒ Object
Also known as:
track
28
29
30
31
32
33
|
# File 'lib/meter.rb', line 28
def log(key, tags: {}, data: {})
metric = Metric::Log.new(name: key, value: 1, sample_rate: 1, tags: tags, data: data)
send_metric_to_backends(metric)
rescue => exception
::Meter.config.logger.error exception.inspect
end
|
.send_metric_to_backends(metric) ⇒ Object
57
58
59
60
61
|
# File 'lib/meter.rb', line 57
def send_metric_to_backends(metric)
return unless should_sample? metric.sample_rate
config.backends.each {|backend| backend.emit_metric(metric)}
metric
end
|
.should_sample?(sample_rate = 1) ⇒ Boolean
63
64
65
|
# File 'lib/meter.rb', line 63
def should_sample?(sample_rate = 1)
rand < sample_rate
end
|
.timing(key, value, sample_rate: 1, tags: {}, data: {}) ⇒ Object
50
51
52
53
54
55
|
# File 'lib/meter.rb', line 50
def timing(key, value, sample_rate: 1, tags: {}, data: {})
metric = Metric::Timing.new(name: key, value: value, sample_rate: sample_rate, tags: tags, data: data)
send_metric_to_backends(metric)
rescue => exception
::Meter.config.logger.error exception.inspect
end
|