diff --git a/app/views/admin/application_settings/_form.html.haml b/app/views/admin/application_settings/_form.html.haml index d552704df88056bd3612f409012f349f66da2205..d30ab0c0eaab6ac4740786712f88c7778f04178c 100644 --- a/app/views/admin/application_settings/_form.html.haml +++ b/app/views/admin/application_settings/_form.html.haml @@ -310,6 +310,10 @@ = f.label :prometheus_metrics_enabled do = f.check_box :prometheus_metrics_enabled Enable Prometheus Metrics + - if !Gitlab::Metrics.metrics_folder_present? + .help-block + %strong.cred WARNING: + Environment variable `prometheus_multiproc_dir` does not exist or is not pointing to a valid directory. %fieldset %legend Background Jobs diff --git a/config.ru b/config.ru index 89aba462f1961909212c00858824510cff3f9120..065ce59932f2ff8c832589bd20e19ae4defc4394 100644 --- a/config.ru +++ b/config.ru @@ -15,9 +15,6 @@ if defined?(Unicorn) end end -# set default directory for multiproces metrics gathering -ENV['prometheus_multiproc_dir'] ||= 'tmp/prometheus_multiproc_dir' - require ::File.expand_path('../config/environment', __FILE__) map ENV['RAILS_RELATIVE_URL_ROOT'] || "/" do diff --git a/config/boot.rb b/config/boot.rb index 17a7114837028aa9ac90e9fea07db8de232ccb17..7e8de3b6da3e7e7fc54b65c75d7d238ece8990b6 100644 --- a/config/boot.rb +++ b/config/boot.rb @@ -5,6 +5,11 @@ require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE']) +# set default directory for multiproces metrics gathering +unless ENV['RAILS_ENV'] == 'production' || ENV['RAILS_ENV'] == 'staging' + ENV['prometheus_multiproc_dir'] ||= 'tmp/prometheus_multiproc_dir' +end + # Default Bootsnap configuration from https://github.com/Shopify/bootsnap#usage require 'bootsnap' Bootsnap.setup( diff --git a/lib/gitlab/metrics/prometheus.rb b/lib/gitlab/metrics/prometheus.rb index 606865093324fe7285fd4cbae746b220e7180eed..c7a2ae03508a598e3356692ba0b609f69c0deadb 100644 --- a/lib/gitlab/metrics/prometheus.rb +++ b/lib/gitlab/metrics/prometheus.rb @@ -5,8 +5,12 @@ module Metrics module Prometheus include Gitlab::CurrentSettings + def metrics_folder_present? + ENV.has_key?('prometheus_multiproc_dir') && ::Dir.exist?(ENV['prometheus_multiproc_dir']) + end + def prometheus_metrics_enabled? - @prometheus_metrics_enabled ||= current_application_settings[:prometheus_metrics_enabled] || false + @prometheus_metrics_enabled ||= metrics_folder_present? || current_application_settings[:prometheus_metrics_enabled] || false end def registry