travis-api/lib/travis/api/app/middleware/metriks.rb
Mathias Meyer 63d2a69b7d Only track endpoint if an endpoint is set.
For compatibility with the V1 API layer.
2013-05-09 14:18:59 +02:00

27 lines
763 B
Ruby

require 'travis/api/app'
require 'metriks'
class Travis::Api::App
class Middleware
class Metriks < Middleware
before do
env['metriks.request.start'] = Time.now.utc
::Metriks.meter("api.requests").mark
end
after do
if response.status < 400
time = Time.now.utc - env['metriks.request.start']
if headers['X-Pattern']
pattern = headers['X-Pattern'].gsub(/[:\/]/, ".")
metric = "api.request.endpoint.#{pattern}"
::Metriks.timer(metric).update(time)
end
::Metriks.meter("api.request.#{request.request_method.downcase}").mark
end
::Metriks.meter("api.request.status.#{response.status.to_s[0]}").mark
end
end
end
end