Allow a configurable Graphite namespace (prefix)

This commit is contained in:
Scott Schneider 2014-03-06 10:53:27 -08:00
parent 401f8f8ffd
commit 3af680f860
3 changed files with 45 additions and 26 deletions

View file

@ -5,13 +5,14 @@ module Vmpooler
config_file = File.expand_path('vmpooler.yaml') config_file = File.expand_path('vmpooler.yaml')
$config = YAML.load_file(config_file) $config = YAML.load_file(config_file)
pools = $config[:pools]
redis = $config[:redis]
# Set some defaults # Set some defaults
$config[:redis] ||= Hash.new $config[:redis] ||= Hash.new
$config[:redis]['server'] ||= 'localhost' $config[:redis]['server'] ||= 'localhost'
if ($config[:graphite]['server'])
$config[:graphite]['prefix'] ||= 'vmpooler'
end
# Connect to Redis # Connect to Redis
$redis = Redis.new(:host => $config[:redis]['server']) $redis = Redis.new(:host => $config[:redis]['server'])
end end
@ -62,11 +63,13 @@ module Vmpooler
end end
if ( params[:history] ) if ( params[:history] )
if ( $config[:config]['graphite'] ) if ( $config[:graphite]['server'] )
history ||= Hash.new history ||= Hash.new
begin begin
buffer = open( 'http://'+$config[:config]['graphite']+'/render?target=vmpooler.ready.*&from=-1hour&format=json' ).read buffer = open(
'http://'+$config[:graphite]['server']+'/render?target='+$config[:graphite]['prefix']+'.ready.*&from=-1hour&format=json'
).read
history = JSON.parse( buffer ) history = JSON.parse( buffer )
history.each do |pool| history.each do |pool|
@ -117,9 +120,11 @@ module Vmpooler
end end
if ( params[:history] ) if ( params[:history] )
if ( $config[:config]['graphite'] ) if ( $config[:graphite]['server'] )
begin begin
buffer = open( 'http://'+$config[:config]['graphite']+'/render?target=vmpooler.running.*&from=-1hour&format=json' ).read buffer = open(
'http://'+$config[:graphite]['server']+'/render?target='+$config[:graphite]['prefix']+'.running.*&from=-1hour&format=json'
).read
JSON.parse( buffer ).each do |pool| JSON.parse( buffer ).each do |pool|
if pool['target'] =~ /.*\.(.*)$/ if pool['target'] =~ /.*\.(.*)$/
pool['name'] = $1 pool['name'] = $1

View file

@ -6,16 +6,6 @@ module Vmpooler
$config = YAML.load_file(config_file) $config = YAML.load_file(config_file)
$pools = $config[:pools] $pools = $config[:pools]
vsphere = $config[:vsphere]
redis = $config[:redis]
# Load logger library
$logger = Vmpooler::Logger.new $config[:config]['logfile']
# Load Graphite helper library (if configured)
if (defined? $config[:config]['graphite'])
$graphite = Vmpooler::Graphite.new $config[:config]['graphite']
end
# Set some defaults # Set some defaults
$config[:config]['task_limit'] ||= 10 $config[:config]['task_limit'] ||= 10
@ -24,6 +14,15 @@ module Vmpooler
$config[:redis] ||= Hash.new $config[:redis] ||= Hash.new
$config[:redis]['server'] ||= 'localhost' $config[:redis]['server'] ||= 'localhost'
# Load logger library
$logger = Vmpooler::Logger.new $config[:config]['logfile']
# Load Graphite helper library (if configured)
if (defined? $config[:graphite]['server'])
$config[:graphite]['prefix'] ||= 'vmpooler'
$graphite = Vmpooler::Graphite.new $config[:graphite]['server']
end
# Connect to Redis # Connect to Redis
$redis = Redis.new(:host => $config[:redis]['server']) $redis = Redis.new(:host => $config[:redis]['server'])
@ -232,7 +231,7 @@ module Vmpooler
$redis.decr('vmpooler__tasks__clone') $redis.decr('vmpooler__tasks__clone')
begin begin
$graphite.log("vmpooler.clone.#{vm['template']}", finish) if defined? $graphite $graphite.log($config[:graphite]['prefix']+".clone.#{vm['template']}", finish) if defined? $graphite
rescue rescue
end end
} }
@ -265,7 +264,7 @@ module Vmpooler
$logger.log('s', "[-] [#{pool}] '#{vm}' destroyed in #{finish} seconds") $logger.log('s', "[-] [#{pool}] '#{vm}' destroyed in #{finish} seconds")
$graphite.log("vmpooler.destroy.#{pool}", finish) if defined? $graphite $graphite.log($config[:graphite]['prefix']+".destroy.#{pool}", finish) if defined? $graphite
end end
} }
end end
@ -393,8 +392,8 @@ module Vmpooler
begin begin
if (defined? $graphite) if (defined? $graphite)
$graphite.log('vmpooler.ready.'+pool['name'], $redis.scard('vmpooler__ready__'+pool['name'])) $graphite.log($config[:graphite]['prefix']+'.ready.'+pool['name'], $redis.scard('vmpooler__ready__'+pool['name']))
$graphite.log('vmpooler.running.'+pool['name'], $redis.scard('vmpooler__running__'+pool['name'])) $graphite.log($config[:graphite]['prefix']+'.running.'+pool['name'], $redis.scard('vmpooler__running__'+pool['name']))
end end
rescue rescue
end end

View file

@ -49,6 +49,26 @@
:redis: :redis:
server: 'redis.company.com' server: 'redis.company.com'
# :graphite:
#
# This section contains the connection information required to store
# historical data in an external Graphite database.
#
# Available configuration parameters:
#
# - server
# The FQDN hostname of the Graphite server.
# (optional)
#
# - prefix
# The prefix to use while storing Graphite data.
# (optional; default: 'vmpooler')
# Example:
:graphite:
server: 'graphite.company.com'
# :config: # :config:
# #
# This section contains global configuration information. # This section contains global configuration information.
@ -63,10 +83,6 @@
# The path to vmpooler's log file. # The path to vmpooler's log file.
# (optional; default: '/var/log/vmpooler.log') # (optional; default: '/var/log/vmpooler.log')
# #
# - graphite
# The FQDN hostname of the Graphite server.
# (optional)
#
# - task_limit # - task_limit
# The number of concurrent VMware vSphere tasks to perform. # The number of concurrent VMware vSphere tasks to perform.
# (optional; default: '10') # (optional; default: '10')
@ -84,7 +100,6 @@
:config: :config:
site_name: 'vmpooler' site_name: 'vmpooler'
logfile: '/var/log/vmpooler.log' logfile: '/var/log/vmpooler.log'
graphite: 'graphite.company.com'
task_limit: 10 task_limit: 10
vm_checktime: 15 vm_checktime: 15
vm_lifetime: 12 vm_lifetime: 12