class Vmpooler::Metrics::Graphite

Attributes

port[R]
prefix[R]
server[R]

Public Class Methods

new(logger, params = {}) click to toggle source

rubocop:disable Lint/MissingSuper

# File lib/vmpooler/metrics/graphite.rb, line 11
def initialize(logger, params = {})
  raise ArgumentError, "Graphite server is required. Config: #{params.inspect}" if params['server'].nil? || params['server'].empty?

  @server = params['server']
  @port   = params['port'] || 2003
  @prefix = params['prefix'] || 'vmpooler'
  @logger = logger
end

Public Instance Methods

gauge(label, value) click to toggle source
# File lib/vmpooler/metrics/graphite.rb, line 25
def gauge(label, value)
  log label, value
end
increment(label) click to toggle source

rubocop:enable Lint/MissingSuper

# File lib/vmpooler/metrics/graphite.rb, line 21
def increment(label)
  log label, 1
end
log(path, value) click to toggle source
# File lib/vmpooler/metrics/graphite.rb, line 33
def log(path, value)
  Thread.new do
    socket = TCPSocket.new(server, port)
    begin
      socket.puts "#{prefix}.#{path} #{value} #{Time.now.to_i}"
    ensure
      socket.close
    end
  end
rescue Errno::EADDRNOTAVAIL => e
  warn "Could not assign address to graphite server #{server}: #{e}"
rescue StandardError => e
  @logger.log('s', "[!] Failure logging #{path} to graphite server [#{server}:#{port}]: #{e}")
end
timing(label, duration) click to toggle source
# File lib/vmpooler/metrics/graphite.rb, line 29
def timing(label, duration)
  log label, duration
end