Class: Trashed::Rack::MeasureResourceUsage
- Inherits:
-
Object
- Object
- Trashed::Rack::MeasureResourceUsage
- Defined in:
- lib/trashed/rack.rb
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app, options = {}) ⇒ MeasureResourceUsage
constructor
A new instance of MeasureResourceUsage.
- #instrument(env, &block) ⇒ Object
- #record(env, change, usage) ⇒ Object
- #record_debug_logger(env, change, usage) ⇒ Object
- #record_env(env, change, usage) ⇒ Object
- #record_logger(env, change, usage) ⇒ Object
- #record_statsd(env, change, usage) ⇒ Object
- #record_statsd_timing(data, namespace = nil) ⇒ Object
Constructor Details
#initialize(app, options = {}) ⇒ MeasureResourceUsage
Returns a new instance of MeasureResourceUsage.
4 5 6 7 8 9 10 |
# File 'lib/trashed/rack.rb', line 4 def initialize(app, = {}) @app = app @debug, @logger, @statsd, @sample_rate = .values_at(:debug, :logger, :statsd, :sample_rate) @sample_rate ||= 0.1 @request_namespaces, @sampler_namespaces = .values_at(:statsd_request_namespaces, :statsd_sampler_namespaces) end |
Instance Method Details
#call(env) ⇒ Object
12 13 14 15 16 |
# File 'lib/trashed/rack.rb', line 12 def call(env) response = nil instrument(env) { response = @app.call(env) } response end |
#instrument(env, &block) ⇒ Object
18 19 20 21 22 |
# File 'lib/trashed/rack.rb', line 18 def instrument(env, &block) change = ResourceUsage.instrument(&block) usage = ResourceUsage.gauge record env, change, usage end |
#record(env, change, usage) ⇒ Object
24 25 26 27 28 |
# File 'lib/trashed/rack.rb', line 24 def record(env, change, usage) record_env env, change, usage record_logger env, change, usage if @logger record_statsd env, change, usage if @statsd end |
#record_debug_logger(env, change, usage) ⇒ Object
40 41 42 43 |
# File 'lib/trashed/rack.rb', line 40 def record_debug_logger(env, change, usage) @logger.debug "Changes: #{change.to_yaml}" @logger.debug "Usage: #{usage.to_yaml}" end |
#record_env(env, change, usage) ⇒ Object
30 31 32 33 |
# File 'lib/trashed/rack.rb', line 30 def record_env(env, change, usage) env['trashed.change'] = change env['trashed.usage'] = usage end |
#record_logger(env, change, usage) ⇒ Object
35 36 37 38 |
# File 'lib/trashed/rack.rb', line 35 def record_logger(env, change, usage) @logger.info "Rack handled in %dms (GC runs: %d)" % change.values_at('Time.wall', 'GC.count') record_debug_logger env, change, usage if @debug end |
#record_statsd(env, change, usage) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/trashed/rack.rb', line 45 def record_statsd(env, change, usage) record_statsd_timing change, :'Rack.Request.All' record_statsd_timing usage, :'Rack.Server.All' Array(@request_namespaces.call(env)).each do |namespace| record_statsd_timing change, "Rack.Request.#{namespace}" end if @request_namespaces Array(@sampler_namespaces.call(env)).each do |namespace| record_statsd_timing usage, "Rack.Server.#{namespace}" end if @sampler_namespaces end |
#record_statsd_timing(data, namespace = nil) ⇒ Object
58 59 60 61 62 63 |
# File 'lib/trashed/rack.rb', line 58 def record_statsd_timing(data, namespace = nil) data.each do |name, value| name = "#{namespace}.#{name}" if namespace @statsd.timing name, value, @sample_rate end end |