class Evil::Metrics::Prometheus::Exporter

Public Class Methods

start_metrics_server!() click to toggle source
# File lib/evil/metrics/prometheus/exporter.rb, line 10
def start_metrics_server!
  Thread.new do
    default_port = ENV.fetch("PORT", 9310)
    Rack::Handler::WEBrick.run(
      rack_app,
      Host: ENV["PROMETHEUS_EXPORTER_BIND"] || "0.0.0.0",
      Port: ENV.fetch("PROMETHEUS_EXPORTER_PORT", default_port),
      AccessLog: [],
    )
  end
end

Protected Class Methods

rack_app(exporter = self) click to toggle source
# File lib/evil/metrics/prometheus/exporter.rb, line 24
def rack_app(exporter = self)
  Rack::Builder.new do
    use Rack::CommonLogger
    use Rack::ShowExceptions
    use exporter, registry: Evil::Metrics::Prometheus.registry
    run ->(_env) do
      [404, { "Content-Type" => "text/plain" }, ["Not Found\n"]]
    end
  end
end

Public Instance Methods

call(env) click to toggle source
Calls superclass method
# File lib/evil/metrics/prometheus/exporter.rb, line 36
def call(env)
  if env["REQUEST_PATH"].start_with?(path)
    Evil::Metrics.collectors.each(&:call)
  end
  super
end