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 =
NOTE: Every version update dropds Docker patch version to 0
and every adjustment in Docker setup bumps it to +1
'0.2.0'.freeze
- DOCKER_PATCH_VERSION =
'0'.freeze
Class Method Summary collapse
- .banner ⇒ Object
- .call(env) ⇒ Object
- .configure {|EXPORTERS| ... } ⇒ Object
- .registered(app) ⇒ Object
- .to_app ⇒ Object
Class Method Details
.banner ⇒ Object
20 21 22 23 24 25 26 27 |
# File 'lib/sidekiq/prometheus/exporter.rb', line 20 def 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
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_app ⇒ Object
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 |