diff options
-rw-r--r-- | Gemfile.lock | 2 | ||||
-rw-r--r-- | app/controllers/sessions_controller.rb | 1 | ||||
-rw-r--r-- | app/services/prom_service.rb | 16 | ||||
-rw-r--r-- | config.ru | 7 |
4 files changed, 26 insertions, 0 deletions
diff --git a/Gemfile.lock b/Gemfile.lock index 3affa434e2a..7c0f405091d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -465,6 +465,7 @@ GEM mimemagic (0.3.0) mini_portile2 (2.1.0) minitest (5.7.0) + mmap2 (2.2.6) mousetrap-rails (1.4.6) multi_json (1.12.1) multi_xml (0.6.0) @@ -977,6 +978,7 @@ DEPENDENCIES mail_room (~> 0.9.1) method_source (~> 0.8) minitest (~> 5.7.0) + mmap2 (~> 2.2.6) mousetrap-rails (~> 1.4.6) mysql2 (~> 0.3.16) net-ssh (~> 3.0.1) 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 diff --git a/app/services/prom_service.rb b/app/services/prom_service.rb new file mode 100644 index 00000000000..e9ccce758e9 --- /dev/null +++ b/app/services/prom_service.rb @@ -0,0 +1,16 @@ +require 'prometheus/client' +require 'singleton' + +class PromService + include Singleton + + attr_reader :login + + def initialize + @prometheus = Prometheus::Client.registry + + @login = Prometheus::Client::Counter.new(:login, 'Login counter') + @prometheus.register(@login) + + end +end diff --git a/config.ru b/config.ru index 065ce59932f..82af814341b 100644 --- a/config.ru +++ b/config.ru @@ -13,6 +13,13 @@ if defined?(Unicorn) # Max memory size (RSS) per worker use Unicorn::WorkerKiller::Oom, min, max end + + # TODO(lyda): Needs to be set externally. + ENV['prometheus_multiproc_dir'] = '/tmp' + + require 'prometheus/client/rack/exporter' + + use Prometheus::Client::Rack::Exporter, path: '/admin/metrics' end require ::File.expand_path('../config/environment', __FILE__) |