diff options
author | Pawel Chojnacki <pawel@chojnacki.ws> | 2017-07-24 13:58:10 +0200 |
---|---|---|
committer | Pawel Chojnacki <pawel@chojnacki.ws> | 2017-07-24 13:58:10 +0200 |
commit | d80c55b9a0b787629cd913336fb7bec3635ac0f9 (patch) | |
tree | e139404d4e394033c4941b22c9af3cbdd8727681 /lib/gitlab/metrics/requests_rack_middleware.rb | |
parent | 9bbe2acf7fb75d19cc3db4e82e82eba47c65202e (diff) | |
download | gitlab-ce-pawel/backport-metrics-renames-to-9-4.tar.gz |
Update metric names to match Prometheus guidelines.pawel/backport-metrics-renames-to-9-4
Related to #35031
See merge request !12812
Diffstat (limited to 'lib/gitlab/metrics/requests_rack_middleware.rb')
-rw-r--r-- | lib/gitlab/metrics/requests_rack_middleware.rb | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/lib/gitlab/metrics/requests_rack_middleware.rb b/lib/gitlab/metrics/requests_rack_middleware.rb new file mode 100644 index 00000000000..0dc19f31d03 --- /dev/null +++ b/lib/gitlab/metrics/requests_rack_middleware.rb @@ -0,0 +1,40 @@ +module Gitlab + module Metrics + class RequestsRackMiddleware + def initialize(app) + @app = app + end + + def self.http_request_total + @http_request_total ||= Gitlab::Metrics.counter(:http_requests_total, 'Request count') + end + + def self.rack_uncaught_errors_count + @rack_uncaught_errors_count ||= Gitlab::Metrics.counter(:rack_uncaught_errors_total, 'Request handling uncaught errors count') + end + + def self.http_request_duration_seconds + @http_request_duration_seconds ||= Gitlab::Metrics.histogram(:http_request_duration_seconds, 'Request handling execution time', + {}, [0.05, 0.1, 0.25, 0.5, 0.7, 1, 2.5, 5, 10, 25]) + end + + def call(env) + method = env['REQUEST_METHOD'].downcase + started = Time.now.to_f + begin + RequestsRackMiddleware.http_request_total.increment(method: method) + + status, headers, body = @app.call(env) + + elapsed = Time.now.to_f - started + RequestsRackMiddleware.http_request_duration_seconds.observe({ method: method, status: status }, elapsed) + + [status, headers, body] + rescue + RequestsRackMiddleware.rack_uncaught_errors_count.increment + raise + end + end + end + end +end |