Sha256: 8b46bf994d125e20f29763fcbc69223224ea47d9022a819f9d80c60d712df273
Contents?: true
Size: 1.4 KB
Versions: 2
Compression:
Stored size: 1.4 KB
Contents
# frozen_string_literal: true require 'sidekiq/prometheus/exporter/version' require 'sidekiq/prometheus/exporter/exporters' module Sidekiq module Prometheus # Expose Prometheus metrics via Rack application or Sidekiq::Web application module Exporter REQUEST_VERB = 'GET'.freeze REQUEST_METHOD = 'REQUEST_METHOD'.freeze NOT_FOUND_TEXT = 'Not Found'.freeze MOUNT_PATH = '/metrics'.freeze HEADERS = {'Content-Type' => 'text/plain; version=0.0.4', 'Cache-Control' => 'no-cache'}.freeze EXPORTERS = Exporters.new class << self def banner exporters = EXPORTERS.enabled .map { |klass| " - #{klass.name.split('::').last.downcase}" } .join("\n".freeze) "Enabled Sidekiq Prometheus exporters:\n#{exporters}" end def configure yield(EXPORTERS) end def registered(app) app.get(MOUNT_PATH) do Sidekiq::Prometheus::Exporter.call(REQUEST_METHOD => REQUEST_VERB) end end def to_app Rack::Builder.app do map(MOUNT_PATH) do run Sidekiq::Prometheus::Exporter end end end def call(env) return [404, HEADERS, [NOT_FOUND_TEXT]] if env[REQUEST_METHOD] != REQUEST_VERB [200, HEADERS, [EXPORTERS.to_s]] end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
sidekiq-prometheus-exporter-0.1.12 | lib/sidekiq/prometheus/exporter.rb |
sidekiq-prometheus-exporter-0.1.11 | lib/sidekiq/prometheus/exporter.rb |