Class: Metrix::OpenTSDB

Inherits:
Object
  • Object
show all
Defined in:
lib/metrix/opentsdb.rb

Instance Method Summary collapse

Constructor Details

#initialize(host, port = 4242) ⇒ OpenTSDB

Returns a new instance of OpenTSDB.



5
6
7
8
# File 'lib/metrix/opentsdb.rb', line 5

def initialize(host, port = 4242)
  @host = host
  @port = port
end

Instance Method Details

#<<(metric) ⇒ Object



10
11
12
13
14
15
16
17
18
# File 'lib/metrix/opentsdb.rb', line 10

def <<(metric)
  metric.metrics.each do |m|
    Metrix.logger.debug "buffering #{m.to_opentsdb}"
    buffers << m.to_opentsdb
    flush if buffers.count >= 90
  end
rescue => err
  Metrix.logger.error "#{err.message} #{err.inspect}"
end

#buffersObject



29
30
31
# File 'lib/metrix/opentsdb.rb', line 29

def buffers
  @buffers ||= []
end

#flushObject



20
21
22
23
24
25
26
27
# File 'lib/metrix/opentsdb.rb', line 20

def flush
  return if buffers.empty?
  Metrix.logger.info "sending #{buffers.count} to #{@host}:#{@port}"
  Socket.tcp(@host, @port) do |socket|
    socket.puts buffers.join("\n")
  end
  buffers.clear
end