metrics for request queue

This commit is contained in:
Konstantin Haase 2013-07-11 18:13:23 +02:00
parent 8707f3b357
commit 03d124d1b7
2 changed files with 15 additions and 2 deletions

View File

@ -64,7 +64,7 @@ module Travis::Api
def initialize
@app = Rack::Builder.app do
use(Rack::Config) { |env| env["HTTP_X_MIDDLEWARE_START"] ||= "t=#{(Time.now.to_f * 1000000).to_i}" }
use(Rack::Config) { |env| env['metriks.request.start'] ||= Time.now.utc }
Rack::Utils::HTTP_STATUS_CODES[420] = "Enhance Your Calm"
use Rack::Attack

View File

@ -7,10 +7,15 @@ class Travis::Api::App
include Helpers::Accept
before do
env['metriks.request.start'] = Time.now.utc
env['metriks.request.start'] ||= Time.now.utc
end
after do
if queue_start = time(env['HTTP_X_QUEUE_START'])
time = env['metriks.request.start'] - queue_start
::Metriks.timer('api.request_queue').update(time)
end
if response.status < 400
time = Time.now.utc - env['metriks.request.start']
if headers['X-Pattern'].present? and headers['X-Endpoint'].present?
@ -21,9 +26,17 @@ class Travis::Api::App
end
::Metriks.meter("api.request.#{request.request_method.downcase}").mark
end
::Metriks.meter("api.request.status.#{response.status.to_s[0]}").mark
::Metriks.meter("api.request.version.#{accept_version}").mark
end
def time(value)
value = value.to_f
start = env['metriks.request.start'].to_f
value /= 1000 while value > start
value if value > 946684800
end
end
end
end