class MetricCollect::Backend::Statsd
Attributes
params[RW]
Public Class Methods
new(name)
click to toggle source
# File lib/backend/statsd.rb, line 23 def initialize(name) @params = Hash.new @params[:name] = name @params[:value] = nil @params[:key] = "metric_collect" @params[:type] = :gauge end
Public Instance Methods
method_missing(method_symbol, *args, &block)
click to toggle source
# File lib/backend/statsd.rb, line 31 def method_missing(method_symbol, *args, &block) @params[method_symbol] end
process_metric(config)
click to toggle source
# File lib/backend/statsd.rb, line 37 def process_metric(config) @config = config.params name = @params[:name] value = @params[:value] key = @params[:key] type = @params[:type] case type when :counter counters("#{key}.#{name}", value) when :timer timers("#{key}.#{name}", value) when :gauge gauges("#{key}.#{name}", value) when :set sets("#{key}.#{name}", value) else MetricCollect::Log.fatal("#{type.to_s} is not a valid statsd type!") end end
Private Instance Methods
counters(stats, value, sample_rate=1)
click to toggle source
# File lib/backend/statsd.rb, line 63 def counters(stats, value, sample_rate=1) update_stats(stats, value, sample_rate) end
gauges(stats, value, sample_rate=1)
click to toggle source
# File lib/backend/statsd.rb, line 67 def gauges(stats, value, sample_rate=1) update_stats(stats, value, sample_rate, 'g') end
send(data, sample_rate=1)
click to toggle source
# File lib/backend/statsd.rb, line 86 def send(data, sample_rate=1) begin host = @config[:statsd_server] port = @config[:statsd_port] sampled_data = {} if sample_rate < 1 if rand <= sample_rate data.each_pair do |stat, val| sampled_data[stat] = "%s|@%s" % [val, sample_rate] end end else sampled_data = data end udp = UDPSocket.new sampled_data.each_pair do |stat, val| send_data = "%s:%s" % [stat, val] udp.send send_data, 0, host, port end rescue => e puts e.message end end
sets(stats, value, sample_rate=1)
click to toggle source
# File lib/backend/statsd.rb, line 71 def sets(stats, value, sample_rate=1) update_stats(stats, value, sample_rate, 's') end
timers(stats, time, sample_rate=1)
click to toggle source
# File lib/backend/statsd.rb, line 59 def timers(stats, time, sample_rate=1) update_stats(stats, time, sample_rate, 'ms') end
update_stats(stats, delta=1, sample_rate=1, metric='c')
click to toggle source
# File lib/backend/statsd.rb, line 75 def update_stats(stats, delta=1, sample_rate=1, metric='c') stats = [stats].flatten data = {} stats.each do |stat| data[stat] = "%s|%s" % [delta, metric] end send(data, sample_rate) end