Sha256: 4bafadf57ad50edaa0a0e56a18586744b303dde5b5a3758f592458da6537a372
Contents?: true
Size: 1.47 KB
Versions: 1
Compression:
Stored size: 1.47 KB
Contents
require 'socket' class Statsd Version = '0.0.3' class << self attr_accessor :host, :port # +stat+ to log timing for # +time+ is the time to log in ms def timing(stat, time, sample_rate = 1) send_stats "#{stat}:#{time}|ms", sample_rate end # +stats+ can be a string or an array of strings def increment(stats, sample_rate = 1) update_counter stats, 1, sample_rate end # +stats+ can be a string or an array of strings def decrement(stats, sample_rate = 1) update_counter stats, -1, sample_rate end # +stats+ can be a string or array of strings def update_counter(stats, delta = 1, sample_rate = 1) stats = Array(stats) send_stats(stats.map { |s| "#{s}:#{delta}|c" }, sample_rate) end private 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 # silent but deadly ensure sock.close end true end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
statsd-client-0.0.3 | lib/statsd.rb |