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