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



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

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



34
35
36
37
38
39
# File 'lib/meter.rb', line 34

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

.send_metric_to_backends(metric) ⇒ Object



48
49
50
51
52
# File 'lib/meter.rb', line 48

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)


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

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

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



41
42
43
44
45
46
# File 'lib/meter.rb', line 41

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