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