Class: Vmpooler::Metrics::Graphite
- Inherits:
-
Vmpooler::Metrics
- Object
- Vmpooler::Metrics
- Vmpooler::Metrics::Graphite
- Defined in:
- lib/vmpooler/metrics/graphite.rb
Instance Attribute Summary collapse
-
#port ⇒ Object
readonly
Returns the value of attribute port.
-
#prefix ⇒ Object
readonly
Returns the value of attribute prefix.
-
#server ⇒ Object
readonly
Returns the value of attribute server.
Instance Method Summary collapse
- #gauge(label, value) ⇒ Object
- #increment(label) ⇒ Object
-
#initialize(logger, params = {}) ⇒ Graphite
constructor
A new instance of Graphite.
- #log(path, value) ⇒ Object
- #timing(label, duration) ⇒ Object
Methods inherited from Vmpooler::Metrics
Constructor Details
#initialize(logger, params = {}) ⇒ Graphite
Returns a new instance of Graphite.
10 11 12 13 14 15 16 17 |
# File 'lib/vmpooler/metrics/graphite.rb', line 10 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 |
Instance Attribute Details
#port ⇒ Object (readonly)
Returns the value of attribute port.
8 9 10 |
# File 'lib/vmpooler/metrics/graphite.rb', line 8 def port @port end |
#prefix ⇒ Object (readonly)
Returns the value of attribute prefix.
8 9 10 |
# File 'lib/vmpooler/metrics/graphite.rb', line 8 def prefix @prefix end |
#server ⇒ Object (readonly)
Returns the value of attribute server.
8 9 10 |
# File 'lib/vmpooler/metrics/graphite.rb', line 8 def server @server end |
Instance Method Details
#gauge(label, value) ⇒ Object
23 24 25 |
# File 'lib/vmpooler/metrics/graphite.rb', line 23 def gauge(label, value) log label, value end |
#increment(label) ⇒ Object
19 20 21 |
# File 'lib/vmpooler/metrics/graphite.rb', line 19 def increment(label) log label, 1 end |
#log(path, value) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/vmpooler/metrics/graphite.rb', line 31 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) ⇒ Object
27 28 29 |
# File 'lib/vmpooler/metrics/graphite.rb', line 27 def timing(label, duration) log label, duration end |