diff options
author | Grzegorz Bizon <grzegorz@gitlab.com> | 2017-06-07 10:46:56 +0000 |
---|---|---|
committer | Grzegorz Bizon <grzegorz@gitlab.com> | 2017-06-07 10:46:56 +0000 |
commit | 37dd19935b7fe6942670de41d0da55e6c1d339d5 (patch) | |
tree | b364b3a159e1d70f9a51849fce2a4dd9eb19d3ad /app/services | |
parent | 19982333d741119b395ef97fc3cdf7153313fad9 (diff) | |
parent | 1c59ba67a539e9ef7298b1c219123200eeb54b01 (diff) | |
download | gitlab-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.rb | 33 |
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 |