Class: G5PromRails::SidekiqTimingMiddleware

Inherits:
Object
  • Object
show all
Defined in:
lib/g5_prom_rails/sidekiq_timing_middleware.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = nil) ⇒ SidekiqTimingMiddleware

Returns a new instance of SidekiqTimingMiddleware.



26
27
28
29
# File 'lib/g5_prom_rails/sidekiq_timing_middleware.rb', line 26

def initialize(options = nil)
  @app = options[:app]
  @metric = options[:metric]
end

Class Method Details

.build_metric(reg) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/g5_prom_rails/sidekiq_timing_middleware.rb', line 2

def self.build_metric(reg)
  reg.histogram(
    :sidekiq_job_seconds,
    "job running time in seconds",
    {},
    [
      10,
      30,
      90,
      3.minutes.to_i,
      7.minutes.to_i,
      12.minutes.to_i,
      20.minutes.to_i,
      35.minutes.to_i,
      60.minutes.to_i,
      80.minutes.to_i,
      2.hours.to_i,
      3.hours.to_i,
      5.hours.to_i,
      10.hours.to_i,
    ]
  )
end

Instance Method Details

#call(worker, msg, queue) ⇒ Object



31
32
33
34
35
36
# File 'lib/g5_prom_rails/sidekiq_timing_middleware.rb', line 31

def call(worker, msg, queue)
  @metric.observe(
    { app: @app, job_class: worker.class.name },
    Benchmark.realtime { yield }
  )
end