class Statsd::Admin
Attributes
logger[RW]
Set to a standard logger instance to enable debug logging.
host[R]
StatsD host. Defaults to 127.0.0.1.
port[R]
StatsD admin port. Defaults to 8126.
Public Class Methods
new(host = '127.0.0.1', port = 8126)
click to toggle source
@param [String] host your statsd host @param [Integer] port your statsd port
# File lib/statsd.rb, line 144 def initialize(host = '127.0.0.1', port = 8126) @host = host || '127.0.0.1' @port = port || 8126 # protects @socket transactions @socket = nil @s_mu = Mutex.new connect end
Public Instance Methods
connect()
click to toggle source
Reconnects the socket, for when the statsd address may have changed. Users do not normally need to call this, but calling it may be appropriate when reconfiguring a process (e.g. from HUP)
# File lib/statsd.rb, line 203 def connect @s_mu.synchronize do begin @socket.flush rescue nil @socket.close if @socket rescue # Ignore socket errors on close. end @socket = TCPSocket.new(host, port) end end
counters()
click to toggle source
Reads all counters from StatsD.
# File lib/statsd.rb, line 164 def counters read_metric :counters end
delcounters(item)
click to toggle source
@param item
Deletes one or more counters. Wildcards are allowed.
# File lib/statsd.rb, line 182 def delcounters item delete_metric :counters, item end
delgauges(item)
click to toggle source
@param item
Deletes one or more gauges. Wildcards are allowed.
# File lib/statsd.rb, line 170 def delgauges item delete_metric :gauges, item end
deltimers(item)
click to toggle source
@param item
Deletes one or more timers. Wildcards are allowed.
# File lib/statsd.rb, line 176 def deltimers item delete_metric :timers, item end
gauges()
click to toggle source
Reads all gauges from StatsD.
# File lib/statsd.rb, line 154 def gauges read_metric :gauges end
host=(host)
click to toggle source
@attribute [w] host.
Users should call connect after changing this.
# File lib/statsd.rb, line 132 def host=(host) @host = host || '127.0.0.1' end
port=(port)
click to toggle source
@attribute [w] port.
Users should call connect after changing this.
# File lib/statsd.rb, line 138 def port=(port) @port = port || 8126 end
stats()
click to toggle source
# File lib/statsd.rb, line 186 def stats result = @s_mu.synchronize do # the format of "stats" isn't JSON, who knows why send_to_socket "stats" read_from_socket end items = {} result.split("\n").each do |line| key, val = line.chomp.split(": ") items[key] = val.to_i end items end
timers()
click to toggle source
Reads all timers from StatsD.
# File lib/statsd.rb, line 159 def timers read_metric :timers end
Private Instance Methods
delete_metric(name, item)
click to toggle source
# File lib/statsd.rb, line 226 def delete_metric name, item result = @s_mu.synchronize do send_to_socket "del#{name} #{item}" read_from_socket end deleted = [] result.split("\n").each do |line| deleted << line.chomp.split(": ")[-1] end deleted end
read_from_socket()
click to toggle source
# File lib/statsd.rb, line 247 def read_from_socket buffer = "" loop do line = @socket.readline break if line == "END\n" buffer += line end @socket.readline # clear the closing newline out of the socket buffer end
read_metric(name)
click to toggle source
# File lib/statsd.rb, line 217 def read_metric name result = @s_mu.synchronize do send_to_socket name read_from_socket end # for some reason, the reply looks like JSON, but isn't, quite JSON.parse result.gsub("'", "\"") end
send_to_socket(message)
click to toggle source
# File lib/statsd.rb, line 238 def send_to_socket(message) self.class.logger.debug { "Statsd: #{message}" } if self.class.logger @socket.write(message.to_s + "\n") rescue => boom self.class.logger.error { "Statsd: #{boom.class} #{boom}" } if self.class.logger nil end