diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-01-12 00:09:40 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-01-12 00:09:40 +0300 |
commit | 213f46f188c29e9c442df61530110e172a7e819e (patch) | |
tree | 8544300e523c4e8cc3955406fa58e2d4b8ded773 /metrics_server | |
parent | 33f7ef81fd6bcab7bbdf0bc3f37d337256fb11fb (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'metrics_server')
-rw-r--r-- | metrics_server/metrics_server.rb | 39 | ||||
-rw-r--r-- | metrics_server/settings_overrides.rb | 2 |
2 files changed, 24 insertions, 17 deletions
diff --git a/metrics_server/metrics_server.rb b/metrics_server/metrics_server.rb index a324b034b5e..269d03f6d0c 100644 --- a/metrics_server/metrics_server.rb +++ b/metrics_server/metrics_server.rb @@ -38,8 +38,7 @@ class MetricsServer # rubocop:disable Gitlab/NamespacedClass def spawn(target, metrics_dir:, **options) return spawn_ruby_server(target, metrics_dir: metrics_dir, **options) unless new_metrics_server? - name = settings_key(target) - settings = ::Settings.monitoring[name] + settings = settings_value(target) path = options[:path]&.then { |p| Pathname.new(p) } || Pathname.new('') cmd = path.join('gitlab-metrics-exporter').to_path env = { @@ -51,7 +50,7 @@ class MetricsServer # rubocop:disable Gitlab/NamespacedClass } if settings['log_enabled'] - env['GME_LOG_FILE'] = File.join(Rails.root, 'log', "#{name}.log") + env['GME_LOG_FILE'] = File.join(Rails.root, 'log', "#{name(target)}.log") env['GME_LOG_LEVEL'] = 'info' else env['GME_LOG_LEVEL'] = 'quiet' @@ -106,8 +105,27 @@ class MetricsServer # rubocop:disable Gitlab/NamespacedClass pid end + def name(target) + case target + when 'puma' then 'web_exporter' + when 'sidekiq' then 'sidekiq_exporter' + else ensure_valid_target!(target) + end + end + private + # We need to use `.` (dot) notation to access the updates we did in `config/initializers/1_settings.rb` + # For that reason, avoid using `[]` ("optional/dynamic settings notation") to resolve it dynamically. + # Refer to https://gitlab.com/gitlab-org/gitlab/-/issues/386865 + def settings_value(target) + case target + when 'puma' then ::Settings.monitoring.web_exporter + when 'sidekiq' then ::Settings.monitoring.sidekiq_exporter + else ensure_valid_target!(target) + end + end + def new_metrics_server? Gitlab::Utils.to_boolean(ENV['GITLAB_GOLANG_METRICS_SERVER']) end @@ -115,14 +133,6 @@ class MetricsServer # rubocop:disable Gitlab/NamespacedClass def ensure_valid_target!(target) raise "Target must be one of [puma,sidekiq]" unless %w(puma sidekiq).include?(target) end - - def settings_key(target) - case target - when 'puma' then 'web_exporter' - when 'sidekiq' then 'sidekiq_exporter' - else ensure_valid_target!(target) - end - end end def initialize(target, metrics_dir, wipe_metrics_dir) @@ -152,7 +162,7 @@ class MetricsServer # rubocop:disable Gitlab/NamespacedClass when 'puma' Gitlab::Metrics::Exporter::WebExporter.instance(**default_opts) when 'sidekiq' - settings = Settings.new(Settings.monitoring[name]) + settings = Settings.new(Settings.monitoring.sidekiq_exporter) Gitlab::Metrics::Exporter::SidekiqExporter.instance(settings, **default_opts) end @@ -160,9 +170,6 @@ class MetricsServer # rubocop:disable Gitlab/NamespacedClass end def name - case @target - when 'puma' then 'web_exporter' - when 'sidekiq' then 'sidekiq_exporter' - end + self.class.name(@target) end end diff --git a/metrics_server/settings_overrides.rb b/metrics_server/settings_overrides.rb index b3fd39229d5..d6c8fc79941 100644 --- a/metrics_server/settings_overrides.rb +++ b/metrics_server/settings_overrides.rb @@ -7,7 +7,7 @@ # to all necessary constants. For example, we need Rails.root to # determine the location of bin/metrics-server. # Here we make the necessary constants available conditionally. -require_relative 'override_rails_constants' unless Object.const_defined?('Rails') +require_relative 'override_rails_constants' unless Object.const_defined?(:Rails) # We need to supply this outside of Rails because: # RubySampler needs Gitlab::Metrics needs Gitlab::Metrics::Prometheus needs Gitlab::CurrentSettings needs ::Settings |