class Riemann::MetricThread
Constants
- INTERVAL
A metric thread is simple: it wraps some metric object which responds to <<, and every interval seconds, calls
flush
which replaces the object and calls a user specified function.
Attributes
interval[RW]
metric[RW]
Public Class Methods
new(klass, *klass_args, &block)
click to toggle source
client = Riemann::Client.new
m = MetricThread.new
Mtrc::Rate do |rate|
client << rate
end
loop do
sleep rand m << rand
end
# File lib/riemann/metric_thread.rb, line 22 def initialize(klass, *klass_args, &block) @klass = klass @klass_args = klass_args @block = block @interval = INTERVAL @metric = new_metric start end
Public Instance Methods
<<(value)
click to toggle source
# File lib/riemann/metric_thread.rb, line 33 def <<(value) @metric.<<(value) end
flush()
click to toggle source
# File lib/riemann/metric_thread.rb, line 41 def flush old = @metric @metric = new_metric @block[old] end
new_metric()
click to toggle source
# File lib/riemann/metric_thread.rb, line 37 def new_metric @klass.new(*@klass_args) end
start()
click to toggle source
# File lib/riemann/metric_thread.rb, line 47 def start raise 'already running' if @runner @running = true @runner = Thread.new do while @running sleep @interval begin flush rescue StandardError # ignore end end @runner = nil end end
stop()
click to toggle source
# File lib/riemann/metric_thread.rb, line 64 def stop stop! @runner.join end
stop!()
click to toggle source
# File lib/riemann/metric_thread.rb, line 69 def stop! @running = false end