class Goliath::Chimp::Plugin::ActivityMonitor

Attributes

logger[R]
previous[R]
status[R]

Public Class Methods

new(address, port, config, status, logger) click to toggle source
# File lib/goliath/chimp/plugins/activity_monitor.rb, line 7
def initialize(address, port, config, status, logger)
  @status   = status
  @logger   = logger
  @previous = Time.now.to_f
end

Public Instance Methods

latency() click to toggle source
# File lib/goliath/chimp/plugins/activity_monitor.rb, line 25
def latency
  snapshot = Time.now.to_f
  laten = snapshot - previous
  @previous = snapshot
  laten
end
report(metric) click to toggle source
# File lib/goliath/chimp/plugins/activity_monitor.rb, line 32
def report metric
  logger.debug metric
end
run(options = {}) click to toggle source
# File lib/goliath/chimp/plugins/activity_monitor.rb, line 13
def run(options = {})
  interval = options[:window] || 60
  EM::Synchrony.add_periodic_timer(interval) do
    current = latency
    status[:reactor] = {
      latency: current,
      ratio:   (current / interval).round(6),
    }
    report status
  end
end