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

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



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

Returns:

  • (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