Class: Bigcommerce::Prometheus::Server
- Inherits:
-
Object
- Object
- Bigcommerce::Prometheus::Server
- Defined in:
- lib/bigcommerce/prometheus/server.rb
Overview
Server implementation for Prometheus
Instance Method Summary collapse
-
#add_type_collector(collector) ⇒ Object
Add a type collector to this server.
-
#initialize(host: nil, port: nil, timeout: nil, prefix: nil, logger: nil) ⇒ Server
constructor
A new instance of Server.
-
#running? ⇒ Boolean
Whether or not the server is running.
-
#start ⇒ Object
Start the server.
-
#start_until_stopped ⇒ Object
Start the server and run it until stopped.
-
#stop ⇒ Object
Stop the server.
Constructor Details
#initialize(host: nil, port: nil, timeout: nil, prefix: nil, logger: nil) ⇒ Server
Returns a new instance of Server.
30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/bigcommerce/prometheus/server.rb', line 30 def initialize(host: nil, port: nil, timeout: nil, prefix: nil, logger: nil) @host = host || ::Bigcommerce::Prometheus.server_host @port = (port || ::Bigcommerce::Prometheus.server_port).to_i @timeout = (timeout || ::Bigcommerce::Prometheus.server_timeout).to_i @prefix = (prefix || ::PrometheusExporter::DEFAULT_PREFIX).to_s @process_name = ::Bigcommerce::Prometheus.process_name @logger = logger || ::Bigcommerce::Prometheus.logger @server = ::Bigcommerce::Prometheus::Servers::Thin::Server.new(port: @port, timeout: @timeout, logger: @logger) @running = false ::PrometheusExporter::Metric::Base.default_prefix = @prefix setup_signal_handlers end |
Instance Method Details
#add_type_collector(collector) ⇒ Object
Add a type collector to this server
99 100 101 102 |
# File 'lib/bigcommerce/prometheus/server.rb', line 99 def add_type_collector(collector) @logger.info "[bigcommerce-prometheus][#{@process_name}] Registering collector #{collector&.type}" @server.add_type_collector(collector) end |
#running? ⇒ Boolean
Whether or not the server is running
90 91 92 |
# File 'lib/bigcommerce/prometheus/server.rb', line 90 def running? @running end |
#start ⇒ Object
Start the server
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/bigcommerce/prometheus/server.rb', line 46 def start @logger.info "[bigcommerce-prometheus][#{@process_name}] Starting prometheus exporter on port #{@host}:#{@port}" @run_thread = ::Thread.start do @server.start end @running = true @logger.info "[bigcommerce-prometheus][#{@process_name}] Prometheus exporter started on #{@host}:#{@port}" @server rescue ::StandardError => e @logger.error "[bigcommerce-prometheus][#{@process_name}] Failed to start exporter: #{e.}" stop end |
#start_until_stopped ⇒ Object
Start the server and run it until stopped
65 66 67 68 69 70 71 |
# File 'lib/bigcommerce/prometheus/server.rb', line 65 def start_until_stopped start yield @run_thread.join rescue StandardError => e @logger.error "[bigcommerce-prometheus] Server crashed: #{e.}" end |
#stop ⇒ Object
Stop the server
76 77 78 79 80 81 82 83 |
# File 'lib/bigcommerce/prometheus/server.rb', line 76 def stop @server.stop! @run_thread.kill @running = false @logger.info "[bigcommerce-prometheus][#{@process_name}] Prometheus exporter cleanly shut down" rescue ::StandardError => e @logger.error "[bigcommerce-prometheus][#{@process_name}] Failed to stop exporter: #{e.}" end |