summaryrefslogtreecommitdiff
path: root/lib/gitlab/metrics/requests_rack_middleware.rb
diff options
context:
space:
mode:
authorPawel Chojnacki <pawel@chojnacki.ws>2017-07-24 13:58:10 +0200
committerPawel Chojnacki <pawel@chojnacki.ws>2017-07-24 13:58:10 +0200
commitd80c55b9a0b787629cd913336fb7bec3635ac0f9 (patch)
treee139404d4e394033c4941b22c9af3cbdd8727681 /lib/gitlab/metrics/requests_rack_middleware.rb
parent9bbe2acf7fb75d19cc3db4e82e82eba47c65202e (diff)
downloadgitlab-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.rb40
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