# frozen_string_literal: true require "prometheus/client/formats/text" class MetricsController < ActionController::API include ActionController::MimeResponds def show fetch_sidekiq_metrics render plain: metrics end private SIDEKIQ_STATS_METHODS = %i[ processed failed scheduled_size retry_size dead_size processes_size ].freeze def fetch_sidekiq_metrics stats = Sidekiq::Stats.new SIDEKIQ_STATS_METHODS.each do |key| Retrospring::Metrics::SIDEKIQ[key].set stats.public_send(key) end stats.queues.each do |queue, value| Retrospring::Metrics::SIDEKIQ[:queue_enqueued].set value, labels: { queue: } end end def metrics Prometheus::Client::Formats::Text.marshal(Retrospring::Metrics::PROMETHEUS) end end