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
 |