class Routemaster::Middleware::Metrics
Constants
- INTERACTION_KEY
Attributes
client[R]
source_peer[R]
Public Class Methods
new(app, options = {})
click to toggle source
# File lib/routemaster/middleware/metrics.rb, line 6 def initialize(app, options = {}) @app = app @client = options[:client] @source_peer = options[:source_peer] end
Public Instance Methods
call(request_env)
click to toggle source
# File lib/routemaster/middleware/metrics.rb, line 12 def call(request_env) return @app.call(request_env) unless can_log? increment_req_count(request_tags(request_env)) record_latency(request_tags(request_env)) do begin @app.call(request_env).on_complete do |response_env| increment_response_count(response_tags(response_env)) end rescue Routemaster::Errors::BaseError => e increment_response_count(response_tags(e.env)) raise e end end end
Private Instance Methods
can_log?()
click to toggle source
# File lib/routemaster/middleware/metrics.rb, line 47 def can_log? client && source_peer end
destination_peer(env)
click to toggle source
# File lib/routemaster/middleware/metrics.rb, line 51 def destination_peer(env) env.url.host end
increment_req_count(tags)
click to toggle source
# File lib/routemaster/middleware/metrics.rb, line 33 def increment_req_count(tags) client.increment("#{INTERACTION_KEY}.request.count", tags: tags) end
increment_response_count(tags)
click to toggle source
# File lib/routemaster/middleware/metrics.rb, line 37 def increment_response_count(tags) client.increment("#{INTERACTION_KEY}.response.count", tags: tags) end
record_latency(tags, &block)
click to toggle source
# File lib/routemaster/middleware/metrics.rb, line 41 def record_latency(tags, &block) client.time("#{INTERACTION_KEY}.latency", tags: tags) do block.call end end