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:
- Report bugs
- Fix bugs and submit pull requests
- Write, clarify, or fix documentation
- Suggest or add new features