我正在开发一个在 nginx 负载均衡器后面有多个 Rails 服务器的生产应用程序。我们正在使用 monit 监控 sidekiq 进程,它工作得很好——当 sidekiq 进程结束时,monit 会立即启动它。
然而最近遇到这样一种情况,其中一个进程正在运行并且对 monit 可见,但由于某种原因对 sidekiq 不可见。这导致许多作业失败,我们花了一些时间才注意到我们在 sidekiq Web UI 中缺少一个进程,因为 monit 告诉我们一切都很好并且所有进程都在运行。简单的重启解决了这个问题。
这让我想到了我的问题:您如何监控您的 sidekiq 流程?我知道我可以使用 rollbar 之类的东西在作业失败时通知我,但我想知道是否有一种方法可以监控进程计数,最好是在进程停止时发送邮件。有什么建议么?
会 ping sidekiq/stats
并验证响应的东西。
最佳答案
我对类似问题的 super 简单解决方案如下所示:
# sidekiq_check.rb
namespace :sidekiq_check do
task rerun: :environment do
if Sidekiq::ProcessSet.new.size == 0
exec 'bundle exec sidekiq -d -L log/sidekiq.log -C config/sidekiq.yml -e production'
end
end
end
然后使用 cron/whenever
# schedule.rb
every 5.minutes do
rake 'sidekiq_check:rerun'
end
关于ruby - 您如何监控 sidekiq 进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40992803/