From 57ae2f7e2d56a38140ae66915885567d361e240a Mon Sep 17 00:00:00 2001 From: Aleksei Lipniagov Date: Tue, 2 Jul 2019 10:36:33 +0300 Subject: [PATCH] Use separate Prometheus metrics dirs in dev/test Store Sidekiq and Web server metrics from Prometheus in separate directories in `development` and `test` environments. --- config/initializers/7_prometheus_metrics.rb | 20 +++++++++++++++---- tmp/prometheus_multiproc_dir/puma/.gitkeep | 0 tmp/prometheus_multiproc_dir/sidekiq/.gitkeep | 0 tmp/prometheus_multiproc_dir/unicorn/.gitkeep | 0 4 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 tmp/prometheus_multiproc_dir/puma/.gitkeep create mode 100644 tmp/prometheus_multiproc_dir/sidekiq/.gitkeep create mode 100644 tmp/prometheus_multiproc_dir/unicorn/.gitkeep diff --git a/config/initializers/7_prometheus_metrics.rb b/config/initializers/7_prometheus_metrics.rb index 54cdefc2a10..d70d83b24d9 100644 --- a/config/initializers/7_prometheus_metrics.rb +++ b/config/initializers/7_prometheus_metrics.rb @@ -1,15 +1,27 @@ require 'prometheus/client' require 'prometheus/client/support/unicorn' +# Keep separate directories for separate processes +def prometheus_default_multiproc_dir + return unless Rails.env.development? || Rails.env.test? + + if Sidekiq.server? + Rails.root.join('tmp/prometheus_multiproc_dir/sidekiq') + elsif defined?(Unicorn::Worker) + Rails.root.join('tmp/prometheus_multiproc_dir/unicorn') + elsif defined?(::Puma) + Rails.root.join('tmp/prometheus_multiproc_dir/puma') + else + Rails.root.join('tmp/prometheus_multiproc_dir') + end +end + Prometheus::Client.configure do |config| config.logger = Rails.logger config.initial_mmap_file_size = 4 * 1024 - config.multiprocess_files_dir = ENV['prometheus_multiproc_dir'] - if Rails.env.development? || Rails.env.test? - config.multiprocess_files_dir ||= Rails.root.join('tmp/prometheus_multiproc_dir') - end + config.multiprocess_files_dir = ENV['prometheus_multiproc_dir'] || prometheus_default_multiproc_dir config.pid_provider = Prometheus::Client::Support::Unicorn.method(:worker_pid_provider) end diff --git a/tmp/prometheus_multiproc_dir/puma/.gitkeep b/tmp/prometheus_multiproc_dir/puma/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tmp/prometheus_multiproc_dir/sidekiq/.gitkeep b/tmp/prometheus_multiproc_dir/sidekiq/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tmp/prometheus_multiproc_dir/unicorn/.gitkeep b/tmp/prometheus_multiproc_dir/unicorn/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d