2017-05-23 13:42:36 +00:00
|
|
|
require 'prometheus/client/formats/text'
|
|
|
|
|
|
|
|
class MetricsService
|
|
|
|
CHECKS = [
|
|
|
|
Gitlab::HealthChecks::DbCheck,
|
2017-07-11 03:35:47 +00:00
|
|
|
Gitlab::HealthChecks::Redis::RedisCheck,
|
|
|
|
Gitlab::HealthChecks::Redis::CacheCheck,
|
|
|
|
Gitlab::HealthChecks::Redis::QueuesCheck,
|
|
|
|
Gitlab::HealthChecks::Redis::SharedStateCheck,
|
2017-05-23 13:42:36 +00:00
|
|
|
Gitlab::HealthChecks::FsShardsCheck
|
|
|
|
].freeze
|
|
|
|
|
|
|
|
def prometheus_metrics_text
|
|
|
|
Prometheus::Client::Formats::Text.marshal_multiprocess(multiprocess_metrics_path)
|
|
|
|
end
|
|
|
|
|
|
|
|
def health_metrics_text
|
2017-05-29 12:19:43 +00:00
|
|
|
metrics = CHECKS.flat_map(&:metrics)
|
2017-05-23 13:42:36 +00:00
|
|
|
|
2017-05-29 12:19:43 +00:00
|
|
|
formatter.marshal(metrics)
|
|
|
|
end
|
2017-05-23 13:42:36 +00:00
|
|
|
|
2017-05-29 12:19:43 +00:00
|
|
|
def metrics_text
|
2017-06-02 13:55:44 +00:00
|
|
|
"#{health_metrics_text}#{prometheus_metrics_text}"
|
2017-05-23 13:42:36 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
private
|
|
|
|
|
2017-05-29 12:19:43 +00:00
|
|
|
def formatter
|
2017-05-29 21:23:19 +00:00
|
|
|
@formatter ||= Gitlab::HealthChecks::PrometheusTextFormat.new
|
2017-05-29 12:19:43 +00:00
|
|
|
end
|
|
|
|
|
2017-05-23 13:42:36 +00:00
|
|
|
def multiprocess_metrics_path
|
2017-07-19 08:54:39 +00:00
|
|
|
::Prometheus::Client.configuration.multiprocess_files_dir
|
2017-05-23 13:42:36 +00:00
|
|
|
end
|
|
|
|
end
|