From e4fb16218693edd4382b96482ba94eba6c8a7f1a Mon Sep 17 00:00:00 2001 From: Kevin Lyda Date: Wed, 29 Mar 2017 19:20:13 +0100 Subject: Initial pass at prometheus monitoring. This is a step for #29118. Add a single metric to count successful logins. Summary types are not supported so remove Collector. Either we need to support the summary type or we need to create a multiprocess-friendly Collector. Add config to load prometheus and set up the Collector and the Exporter. Fix `Gemfile` as current prometheus-client gemspec is missing the `mmap2` dependency. --- app/controllers/sessions_controller.rb | 1 + 1 file changed, 1 insertion(+) (limited to 'app/controllers/sessions_controller.rb') diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index 8c6ba4915cd..9870d4286a6 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -34,6 +34,7 @@ class SessionsController < Devise::SessionsController end # hide the signed-in notification flash[:notice] = nil + PromService.instance.login.increment log_audit_event(current_user, with: authentication_method) log_user_activity(current_user) end -- cgit v1.2.3 From 6b9a091ceeb1c760be14f749956807bc429af46d Mon Sep 17 00:00:00 2001 From: Kevin Lyda Date: Tue, 16 May 2017 15:32:07 +0100 Subject: Add trailing newline to response. Prometheus requires a trailing newline in its response. + cleanup --- app/controllers/sessions_controller.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'app/controllers/sessions_controller.rb') diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index 9870d4286a6..eaed878283e 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -34,7 +34,6 @@ class SessionsController < Devise::SessionsController end # hide the signed-in notification flash[:notice] = nil - PromService.instance.login.increment log_audit_event(current_user, with: authentication_method) log_user_activity(current_user) end @@ -48,6 +47,10 @@ class SessionsController < Devise::SessionsController private + def self.login_counter + @login_counter ||= Gitlab::Metrics.counter(:user_session_logins, 'User logins count') + end + # Handle an "initial setup" state, where there's only one user, it's an admin, # and they require a password change. def check_initial_setup @@ -126,6 +129,7 @@ class SessionsController < Devise::SessionsController end def log_user_activity(user) + SessionsController.login_counter.increment Users::ActivityService.new(user, 'login').execute end -- cgit v1.2.3 From 770f07cd5c68075bb261f4b6139c92b2ac9309c0 Mon Sep 17 00:00:00 2001 From: Pawel Chojnacki Date: Tue, 23 May 2017 16:23:43 +0200 Subject: Make login_counter instance variable instead of class one. + remove unecessarey require + fix small formatiing issues --- app/controllers/sessions_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app/controllers/sessions_controller.rb') diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index eaed878283e..fc9de30f256 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -47,7 +47,7 @@ class SessionsController < Devise::SessionsController private - def self.login_counter + def login_counter @login_counter ||= Gitlab::Metrics.counter(:user_session_logins, 'User logins count') end @@ -129,7 +129,7 @@ class SessionsController < Devise::SessionsController end def log_user_activity(user) - SessionsController.login_counter.increment + login_counter.increment Users::ActivityService.new(user, 'login').execute end -- cgit v1.2.3 From c134a72cdb7e6de8b70dc60de99cf4edc68a9227 Mon Sep 17 00:00:00 2001 From: Pawel Chojnacki Date: Mon, 29 May 2017 14:19:43 +0200 Subject: Move Prometheus presentation logic to PrometheusText + Use NullMetrics to mock metrics when unused + Use method_missing in NullMetrics mocking + Update prometheus gem to version that correctly uses transitive dependencies + Ensure correct folders are used in Multiprocess prometheus client tests. + rename Sessions controller's metric --- app/controllers/sessions_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/controllers/sessions_controller.rb') diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index fc9de30f256..ab52b676e01 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -48,7 +48,7 @@ class SessionsController < Devise::SessionsController private def login_counter - @login_counter ||= Gitlab::Metrics.counter(:user_session_logins, 'User logins count') + @login_counter ||= Gitlab::Metrics.counter(:user_session_logins, 'User sign in count') end # Handle an "initial setup" state, where there's only one user, it's an admin, -- cgit v1.2.3