class Object

Public Instance Methods

aggregate(metric, value, type, state) click to toggle source
# File bin/memcache2graphite, line 27
def aggregate(metric, value, type, state)
  if type == "sum"
    prev = state[metric]
    state[metric] = value
    if prev
      return value.to_f - prev.to_f
    end
  else
    return value
  end
end
collect(conf, memcache, graphite, state) click to toggle source
# File bin/memcache2graphite, line 39
def collect(conf, memcache, graphite, state)
  metrics_filter = conf["metrics"]
  message = {}
  memcache.stats.select{|node, metrics| metrics}.each do |node, metrics|
    metrics.select{|metric, value| metrics_filter.has_key?(metric)}.each do |metric, value|
      type = metrics_filter[metric]
      to_send = aggregate(metric, value, type, state)
      if to_send
        message[conf["graphite"]["path"].gsub(/<type>/,type).gsub(/<metric>/,metric)] = to_send
      end
    end
  end
  graphite.send_metrics(message)
end
run_timer(conf, memcache, graphite) click to toggle source
# File bin/memcache2graphite, line 54
def run_timer(conf, memcache, graphite)
  EventMachine.run {
    state = {}
    EventMachine.add_periodic_timer(conf.fetch("freq",1)) do
      collect(conf, memcache, graphite, state)
    end
  }
end