diff options
Diffstat (limited to 'config/initializers/7_prometheus_metrics.rb')
-rw-r--r-- | config/initializers/7_prometheus_metrics.rb | 47 |
1 files changed, 29 insertions, 18 deletions
diff --git a/config/initializers/7_prometheus_metrics.rb b/config/initializers/7_prometheus_metrics.rb index 65ff6b656b9..a304f861db8 100644 --- a/config/initializers/7_prometheus_metrics.rb +++ b/config/initializers/7_prometheus_metrics.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'prometheus/client' # Keep separate directories for separate processes @@ -39,6 +41,32 @@ Sidekiq.configure_server do |config| end if !Rails.env.test? && Gitlab::Metrics.prometheus_metrics_enabled? + # When running Puma in a Single mode, `on_master_start` and `on_worker_start` are the same. + # Thus, we order these events to run `reinitialize_on_pid_change` with `force: true` first. + Gitlab::Cluster::LifecycleEvents.on_master_start do + # Ensure that stale Prometheus metrics don't accumulate over time + Prometheus::CleanupMultiprocDirService.new.execute + + ::Prometheus::Client.reinitialize_on_pid_change(force: true) + + if Gitlab::Runtime.unicorn? + Gitlab::Metrics::Samplers::UnicornSampler.instance(Settings.monitoring.unicorn_sampler_interval).start + elsif Gitlab::Runtime.puma? + Gitlab::Metrics::Samplers::PumaSampler.instance.start + end + + Gitlab::Metrics.gauge(:deployments, 'GitLab Version', {}, :max).set({ version: Gitlab::VERSION }, 1) + + unless Gitlab::Runtime.sidekiq? + Gitlab::Metrics::RequestsRackMiddleware.initialize_metrics + end + + Gitlab::Ci::Parsers.instrument! + rescue IOError => e + Gitlab::ErrorTracking.track_exception(e) + Gitlab::Metrics.error_detected! + end + Gitlab::Cluster::LifecycleEvents.on_worker_start do defined?(::Prometheus::Client.reinitialize_on_pid_change) && Prometheus::Client.reinitialize_on_pid_change @@ -53,25 +81,8 @@ if !Rails.env.test? && Gitlab::Metrics.prometheus_metrics_enabled? if Gitlab.ee? && Gitlab::Runtime.sidekiq? Gitlab::Metrics::Samplers::GlobalSearchSampler.instance.start end - rescue IOError => e - Gitlab::ErrorTracking.track_exception(e) - Gitlab::Metrics.error_detected! - end - - Gitlab::Cluster::LifecycleEvents.on_master_start do - ::Prometheus::Client.reinitialize_on_pid_change(force: true) - - if Gitlab::Runtime.unicorn? - Gitlab::Metrics::Samplers::UnicornSampler.instance(Settings.monitoring.unicorn_sampler_interval).start - elsif Gitlab::Runtime.puma? - Gitlab::Metrics::Samplers::PumaSampler.instance.start - end - Gitlab::Metrics.gauge(:deployments, 'GitLab Version', {}, :max).set({ version: Gitlab::VERSION }, 1) - - unless Gitlab::Runtime.sidekiq? - Gitlab::Metrics::RequestsRackMiddleware.initialize_metrics - end + Gitlab::Ci::Parsers.instrument! rescue IOError => e Gitlab::ErrorTracking.track_exception(e) Gitlab::Metrics.error_detected! |