Module: Monus::BuiltInMetric::EmLatency

Extended by:
EmLatency
Included in:
EmLatency
Defined in:
lib/monus/built_in_metrics/em_latency.rb

Instance Method Summary collapse

Instance Method Details

#activateObject



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

def activate
  unless Monus.engine.kind_of? Monus::Engine::EventMachine
    raise LoadError, 'in order to use em_latency metric you should use :eventmachine engine'
  end

  @interval = Monus.options.dig(:em_latency_metric_options, :interval) || 1

  last_time, current_time = nil, nil

  Monus.engine.every @interval do
    current_time = Process.clock_gettime(Process::CLOCK_MONOTONIC)

    if last_time
      latency = current_time - last_time - @interval

      Monus.set :em_latency, latency
    end

    last_time = current_time
  end
end