class Goliath::Chimp::Rack::ServerMetrics

Attributes

default[R]
env_key[R]
path[R]

Public Class Methods

new(app, options = {}) click to toggle source
# File lib/goliath/chimp/rack/server_metrics.rb, line 9
def initialize(app, options = {})
  @app     = app
  @path    = options[:path]    || '/metrics'
  @env_key = options[:env_key]
  @default = options[:default] || '/*'
end

Public Instance Methods

call(env) click to toggle source
Calls superclass method
# File lib/goliath/chimp/rack/server_metrics.rb, line 16
def call env
  if env['PATH_INFO'] == path
    [ 200, {}, env['status'] ]
  else
    super
  end
end
post_process(env, status, headers, body) click to toggle source
# File lib/goliath/chimp/rack/server_metrics.rb, line 24
def post_process(env, status, headers, body)
  base_metrics = { count: 0, total_millis: 0 }
  env['status'][:requests] ||= Hash.new{ |h, k| h[k] = Hash.new{ |h, k| h[k] = base_metrics } }
  request_key    = extract_from_env(env, env_key, default)
  request_method = env['REQUEST_METHOD'].downcase.to_sym
  metrics = env['status'][:requests][request_key][request_method]
  metrics[:count] += 1
  elapsed_millis = ((Time.now.to_f - env[:start_time]) * 1000).round
  metrics[:total_millis] += elapsed_millis
  [status, headers, body]        
end