69 lines
1.6 KiB
Ruby
69 lines
1.6 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Gitlab
|
|
module Metrics
|
|
module Exporter
|
|
class WebExporter < BaseExporter
|
|
ExporterCheck = Struct.new(:exporter) do
|
|
def readiness
|
|
Gitlab::HealthChecks::Result.new(
|
|
'web_exporter', exporter.running)
|
|
end
|
|
|
|
def available?
|
|
true
|
|
end
|
|
end
|
|
|
|
RailsMetricsInitializer = Struct.new(:app) do
|
|
def call(env)
|
|
Gitlab::Metrics::RailsSlis.initialize_request_slis_if_needed!
|
|
|
|
app.call(env)
|
|
end
|
|
end
|
|
|
|
attr_reader :running
|
|
|
|
# This exporter is always run on master process
|
|
def initialize(**options)
|
|
super(Settings.monitoring.web_exporter, log_enabled: true, log_file: 'web_exporter.log', **options)
|
|
|
|
# DEPRECATED:
|
|
# these `readiness_checks` are deprecated
|
|
# as presenting no value in a way how we run
|
|
# application: https://gitlab.com/gitlab-org/gitlab/issues/35343
|
|
self.readiness_checks = [
|
|
WebExporter::ExporterCheck.new(self),
|
|
Gitlab::HealthChecks::PumaCheck
|
|
]
|
|
end
|
|
|
|
def mark_as_not_running!
|
|
@running = false
|
|
end
|
|
|
|
private
|
|
|
|
def rack_app
|
|
app = super
|
|
|
|
Rack::Builder.app do
|
|
use RailsMetricsInitializer
|
|
run app
|
|
end
|
|
end
|
|
|
|
def start_working
|
|
@running = true
|
|
super
|
|
end
|
|
|
|
def stop_working
|
|
mark_as_not_running!
|
|
super
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|