summaryrefslogtreecommitdiff
path: root/app/services
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzegorz@gitlab.com>2017-06-07 10:46:56 +0000
committerGrzegorz Bizon <grzegorz@gitlab.com>2017-06-07 10:46:56 +0000
commit37dd19935b7fe6942670de41d0da55e6c1d339d5 (patch)
treeb364b3a159e1d70f9a51849fce2a4dd9eb19d3ad /app/services
parent19982333d741119b395ef97fc3cdf7153313fad9 (diff)
parent1c59ba67a539e9ef7298b1c219123200eeb54b01 (diff)
downloadgitlab-ce-37dd19935b7fe6942670de41d0da55e6c1d339d5.tar.gz
Merge branch 'instrument-infra' into 'master'
Add Prometheus metrics endpoint and basic infrastructure to meter code See merge request !11553
Diffstat (limited to 'app/services')
-rw-r--r--app/services/metrics_service.rb33
1 files changed, 33 insertions, 0 deletions
diff --git a/app/services/metrics_service.rb b/app/services/metrics_service.rb
new file mode 100644
index 00000000000..d726db4e99b
--- /dev/null
+++ b/app/services/metrics_service.rb
@@ -0,0 +1,33 @@
+require 'prometheus/client/formats/text'
+
+class MetricsService
+ CHECKS = [
+ Gitlab::HealthChecks::DbCheck,
+ Gitlab::HealthChecks::RedisCheck,
+ Gitlab::HealthChecks::FsShardsCheck
+ ].freeze
+
+ def prometheus_metrics_text
+ Prometheus::Client::Formats::Text.marshal_multiprocess(multiprocess_metrics_path)
+ end
+
+ def health_metrics_text
+ metrics = CHECKS.flat_map(&:metrics)
+
+ formatter.marshal(metrics)
+ end
+
+ def metrics_text
+ "#{health_metrics_text}#{prometheus_metrics_text}"
+ end
+
+ private
+
+ def formatter
+ @formatter ||= Gitlab::HealthChecks::PrometheusTextFormat.new
+ end
+
+ def multiprocess_metrics_path
+ @multiprocess_metrics_path ||= Rails.root.join(ENV['prometheus_multiproc_dir']).freeze
+ end
+end