Sha256: 4c9db9b11b6ba4ba5fae02735d6d3a8bde2d70499ebe4c6d76482fbb8e4ab763
Contents?: true
Size: 1.43 KB
Versions: 1
Compression:
Stored size: 1.43 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 = { Rack::CONTENT_TYPE => 'text/plain; version=0.0.4', Rack::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.dup, [EXPORTERS.to_s]] end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
sidekiq-prometheus-exporter-0.2.1 | lib/sidekiq/prometheus/exporter.rb |