class MetricsMachine::Monitor
Attributes
monitors[R]
reporter[R]
Public Class Methods
default_prefix()
click to toggle source
# File lib/metrics_machine/monitor.rb, line 61 def self.default_prefix `hostname`.strip.split('.').reverse.join('.') end
new(reporter, options = {})
click to toggle source
# File lib/metrics_machine/monitor.rb, line 9 def initialize reporter, options = {}, &block @reporter = reporter @monitors = {} @prefix = options.fetch(:prefix, self.class.default_prefix) configure &block if block_given? end
Public Instance Methods
configure(&block)
click to toggle source
# File lib/metrics_machine/monitor.rb, line 24 def configure &block instance_eval &block end
monitor(symbol_or_class, *args)
click to toggle source
# File lib/metrics_machine/monitor.rb, line 42 def monitor symbol_or_class, *args key = nil klass = case symbol_or_class when Symbol MetricsMachine.const_get(symbol_or_class.to_s.capitalize) when Class symbol_or_class when Hash key = symbol_or_class.keys.first symbol_or_class[key] end c = klass.new *args key ||= c.key if c.respond_to? :key key ||= klass.key if klass.respond_to? :key key ||= ActiveSupport::Inflector.underscore(klass.to_s.gsub('MetricsMachine::', '')) monitors[key] = c end
prefix(*args)
click to toggle source
# File lib/metrics_machine/monitor.rb, line 16 def prefix *args if args.empty? @prefix else @prefix = args.first end end
report(name, monitor)
click to toggle source
# File lib/metrics_machine/monitor.rb, line 36 def report name, monitor monitor.statistics.each do |k,v| reporter.gauge "#{prefix}.#{name}.#{ActiveSupport::Inflector.underscore(k)}", v end end
run!()
click to toggle source
# File lib/metrics_machine/monitor.rb, line 28 def run! monitors.each do |name,monitor| EM.add_periodic_timer(monitor.interval) do report name, monitor end end end