Module: Sidekiq::Prometheus::Exporter

Defined in:
lib/sidekiq/prometheus/exporter.rb,
lib/sidekiq/prometheus/exporter/cron.rb,
lib/sidekiq/prometheus/exporter/version.rb,
lib/sidekiq/prometheus/exporter/standard.rb,
lib/sidekiq/prometheus/exporter/exporters.rb,
lib/sidekiq/prometheus/exporter/scheduler.rb

Overview

Expose Prometheus metrics via Rack application or Sidekiq::Web application

Defined Under Namespace

Classes: Cron, Exporters, Scheduler, Standard

Constant Summary collapse

REQUEST_VERB =
'GET'.freeze
REQUEST_METHOD =
'REQUEST_METHOD'.freeze
NOT_FOUND_TEXT =
'Not Found'.freeze
MOUNT_PATH =
'/metrics'.freeze
HEADERS =

rubocop:disable Style/MutableConstant

{Rack::CONTENT_TYPE => 'text/plain; version=0.0.4', Rack::CACHE_CONTROL => 'no-cache'}
EXPORTERS =

rubocop:enable Style/MutableConstant

Exporters.new
VERSION =
'0.1.17'.freeze

Class Method Summary collapse

Class Method Details



20
21
22
23
24
25
26
27
# File 'lib/sidekiq/prometheus/exporter.rb', line 20

def banner
  exporters =
    EXPORTERS.enabled
      .map { |klass| "  - #{klass.name.split('::').last.downcase}" }
      .join("\n".freeze)

  "Enabled Sidekiq Prometheus exporters:\n#{exporters}"
end

.call(env) ⇒ Object



47
48
49
50
51
# File 'lib/sidekiq/prometheus/exporter.rb', line 47

def call(env)
  return [404, HEADERS, [NOT_FOUND_TEXT]] if env[REQUEST_METHOD] != REQUEST_VERB

  [200, HEADERS, [EXPORTERS.to_s]]
end

.configure {|EXPORTERS| ... } ⇒ Object

Yields:



29
30
31
# File 'lib/sidekiq/prometheus/exporter.rb', line 29

def configure
  yield(EXPORTERS)
end

.registered(app) ⇒ Object



33
34
35
36
37
# File 'lib/sidekiq/prometheus/exporter.rb', line 33

def registered(app)
  app.get(MOUNT_PATH) do
    Sidekiq::Prometheus::Exporter.call(REQUEST_METHOD => REQUEST_VERB)
  end
end

.to_appObject



39
40
41
42
43
44
45
# File 'lib/sidekiq/prometheus/exporter.rb', line 39

def to_app
  Rack::Builder.app do
    map(MOUNT_PATH) do
      run Sidekiq::Prometheus::Exporter
    end
  end
end