Revision c30fd6f2
Added by Lukas Zapletal almost 6 years ago
app/services/foreman/telemetry_helper.rb | ||
---|---|---|
end
|
||
|
||
# time spent in a block as histogram, in miliseconds by default
|
||
def telemetry_duration_histogram(name, scale = 1000, tags = {})
|
||
def telemetry_duration_histogram(name, scale = 1000, tags = {}, results = nil)
|
||
case scale
|
||
when :ms, :msec, :miliseconds
|
||
scale = 1000
|
||
... | ... | |
when :min, :minutes
|
||
scale = 1 / 60
|
||
end
|
||
before = Time.now.to_f
|
||
before = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
||
yield
|
||
ensure
|
||
after = Time.now.to_f
|
||
telemetry_observe_histogram(name, (after - before) * scale, tags)
|
||
after = Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
||
duration = (after - before) * scale
|
||
telemetry_observe_histogram(name, duration, tags)
|
||
results[name] = duration if results
|
||
end
|
||
end
|
Also available in: Unified diff
Fixes #23808 - monotonic timer to measure durations