Module: Gitlab::Metrics::SidekiqSlis

Defined in:
lib/gitlab/metrics/sidekiq_slis.rb

Constant Summary collapse

EXECUTION_URGENCY_DURATIONS =
{
  "high" => 10,
  "low" => 300,
  "throttled" => 300
}.freeze
QUEUEING_URGENCY_DURATIONS =
{
  "high" => 10,
  "low" => 60,
  "throttled" => Float::INFINITY # no queueing target duration for throttled urgency
}.freeze
DEFAULT_EXECUTION_URGENCY_DURATION =

workers without urgency attribute have “low” urgency by default in WorkerAttributes.get_urgency, just mirroring it here

EXECUTION_URGENCY_DURATIONS["low"]
DEFAULT_QUEUEING_URGENCY_DURATION =
QUEUEING_URGENCY_DURATIONS["low"]

Class Method Summary collapse

Class Method Details

.execution_duration_for_urgency(urgency) ⇒ Object



51
52
53
# File 'lib/gitlab/metrics/sidekiq_slis.rb', line 51

def execution_duration_for_urgency(urgency)
  EXECUTION_URGENCY_DURATIONS.fetch(urgency, DEFAULT_EXECUTION_URGENCY_DURATION)
end

.initialize_execution_slis!(possible_labels) ⇒ Object



22
23
24
25
# File 'lib/gitlab/metrics/sidekiq_slis.rb', line 22

def initialize_execution_slis!(possible_labels)
  Gitlab::Metrics::Sli::Apdex.initialize_sli(:sidekiq_execution, possible_labels)
  Gitlab::Metrics::Sli::ErrorRate.initialize_sli(:sidekiq_execution, possible_labels)
end

.initialize_queueing_slis!(possible_labels) ⇒ Object



27
28
29
# File 'lib/gitlab/metrics/sidekiq_slis.rb', line 27

def initialize_queueing_slis!(possible_labels)
  Gitlab::Metrics::Sli::Apdex.initialize_sli(:sidekiq_queueing, possible_labels)
end

.queueing_duration_for_urgency(urgency) ⇒ Object



55
56
57
# File 'lib/gitlab/metrics/sidekiq_slis.rb', line 55

def queueing_duration_for_urgency(urgency)
  QUEUEING_URGENCY_DURATIONS.fetch(urgency, DEFAULT_QUEUEING_URGENCY_DURATION)
end

.record_execution_apdex(labels, job_completion_duration) ⇒ Object



31
32
33
34
35
36
37
# File 'lib/gitlab/metrics/sidekiq_slis.rb', line 31

def record_execution_apdex(labels, job_completion_duration)
  urgency_requirement = execution_duration_for_urgency(labels[:urgency])
  Gitlab::Metrics::Sli::Apdex[:sidekiq_execution].increment(
    labels: labels,
    success: job_completion_duration < urgency_requirement
  )
end

.record_execution_error(labels, error) ⇒ Object



39
40
41
# File 'lib/gitlab/metrics/sidekiq_slis.rb', line 39

def record_execution_error(labels, error)
  Gitlab::Metrics::Sli::ErrorRate[:sidekiq_execution].increment(labels: labels, error: error)
end

.record_queueing_apdex(labels, queue_duration) ⇒ Object



43
44
45
46
47
48
49
# File 'lib/gitlab/metrics/sidekiq_slis.rb', line 43

def record_queueing_apdex(labels, queue_duration)
  urgency_requirement = queueing_duration_for_urgency(labels[:urgency])
  Gitlab::Metrics::Sli::Apdex[:sidekiq_queueing].increment(
    labels: labels,
    success: queue_duration < urgency_requirement
  )
end