summaryrefslogtreecommitdiff
path: root/metrics_server
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-03-18 20:02:30 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2022-03-18 20:02:30 +0000
commit41fe97390ceddf945f3d967b8fdb3de4c66b7dea (patch)
tree9c8d89a8624828992f06d892cd2f43818ff5dcc8 /metrics_server
parent0804d2dc31052fb45a1efecedc8e06ce9bc32862 (diff)
downloadgitlab-ce-41fe97390ceddf945f3d967b8fdb3de4c66b7dea.tar.gz
Add latest changes from gitlab-org/gitlab@14-9-stable-eev14.9.0-rc42
Diffstat (limited to 'metrics_server')
-rw-r--r--metrics_server/dependencies.rb1
-rw-r--r--metrics_server/metrics_server.rb23
2 files changed, 22 insertions, 2 deletions
diff --git a/metrics_server/dependencies.rb b/metrics_server/dependencies.rb
index 02cec1173e0..bfa6aae8ef8 100644
--- a/metrics_server/dependencies.rb
+++ b/metrics_server/dependencies.rb
@@ -31,5 +31,6 @@ require_relative '../lib/gitlab/metrics/exporter/gc_request_middleware'
require_relative '../lib/gitlab/health_checks/probes/collection'
require_relative '../lib/gitlab/health_checks/probes/status'
require_relative '../lib/gitlab/process_management'
+require_relative '../lib/gitlab/process_supervisor'
# rubocop:enable Naming/FileName
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)