From 03d124d1b7b16b3c7dd05ff1c305297a3a054ac6 Mon Sep 17 00:00:00 2001 From: Konstantin Haase Date: Thu, 11 Jul 2013 18:13:23 +0200 Subject: [PATCH] metrics for request queue --- lib/travis/api/app.rb | 2 +- lib/travis/api/app/middleware/metriks.rb | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/lib/travis/api/app.rb b/lib/travis/api/app.rb index a469dab7..59e58af8 100644 --- a/lib/travis/api/app.rb +++ b/lib/travis/api/app.rb @@ -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 diff --git a/lib/travis/api/app/middleware/metriks.rb b/lib/travis/api/app/middleware/metriks.rb index cb90f1f4..c8bc07c1 100644 --- a/lib/travis/api/app/middleware/metriks.rb +++ b/lib/travis/api/app/middleware/metriks.rb @@ -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