Method: Insights::API::Common::Middleware::WebServerMetrics#call

Defined in:
lib/insights/api/common/middleware/web_server_metrics.rb

#call(env) ⇒ Object



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