21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# File 'lib/insights/api/common/middleware/web_server_metrics.rb', line 21
def call(env)
@puma_busy_threads.increment
result = nil
duration = Benchmark.realtime { result = @app.call(env) }
result
rescue => error
@error = error
raise
ensure
duration_labels = {
:method => env['REQUEST_METHOD'].downcase,
:path => strip_ids_from_path(env['PATH_INFO']),
}
counter_labels = duration_labels.merge(:code => result.first.to_s).tap do |labels|
labels[:exception] = @error.class.name if @error
end
@request_counter.increment(counter_labels)
@request_histogram.observe(duration, duration_labels)
@puma_max_threads.observe(puma_stats["max_threads"])
@puma_busy_threads.decrement
end
|