Commit e4fb1621 authored by Kevin Lyda's avatar Kevin Lyda Committed by Pawel Chojnacki

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.
parent f1cb0991
......@@ -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
......
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__)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment