2019-12-21 20:55:43 +05:30
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
module Gitlab
|
|
|
|
module HealthChecks
|
|
|
|
# This check can only be run on Puma `master` process
|
|
|
|
class PumaCheck
|
|
|
|
extend SimpleAbstractCheck
|
|
|
|
|
|
|
|
class << self
|
|
|
|
private
|
|
|
|
|
|
|
|
def metric_prefix
|
|
|
|
'puma_check'
|
|
|
|
end
|
|
|
|
|
|
|
|
def successful?(result)
|
|
|
|
result > 0
|
|
|
|
end
|
|
|
|
|
|
|
|
def check
|
2020-03-13 15:44:24 +05:30
|
|
|
return unless Gitlab::Runtime.puma?
|
2019-12-21 20:55:43 +05:30
|
|
|
|
|
|
|
stats = Puma.stats
|
2020-05-24 23:13:21 +05:30
|
|
|
stats = Gitlab::Json.parse(stats)
|
2019-12-21 20:55:43 +05:30
|
|
|
|
|
|
|
# If `workers` is missing this means that
|
|
|
|
# Puma server is running in single mode
|
|
|
|
stats.fetch('workers', 1)
|
|
|
|
rescue NoMethodError
|
|
|
|
# server is not ready
|
|
|
|
0
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|