mirror of
https://github.com/puppetlabs/vmpooler.git
synced 2026-01-27 02:18:41 -05:00
Prior to this, the `pool_manager.rb` library could take handles for both graphite and statsd endpoints (which were considered mutually exclusive), and then would use one. There was a bevy of conditional logic around sending metrics to the graphite/statsd handles (and actually at least one bug of omission). Here we refactor more, building on earlier work: - Our graphite class comes into line with the API of our Statsd and DummyStatsd classes - In `pool_manager.rb` we now accept a single "metrics" handle, and we drop all the conditional logic around statsd vs. graphite - We move the inconsistent error handling out of the calling classes and into our metrics classes, actually logging to `$stderr` when we can't publish metrics - We unify the setup code to use `config` to determine whether statsd, graphite, or a dummy metrics handle should be used, and make that happen. - Cleaned up some tests. We could probably stand to do a bit more work in this area.
55 lines
1.3 KiB
Ruby
55 lines
1.3 KiB
Ruby
require 'rubygems' unless defined?(Gem)
|
|
|
|
module Vmpooler
|
|
class Statsd
|
|
attr_reader :server, :port, :prefix
|
|
|
|
def initialize(params = {})
|
|
if params[:server].nil? || params[:server].empty?
|
|
raise ArgumentError, "Statsd server is required. Config: #{params.inspect}"
|
|
end
|
|
|
|
host = params[:server]
|
|
@port = params[:port] || 8125
|
|
@prefix = params[:prefix] || 'vmpooler'
|
|
@server = Statsd.new(host, @port)
|
|
end
|
|
|
|
def increment(label)
|
|
server.increment(prefix + "." + label)
|
|
rescue => err
|
|
$stderr.puts "Failure incrementing #{prefix}.#{label} on statsd server [#{server}:#{port}]: #{err}"
|
|
end
|
|
|
|
def gauge(label, value)
|
|
server.gauge(prefix + "." + label, value)
|
|
rescue => err
|
|
$stderr.puts "Failure updating gauge #{prefix}.#{label} on statsd server [#{server}:#{port}]: #{err}"
|
|
end
|
|
|
|
def timing(label, duration)
|
|
server.timing(prefix + "." + label, duration)
|
|
rescue => err
|
|
$stderr.puts "Failure updating timing #{prefix}.#{label} on statsd server [#{server}:#{port}]: #{err}"
|
|
end
|
|
end
|
|
|
|
class DummyStatsd
|
|
attr_reader :server, :port, :prefix
|
|
|
|
def initialize(params = {})
|
|
end
|
|
|
|
def increment(label)
|
|
true
|
|
end
|
|
|
|
def gauge(label, value)
|
|
true
|
|
end
|
|
|
|
def timing(label, duration)
|
|
true
|
|
end
|
|
end
|
|
end
|