diff options
author | Brice Figureau <brice-puppet@daysofwonder.com> | 2010-12-18 15:25:02 +0100 |
---|---|---|
committer | Brice Figureau <brice-puppet@daysofwonder.com> | 2010-12-18 15:25:02 +0100 |
commit | e27d208db86ae0825afbc6fb34d39e7c047a1bf4 (patch) | |
tree | 9d06016ba13e5e5702928cabfd461924b647a457 /lib/puppet | |
parent | aed4b5fd674107d6c1e3a2e2e5c2f8c42f7a5c35 (diff) | |
download | puppet-e27d208db86ae0825afbc6fb34d39e7c047a1bf4.tar.gz puppet-e27d208db86ae0825afbc6fb34d39e7c047a1bf4.tar.xz puppet-e27d208db86ae0825afbc6fb34d39e7c047a1bf4.zip |
Some high-level process name probes
Here is an attempt to cover with process name probes some of the longest
parts of a puppet agent or master.
Currently:
* node compilation
* individual resource evaluation
* some configurer parts
* individual network requests
Signed-off-by: Brice Figureau <brice-puppet@daysofwonder.com>
Diffstat (limited to 'lib/puppet')
-rw-r--r-- | lib/puppet/configurer.rb | 24 | ||||
-rw-r--r-- | lib/puppet/network/http/handler.rb | 6 | ||||
-rw-r--r-- | lib/puppet/parser/compiler.rb | 6 | ||||
-rw-r--r-- | lib/puppet/transaction.rb | 9 |
4 files changed, 35 insertions, 10 deletions
diff --git a/lib/puppet/configurer.rb b/lib/puppet/configurer.rb index 31d31c2d2..4320aa9bd 100644 --- a/lib/puppet/configurer.rb +++ b/lib/puppet/configurer.rb @@ -3,6 +3,7 @@ require 'sync' require 'timeout' require 'puppet/network/http_pool' require 'puppet/util' +require 'puppet/util/instrumentation' class Puppet::Configurer class CommandHookError < RuntimeError; end @@ -12,6 +13,7 @@ class Puppet::Configurer include Puppet::Configurer::FactHandler include Puppet::Configurer::PluginHandler + include Puppet::Util::Instrumentation # For benchmarking include Puppet::Util @@ -80,11 +82,17 @@ class Puppet::Configurer def prepare dostorage - download_plugins + instrument("downloading plugins") do + download_plugins + end - download_fact_plugins + instrument("downloading facts plugins") do + download_fact_plugins + end - execute_prerun_command + instrument("executing prerun command") do + execute_prerun_command + end end # Get the remote catalog, yo. Returns nil if no catalog can be found. @@ -148,8 +156,10 @@ class Puppet::Configurer transaction = nil begin - benchmark(:notice, "Finished catalog run") do - transaction = catalog.apply(options) + instrument("applying catalog") do + benchmark(:notice, "Finished catalog run") do + transaction = catalog.apply(options) + end end report rescue => detail @@ -169,7 +179,9 @@ class Puppet::Configurer Puppet::Util::Log.close(report) - send_report(report, transaction) + instrument("sending report") do + send_report(report, transaction) + end end def send_report(report, trans = nil) diff --git a/lib/puppet/network/http/handler.rb b/lib/puppet/network/http/handler.rb index 82238aa0a..855a9b78d 100644 --- a/lib/puppet/network/http/handler.rb +++ b/lib/puppet/network/http/handler.rb @@ -5,10 +5,12 @@ require 'puppet/network/http/api/v1' require 'puppet/network/rest_authorization' require 'puppet/network/rights' require 'resolv' +require 'puppet/util/instrumentation' module Puppet::Network::HTTP::Handler include Puppet::Network::HTTP::API::V1 include Puppet::Network::RestAuthorization + include Puppet::Util::Instrumentation attr_reader :server, :handler @@ -65,7 +67,9 @@ module Puppet::Network::HTTP::Handler check_authorization(indirection, method, key, params) - send("do_#{method}", indirection, key, params, request, response) + instrument("processing #{indirection} #{key}") do + send("do_#{method}", indirection, key, params, request, response) + end rescue SystemExit,NoMemoryError raise rescue Exception => e diff --git a/lib/puppet/parser/compiler.rb b/lib/puppet/parser/compiler.rb index c60e1d4fb..7da50c227 100644 --- a/lib/puppet/parser/compiler.rb +++ b/lib/puppet/parser/compiler.rb @@ -4,6 +4,7 @@ require 'puppet/node' require 'puppet/resource/catalog' require 'puppet/util/errors' +require 'puppet/util/instrumentation' require 'puppet/resource/type_collection_helper' @@ -13,9 +14,12 @@ class Puppet::Parser::Compiler include Puppet::Util include Puppet::Util::Errors include Puppet::Resource::TypeCollectionHelper + extend Puppet::Util::Instrumentation def self.compile(node) - new(node).compile.to_resource + instrument("compiling #{node.name}") do + new(node).compile.to_resource + end rescue => detail puts detail.backtrace if Puppet[:trace] raise Puppet::Error, "#{detail} on node #{node.name}" diff --git a/lib/puppet/transaction.rb b/lib/puppet/transaction.rb index dcd9aad0a..0a3bfc3dd 100644 --- a/lib/puppet/transaction.rb +++ b/lib/puppet/transaction.rb @@ -4,8 +4,11 @@ require 'puppet' require 'puppet/util/tagging' require 'puppet/application' +require 'puppet/util/instrumentation' class Puppet::Transaction + include Puppet::Util::Instrumentation + require 'puppet/transaction/change' require 'puppet/transaction/event' require 'puppet/transaction/event_manager' @@ -139,8 +142,10 @@ class Puppet::Transaction next end ret = nil - seconds = thinmark do - ret = eval_resource(resource) + instrument("evaluating #{resource}") do + seconds = thinmark do + ret = eval_resource(resource) + end end resource.info "Evaluated in %0.2f seconds" % seconds if Puppet[:evaltrace] and @catalog.host_config? |