class Metrics::Instruments::Meter
Constants
- FIFTEEN_MINUTE_FACTOR
- FIVE_MINUTE_FACTOR
- INTERVAL_SECONDS
- ONE_MINUTE_FACTOR
Attributes
count[R]
counted[R]
units[R]
Public Class Methods
new(options = {})
click to toggle source
# File lib/ruby-metrics/instruments/meter.rb, line 18 def initialize(options = {}) @units = options[:units] clear @timer_thread = Thread.new do begin loop do tick sleep(INTERVAL_SECONDS) end rescue Exception => e logger.error "Error in timer thread: #{e.class.name}: #{e}\n #{e.backtrace.join("\n ")}" end end end
Public Instance Methods
as_json(*_)
click to toggle source
# File lib/ruby-metrics/instruments/meter.rb, line 86 def as_json(*_) { :one_minute_rate => one_minute_rate, :five_minute_rate => five_minute_rate, :fifteen_minute_rate => fifteen_minute_rate } end
calc_rate(rate, factor, count)
click to toggle source
# File lib/ruby-metrics/instruments/meter.rb, line 45 def calc_rate(rate, factor, count) rate.to_f + factor.to_f * (count.to_f - rate.to_f) end
clear()
click to toggle source
# File lib/ruby-metrics/instruments/meter.rb, line 34 def clear @one_minute_rate = @five_minute_rate = @fifteen_minute_rate = 0.0 @count = 0 @initialized = false @start_time = Time.now.to_f end
fifteen_minute_rate(rate_unit = :seconds)
click to toggle source
# File lib/ruby-metrics/instruments/meter.rb, line 72 def fifteen_minute_rate(rate_unit = :seconds) convert_to_ns @fifteen_minute_rate, rate_unit end
five_minute_rate(rate_unit = :seconds)
click to toggle source
# File lib/ruby-metrics/instruments/meter.rb, line 68 def five_minute_rate(rate_unit = :seconds) convert_to_ns @five_minute_rate, rate_unit end
mark(count = 1)
click to toggle source
# File lib/ruby-metrics/instruments/meter.rb, line 41 def mark(count = 1) @count += count end
mean_rate(rate_unit = :seconds)
click to toggle source
# File lib/ruby-metrics/instruments/meter.rb, line 76 def mean_rate(rate_unit = :seconds) if @count == 0 0.0 else elapsed = Time.now.to_f - @start_time.to_f scale_factor = scale_time_units(:seconds, rate_unit) @count.to_f / (elapsed * scale_factor) end end
one_minute_rate(rate_unit = :seconds)
click to toggle source
# File lib/ruby-metrics/instruments/meter.rb, line 64 def one_minute_rate(rate_unit = :seconds) convert_to_ns @one_minute_rate, rate_unit end
tick()
click to toggle source
# File lib/ruby-metrics/instruments/meter.rb, line 49 def tick count = @count.to_f / Seconds.to_nsec(INTERVAL_SECONDS).to_f if @initialized @one_minute_rate = calc_rate(@one_minute_rate, ONE_MINUTE_FACTOR, count) @five_minute_rate = calc_rate(@five_minute_rate, FIVE_MINUTE_FACTOR, count) @fifteen_minute_rate = calc_rate(@fifteen_minute_rate, FIFTEEN_MINUTE_FACTOR, count) else @one_minute_rate = @five_minute_rate = @fifteen_minute_rate = count @initialized = true end @count = 0 end
to_json(*_)
click to toggle source
# File lib/ruby-metrics/instruments/meter.rb, line 94 def to_json(*_) as_json.to_json end