No commit activity in last 3 years
No release in over 3 years
Measure queueing metrics for Rack apps
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

 Project Readme

Rack Queue Metrics

Report on queued connections in any Rack-based server using Raindrops and the Raindrops::Linux features.

Usage

First, add rack-queue-metrics to your Gemfile:

gem 'rack-queue-metrics'

Rails

You're done! If you want to instrument queue metrics beyond the default output, you can subscribe to the rack.queue-metrics notifcation in your Rails app. For example, to print queue information to your logs, add the following to `config/initializers/notifcations.rb:

# config/initializers/notifications.rb
ActiveSupport::Notifications.subscribe(/rack.queue-metrics/) do |*args|
  event = ActiveSupport::Notifications::Event.new(*args)
  payload = event.payload

  addr = payload[:addr]
  active = payload[:requests][:active]
  queued = payload[:requests][:queued]
  queue_time = payload[:queue_time]

  puts "STATS addr=#{addr} active=#{active} queued=#{queued} queue_time=#{queue_time} "
end

For more information, see the ActiveSupport::Notification docs.

Sinatra/Rack Apps

Include the Raindrops and Rack::QueueMetrics middleware in your application's config.ru:

  # config.ru
  use Raindrops::Middleware
  use Rack::QueueMetrics::Middleware

Output

With every request, rack-queue-metrics will output a log line with the the following format:

at=metric measure=rack.queue-metrics addr=10.10.10.90:5000 queue_time=0 queue_depth=0

Notifications

The following information is sent in the notification payload:

  • requests[:active]: Number of requests currently being processed by the dyno at the start of the request
  • requests[:queued]: Number of requests waiting to be processed at the start of the request
  • queue_time: Amount of time the current request spent in the queue
  • addr: Address of the dyno processing the request