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>2021-12-03 06:14:42 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-12-03 06:14:42 +0300
commitc657078ecb4bff69e58f6911713e143c99f2c71f (patch)
tree5a4dc8bf80b14c3202de9c7bd51363f3d73af541 /metrics_server/metrics_server.rb
parent498ba9dc41fcf2b4be30a8f3721543953efb3c3b (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'metrics_server/metrics_server.rb')
-rw-r--r--metrics_server/metrics_server.rb41
1 files changed, 41 insertions, 0 deletions
diff --git a/metrics_server/metrics_server.rb b/metrics_server/metrics_server.rb
new file mode 100644
index 00000000000..09171d8220b
--- /dev/null
+++ b/metrics_server/metrics_server.rb
@@ -0,0 +1,41 @@
+# frozen_string_literal: true
+
+require_relative '../config/bundler_setup'
+
+require_relative 'dependencies'
+
+class MetricsServer # rubocop:disable Gitlab/NamespacedClass
+ class << self
+ def spawn(target, gitlab_config: nil)
+ cmd = "#{Rails.root}/bin/metrics-server"
+ env = {
+ 'METRICS_SERVER_TARGET' => target,
+ 'GITLAB_CONFIG' => gitlab_config
+ }
+
+ Process.spawn(env, cmd, err: $stderr, out: $stdout).tap do |pid|
+ Process.detach(pid)
+ end
+ end
+ end
+
+ def initialize(target, metrics_dir)
+ @target = target
+ @metrics_dir = metrics_dir
+ end
+
+ def start
+ ::Prometheus::Client.configure do |config|
+ config.multiprocess_files_dir = @metrics_dir
+ end
+
+ FileUtils.mkdir_p(@metrics_dir, mode: 0700)
+ ::Prometheus::CleanupMultiprocDirService.new.execute
+
+ settings = Settings.monitoring.sidekiq_exporter
+ exporter_class = "Gitlab::Metrics::Exporter::#{@target.camelize}Exporter".constantize
+ server = exporter_class.instance(settings, synchronous: true)
+
+ server.start
+ end
+end