diff options
Diffstat (limited to 'metrics_server/metrics_server.rb')
-rw-r--r-- | metrics_server/metrics_server.rb | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/metrics_server/metrics_server.rb b/metrics_server/metrics_server.rb index 70769459019..2aadc63d65d 100644 --- a/metrics_server/metrics_server.rb +++ b/metrics_server/metrics_server.rb @@ -2,10 +2,29 @@ require_relative '../config/boot' -require_relative 'dependencies' - class MetricsServer # rubocop:disable Gitlab/NamespacedClass + # The singleton instance used to supervise the Puma metrics server. + PumaProcessSupervisor = Class.new(Gitlab::ProcessSupervisor) + class << self + def start_for_puma + metrics_dir = ::Prometheus::Client.configuration.multiprocess_files_dir + + start_server = proc do + MetricsServer.spawn('puma', metrics_dir: metrics_dir).tap do |pid| + Gitlab::AppLogger.info("Starting Puma metrics server with pid #{pid}") + end + end + + supervisor = PumaProcessSupervisor.instance + supervisor.supervise(start_server.call) do + next unless supervisor.alive + + Gitlab::AppLogger.info('Puma metrics server terminated, restarting...') + start_server.call + end + end + def spawn(target, metrics_dir:, gitlab_config: nil, wipe_metrics_dir: false) ensure_valid_target!(target) |