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.
This commit is contained in:
parent
f1cb099137
commit
e4fb162186
|
|
@ -465,6 +465,7 @@ GEM
|
||||||
mimemagic (0.3.0)
|
mimemagic (0.3.0)
|
||||||
mini_portile2 (2.1.0)
|
mini_portile2 (2.1.0)
|
||||||
minitest (5.7.0)
|
minitest (5.7.0)
|
||||||
|
mmap2 (2.2.6)
|
||||||
mousetrap-rails (1.4.6)
|
mousetrap-rails (1.4.6)
|
||||||
multi_json (1.12.1)
|
multi_json (1.12.1)
|
||||||
multi_xml (0.6.0)
|
multi_xml (0.6.0)
|
||||||
|
|
@ -977,6 +978,7 @@ DEPENDENCIES
|
||||||
mail_room (~> 0.9.1)
|
mail_room (~> 0.9.1)
|
||||||
method_source (~> 0.8)
|
method_source (~> 0.8)
|
||||||
minitest (~> 5.7.0)
|
minitest (~> 5.7.0)
|
||||||
|
mmap2 (~> 2.2.6)
|
||||||
mousetrap-rails (~> 1.4.6)
|
mousetrap-rails (~> 1.4.6)
|
||||||
mysql2 (~> 0.3.16)
|
mysql2 (~> 0.3.16)
|
||||||
net-ssh (~> 3.0.1)
|
net-ssh (~> 3.0.1)
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,7 @@ class SessionsController < Devise::SessionsController
|
||||||
end
|
end
|
||||||
# hide the signed-in notification
|
# hide the signed-in notification
|
||||||
flash[:notice] = nil
|
flash[:notice] = nil
|
||||||
|
PromService.instance.login.increment
|
||||||
log_audit_event(current_user, with: authentication_method)
|
log_audit_event(current_user, with: authentication_method)
|
||||||
log_user_activity(current_user)
|
log_user_activity(current_user)
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
@ -13,6 +13,13 @@ if defined?(Unicorn)
|
||||||
# Max memory size (RSS) per worker
|
# Max memory size (RSS) per worker
|
||||||
use Unicorn::WorkerKiller::Oom, min, max
|
use Unicorn::WorkerKiller::Oom, min, max
|
||||||
end
|
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
|
end
|
||||||
|
|
||||||
require ::File.expand_path('../config/environment', __FILE__)
|
require ::File.expand_path('../config/environment', __FILE__)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue