module Meter

stolen from github.com/steveklabnik/request_store

Public Class Methods

config() click to toggle source

Public: Lazy-loads and returns the the configuration instance.

# File lib/meter/configure.rb, line 7
def self.config
  @config ||= ::Meter::Configuration.new
end
configure() { |config| ... } click to toggle source

Public: Yields the configuration instance.

# File lib/meter/configure.rb, line 13
def self.configure(&block)
  yield config
end
gauge(key, value, sample_rate: 1, tags: {}, data: {}) click to toggle source
# 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: {}) click to toggle source
# 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: {}) click to toggle source
# 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: {}) click to toggle source
# 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
Also aliased as: track
send_metric_to_backends(metric) click to toggle source
# 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) click to toggle source
# File lib/meter.rb, line 63
def should_sample?(sample_rate = 1)
  rand < sample_rate
end
timing(key, value, sample_rate: 1, tags: {}, data: {}) click to toggle source
# 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
track(key, tags: {}, data: {})
Alias for: log