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