This gem adds 2 things:
- A lightweight heartbeat task that runs every few minutes and alerts if it takes longer than a few seconds to start.
- A scheduler task that periodically checks the size of each sidekiq queue to ensure no queues are backed up.
Table of Contents
Add this line to your application's Gemfile:
gem 'sidekiq-heartbeat_monitor'
And then execute: $ bundle Or install it yourself as: $ gem install sidekiq-heartbeat_monitor
Configuration is required - see the Configuration section below
The gem will automatically try to install your cron task when you run your sidekiq server, however if for some reason it does not install the cron task then you can install it manually using the available rake task command:
rake sidekiq::heartbeat_monitor:install
- Dont Repeat For Gem - To allow you to only send notifications every so often.
- Redis
- (optional) SlackNotifier - If you're using slack notifications then this is needed.
To add a webhook to your slack account, go to: https://api.slack.com/incoming-webhooks Make note of the URL or add it to your environment and note the name.
To configure with a simple slack webhook notification URL, simply specify the notification URL in the "slack_notifier_url" attribute.
# config/initializers/sidekiq/hearbeat_monitor.rb
Sidekiq::HeartbeatMonitor.configure(slack_notifier_url: ENV['SLACK_WEBHOOK_URL'])
# config/initializers/sidekiq/hearbeat_monitor.rb
Sidekiq::HeartbeatMonitor.configure(
slack_notifier_url: ENV['SLACK_WEBHOOK_URL'],
dont_repeat_for: 15.minutes # Won't repeat the notifications for the same queue more than once every 15 minutes.
)
# config/initializers/sidekiq/hearbeat_monitor.rb
Sidekiq::HeartbeatMonitor.configure(
on_backed_up: -> (msg, queue) { Rails.logger.log("Queue #{queue.name} is backed up!"); },
on_slowed_down: -> (msg, queue) { Rails.logger.log("Queue #{queue.name} is being slow!"); },
)
Note: on_backed_up
and on_slowed_down
accept an array and will always add to existing callbacks (you can combine slack_notiifer_url
with them)
To test your config:
- Open your rails console.
- Run
Sidekiq::HeartbeatMontior.send_test!
and you should see notifications come up in your Slack (or however you have them configured). If there's something wrong it should show an error.
Bug reports and pull requests are welcome on GitHub at https://github.com/jayelkaake/sidekiq-heartbeat_monitor. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.
Battle-tested @ Fera.ai with:
- Ruby 2.4 - 2.6.7 (but up to 3.0 should be fine)
- Sidekiq 3-5
The gem is available as open source under the terms of the MIT License.