class Statsd::Client
Statsd::Client by Ben VandenBos github.com/bvandenbos/statsd-client
Constants
- Version
Attributes
host[RW]
port[RW]
Public Class Methods
new(host='localhost', port=8125)
click to toggle source
# File lib/statsd.rb, line 12 def initialize(host='localhost', port=8125) @host = host @port = port end
Public Instance Methods
decrement(stats, sample_rate = 1)
click to toggle source
stats
can be a string or an array of strings
# File lib/statsd.rb, line 29 def decrement(stats, sample_rate = 1) update_counter stats, -1, sample_rate end
increment(stats, sample_rate = 1)
click to toggle source
stats
can be a string or an array of strings
# File lib/statsd.rb, line 24 def increment(stats, sample_rate = 1) update_counter stats, 1, sample_rate end
timing(stat, time, sample_rate = 1)
click to toggle source
stat
to log timing for time
is the time to log in
ms
# File lib/statsd.rb, line 19 def timing(stat, time, sample_rate = 1) send_stats "#{stat}:#{time}|ms", sample_rate end
update_counter(stats, delta = 1, sample_rate = 1)
click to toggle source
stats
can be a string or array of strings
# File lib/statsd.rb, line 34 def update_counter(stats, delta = 1, sample_rate = 1) stats = Array(stats) send_stats(stats.map { |s| "#{s}:#{delta}|c" }, sample_rate) end
Private Instance Methods
send_stats(data, sample_rate = 1)
click to toggle source
# File lib/statsd.rb, line 41 def send_stats(data, sample_rate = 1) data = Array(data) sampled_data = [] # Apply sample rate if less than one if sample_rate < 1 data.each do |d| if rand <= sample_rate sampled_data << "#{d}@#{sample_rate}" end end data = sampled_data end return if data.empty? raise "host and port must be set" unless host && port begin sock = UDPSocket.new data.each do |d| sock.send(d, 0, host, port) end rescue Exception => e # silent but deadly puts e.message ensure sock.try(:close) end true end