diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-03-15 12:07:44 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-03-15 12:07:44 +0000 |
commit | 6a9ab27963fc1479fe7c78581b942c8dcce322e5 (patch) | |
tree | 8d32f4f66efde1b426658a74d0276e5250091ab7 /metrics_server | |
parent | 389d5aa505a916b0506b7b73dcc3be342d724976 (diff) | |
download | gitlab-ce-6a9ab27963fc1479fe7c78581b942c8dcce322e5.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'metrics_server')
-rw-r--r-- | metrics_server/dependencies.rb | 1 | ||||
-rw-r--r-- | metrics_server/metrics_server.rb | 21 |
2 files changed, 22 insertions, 0 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..5411aaa0b5f 100644 --- a/metrics_server/metrics_server.rb +++ b/metrics_server/metrics_server.rb @@ -5,7 +5,28 @@ 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) |