diff --git a/Gemfile b/Gemfile index ab01b6b72dafc91d6e70b8b4c2d5f25dbbca7802..864e514ae0d4e7eb58003cc6adc0040ef8a5b6bb 100644 --- a/Gemfile +++ b/Gemfile @@ -326,7 +326,7 @@ group :metrics do gem 'influxdb', '~> 0.2', require: false # Prometheus - gem 'prometheus-client-mmap', '~> 0.9.9' + gem 'prometheus-client-mmap', '~> 0.9.10' gem 'raindrops', '~> 0.18' end diff --git a/Gemfile.lock b/Gemfile.lock index 6fd74c1da7831d5accc5ad5d3baeb9e1ba780507..fec34622be3902b51efc8e775942b7ee9db95aaa 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -715,7 +715,7 @@ GEM parser unparser procto (0.0.3) - prometheus-client-mmap (0.9.9) + prometheus-client-mmap (0.9.10) pry (0.11.3) coderay (~> 1.1.0) method_source (~> 0.9.0) @@ -1250,7 +1250,7 @@ DEPENDENCIES org-ruby (~> 0.9.12) pg (~> 1.1) premailer-rails (~> 1.9.7) - prometheus-client-mmap (~> 0.9.9) + prometheus-client-mmap (~> 0.9.10) pry-byebug (~> 3.5.1) pry-rails (~> 0.3.4) puma (~> 3.12) diff --git a/config/initializers/7_prometheus_metrics.rb b/config/initializers/7_prometheus_metrics.rb index 143b34b5368fd298589b9afb33a896500ec558d8..6bd2256ac0ed6747b26054a1159651087c8d26eb 100644 --- a/config/initializers/7_prometheus_metrics.rb +++ b/config/initializers/7_prometheus_metrics.rb @@ -47,10 +47,12 @@ def prometheus_default_multiproc_dir end Gitlab::Cluster::LifecycleEvents.on_master_start do + ::Prometheus::Client.reinitialize_on_pid_change(force: true) + if defined?(::Unicorn) - Gitlab::Metrics::Samplers::UnicornSampler.initialize_instance(Settings.monitoring.unicorn_sampler_interval).start + Gitlab::Metrics::Samplers::UnicornSampler.instance(Settings.monitoring.unicorn_sampler_interval).start elsif defined?(::Puma) - Gitlab::Metrics::Samplers::PumaSampler.initialize_instance(Settings.monitoring.puma_sampler_interval).start + Gitlab::Metrics::Samplers::PumaSampler.instance(Settings.monitoring.puma_sampler_interval).start end end end diff --git a/ee/changelogs/unreleased/66889-reset-and-reinitialize-prometheus-client-on-master-start.yml b/ee/changelogs/unreleased/66889-reset-and-reinitialize-prometheus-client-on-master-start.yml new file mode 100644 index 0000000000000000000000000000000000000000..a046f1a0363d79569c992d03fd30426af073700f --- /dev/null +++ b/ee/changelogs/unreleased/66889-reset-and-reinitialize-prometheus-client-on-master-start.yml @@ -0,0 +1,5 @@ +--- +title: Reinitialize metrics files on webserver master process start +merge_request: 16623 +author: +type: fixed diff --git a/lib/gitlab/daemon.rb b/lib/gitlab/daemon.rb index 2f4ae010e7407c13cb6595245a9992e02a92cc09..43c159fee27b5da2e21d191d6ba4cca370c340a1 100644 --- a/lib/gitlab/daemon.rb +++ b/lib/gitlab/daemon.rb @@ -10,8 +10,8 @@ def self.initialize_instance(*args) @instance end - def self.instance - @instance ||= initialize_instance + def self.instance(*args) + @instance ||= initialize_instance(*args) end attr_reader :thread