module Upfluence::HTTP::Middleware
Public Instance Methods
parse_route(env)
click to toggle source
# File lib/upfluence/http/middleware/prometheus.rb, line 66 def parse_route(env) parse_route_sinatra(env) || parse_route_rails(env) || parse_route_default(env) end
parse_route_default(env)
click to toggle source
# File lib/upfluence/http/middleware/prometheus.rb, line 93 def parse_route_default(env) Rack::Request.new(env).path.gsub(%r{/\d+(/|$)}, '/:id\\1') end
parse_route_rails(env)
click to toggle source
# File lib/upfluence/http/middleware/prometheus.rb, line 71 def parse_route_rails(env) params = env['action_dispatch.request.parameters'] return nil if params.nil? "#{params['controller']}##{params['action']}" end
parse_route_sinatra(env)
click to toggle source
# File lib/upfluence/http/middleware/prometheus.rb, line 78 def parse_route_sinatra(env) route = env['sinatra.route'] return nil if route.nil? || route.strip == '' path = Rack::Request.new(env).path splitted_template = route.split(' ').last.split('/').reject do |v| v.eql?('') end.reverse path.split('/').reverse.map.with_index do |part, i| splitted_template[i] || part end.reverse.join('/') end
record(env, code, duration)
click to toggle source
# File lib/upfluence/http/middleware/prometheus.rb, line 46 def record(env, code, duration) @request_total_count.increment( labels: { path: parse_route(env), method: env['REQUEST_METHOD'].downcase, status: code, env: Upfluence.env.to_s } ) @request_histogram.observe( duration, labels: { path: parse_route(env), method: env['REQUEST_METHOD'].downcase, env: Upfluence.env.to_s } ) end