Notable

Track notable requests and background jobs

See users affected by:

  • errors
  • slow requests, jobs, and timeouts
  • 404s
  • validation failures
  • CSRF failures
  • unpermitted parameters
  • blocked and throttled requests

:tangerine: Battle-tested at Instacart

Installation

Add this line to your application’s Gemfile:

gem 'notable'

And run:

rails generate notable:requests
rails generate notable:jobs # optional
rake db:migrate

For a web interface, check out Notable Web.

Requests

A Notable::Request is created for:

  • errors
  • slow requests and timeouts
  • 404s
  • validation failures
  • CSRF failures
  • unpermitted parameters
  • blocked and throttled requests

Jobs

A Notable::Job is created for:

  • errors
  • slow jobs

Currently works with Delayed Job and Sidekiq.

Manual Tracking

Notable.track(note_type, note)

Customize

Disable tracking in certain environments

Notable.enabled = Rails.env.production?

Requests

Set slow threshold

Notable.slow_request_threshold = 5 # seconds (default)

Custom user method

Notable.user_method = proc do |env|
  env["warden"].try(:user) || env["action_controller.instance"].try(:current_visit)
end

Custom track method

Notable.track_request_method = proc do |data, env|
  Notable::Request.create!(data)
end

Jobs

Set slow threshold

Notable.slow_job_threshold = 60 # seconds (default)

Custom track method

Notable.track_job_method = proc do |data|
  Notable::Job.create!(data)
end

TODO

  • ability to disable features
  • add indexes

Contributing

Everyone is encouraged to help improve this project. Here are a few ways you can help: