Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-01-12 00:09:40 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-01-12 00:09:40 +0300
commit213f46f188c29e9c442df61530110e172a7e819e (patch)
tree8544300e523c4e8cc3955406fa58e2d4b8ded773 /metrics_server
parent33f7ef81fd6bcab7bbdf0bc3f37d337256fb11fb (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'metrics_server')
-rw-r--r--metrics_server/metrics_server.rb39
-rw-r--r--metrics_server/settings_overrides.rb2
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