class QueueTimeStatsdReporter

Constants

VERSION

Public Class Methods

new(app, statsd, metric_name, tags = []) click to toggle source
# File lib/queue_time_statsd_reporter.rb, line 6
def initialize(app, statsd, metric_name, tags = [])
  @app = app
  @statsd = statsd
  @metric_name = metric_name
  @tags = tags
end

Public Instance Methods

call(env) click to toggle source
# File lib/queue_time_statsd_reporter.rb, line 13
def call(env)
  report_queue_time(env)
  @app.call(env)
end

Private Instance Methods

report_queue_time(env) click to toggle source
# File lib/queue_time_statsd_reporter.rb, line 20
def report_queue_time(env)
  return nil unless env.has_key?("HTTP_X_REQUEST_START")
  @statsd.gauge(
    @metric_name,
    seconds_since_request_start(env["HTTP_X_REQUEST_START"]),
    tags=@tags
  )
end
request_start_time_from_header(header_string) click to toggle source

The header will be in the format t=1525393793.115

# File lib/queue_time_statsd_reporter.rb, line 34
def request_start_time_from_header(header_string)
  Float(header_string.strip[2..-1])
end
seconds_since_request_start(header) click to toggle source
# File lib/queue_time_statsd_reporter.rb, line 29
def seconds_since_request_start(header)
  Float((Time.now - request_start_time_from_header(header)))
end