如何在Sidekiq排队工作或停止处理工作时收到通知?

时间:2014-04-03 02:33:47

标签: ruby-on-rails ruby-on-rails-3 sidekiq

我在Heroku上,因为我的redis数据库太满了而出错了。我的sidekiq进程停止了工作。直到我意识到这一天就好了。现在我有600多个工作,我试图处理,但他们现在只是破坏一切。当sidekiq无法处理作业或Enqueue开始填满时,如何发出警报?

2 个答案:

答案 0 :(得分:1)

您可以按计划设置佣金任务以检查Sidekiq统计信息,然后采取适当的操作(例如发送电子邮件)。

我已经创建了自己的模块,其中包含Sidekiq的辅助方法,可用于多种用途,例如删除作业,检查队列,按特定标准重新查找作业等。https://gist.github.com/blotto/10324119

为了您的目的,请抓住sidekiq统计数据:

 def sidekiq_stats()
   summary = Hash.new
   stats = Sidekiq::Stats.new
   summary = { processed: stats.processed,
              failed: stats.failed,
              enqueued: stats.enqueued,
              queues: stats.queues}
 end

然后评估排队的值,设置你认为过高的容差,然后放开猎犬。

答案 1 :(得分:0)

如果您正在使用zabbix进行监控,则可以在https://github.com/hungntit/sidekiq_queue_zabbix使用sidekiq_queue_zabbix模板。当sidekiq队列大小高于一个指定的限制数

时,此模板支持显示图形和发送警报