Module: Meter

Defined in:
lib/meter/mdc.rb,
lib/meter.rb,
lib/meter/version.rb,
lib/meter/configure.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/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

Class Method Details

.configObject

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

.configure {|config| ... } ⇒ Object

Public: Yields the configuration instance.

Yields:



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



31
32
33
34
35
36
# File 'lib/meter.rb', line 31

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



38
39
40
41
42
43
# File 'lib/meter.rb', line 38

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 Also known as: track



19
20
21
22
23
24
# File 'lib/meter.rb', line 19

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, log_data = {}) ⇒ Object



27
28
29
# File 'lib/meter.rb', line 27

def log(key, log_data = {})
  track key, data: log_data
end

.send_metric_to_backends(metric) ⇒ Object



52
53
54
55
56
# File 'lib/meter.rb', line 52

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

Returns:

  • (Boolean)


58
59
60
# File 'lib/meter.rb', line 58

def should_sample?(sample_rate = 1)
  rand < sample_rate
end

.timing(key, value, sample_rate: 1, tags: {}, data: {}) ⇒ Object



45
46
47
48
49
50
# File 'lib/meter.rb', line 45

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