40 lines
851 B
Ruby
40 lines
851 B
Ruby
|
require 'webrick'
|
||
|
require 'prometheus/client/rack/exporter'
|
||
|
|
||
|
module Gitlab
|
||
|
module Metrics
|
||
|
class SidekiqMetricsExporter < Daemon
|
||
|
def enabled?
|
||
|
Gitlab::Metrics.metrics_folder_present? && settings.enabled
|
||
|
end
|
||
|
|
||
|
def settings
|
||
|
Settings.monitoring.sidekiq_exporter
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
attr_reader :server
|
||
|
|
||
|
def start_working
|
||
|
@server = ::WEBrick::HTTPServer.new(Port: settings.port, BindAddress: settings.address)
|
||
|
server.mount "/", Rack::Handler::WEBrick, rack_app
|
||
|
server.start
|
||
|
end
|
||
|
|
||
|
def stop_working
|
||
|
server.shutdown
|
||
|
@server = nil
|
||
|
end
|
||
|
|
||
|
def rack_app
|
||
|
Rack::Builder.app do
|
||
|
use Rack::Deflater
|
||
|
use ::Prometheus::Client::Rack::Exporter
|
||
|
run -> (env) { [404, {}, ['']] }
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|