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
4 changed files with 26 additions and 0 deletions
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
16
app/services/prom_service.rb
Normal file
16
app/services/prom_service.rb
Normal file
|
@ -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
|
||||
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__)
|
||||
|
|
Loading…
Reference in a new issue