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 119 def initialize(host = '127.0.0.1', port = 8126) self.host, self.port = host, port end
Public Instance Methods
counters()
click to toggle source
Reads all counters from StatsD.
# File lib/statsd.rb, line 134 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 152 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 140 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 146 def deltimers item delete_metric :timers, item end
gauges()
click to toggle source
Reads all gauges from StatsD.
# File lib/statsd.rb, line 124 def gauges read_metric :gauges end
host=(host)
click to toggle source
@attribute [w] host
Writes are not thread safe.
# File lib/statsd.rb, line 107 def host=(host) @host = host || '127.0.0.1' end
port=(port)
click to toggle source
@attribute [w] port
Writes are not thread safe.
# File lib/statsd.rb, line 113 def port=(port) @port = port || 8126 end
stats()
click to toggle source
# File lib/statsd.rb, line 156 def stats # the format of "stats" isn't JSON, who knows why send_to_socket "stats" result = read_from_socket 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 129 def timers read_metric :timers end
Private Instance Methods
delete_metric(name, item)
click to toggle source
# File lib/statsd.rb, line 177 def delete_metric name, item send_to_socket "del#{name} #{item}" result = read_from_socket 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 196 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 170 def read_metric name send_to_socket name result = read_from_socket # 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 187 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
socket()
click to toggle source
# File lib/statsd.rb, line 207 def socket Thread.current[:statsd_admin_socket] ||= TCPSocket.new(host, port) end