40 lines
950 B
Ruby
40 lines
950 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Gitlab
|
|
module SidekiqMiddleware
|
|
class ClientMetrics
|
|
include ::Gitlab::SidekiqMiddleware::MetricsHelper
|
|
|
|
ENQUEUED = :sidekiq_enqueued_jobs_total
|
|
|
|
def initialize
|
|
@metrics = init_metrics
|
|
end
|
|
|
|
def call(worker_class, job, queue, _redis_pool)
|
|
# worker_class can either be the string or class of the worker being enqueued.
|
|
worker_class = worker_class.to_s.safe_constantize
|
|
|
|
labels = create_labels(worker_class, queue, job)
|
|
if job.key?('at')
|
|
labels[:scheduling] = 'delayed'
|
|
job[:scheduled_at] = job['at']
|
|
else
|
|
labels[:scheduling] = 'immediate'
|
|
end
|
|
|
|
@metrics.fetch(ENQUEUED).increment(labels, 1)
|
|
|
|
yield
|
|
end
|
|
|
|
private
|
|
|
|
def init_metrics
|
|
{
|
|
ENQUEUED => ::Gitlab::Metrics.counter(ENQUEUED, 'Sidekiq jobs enqueued')
|
|
}
|
|
end
|
|
end
|
|
end
|
|
end
|