ruby - 您如何监控 sidekiq 进程?

标签 ruby ruby-on-rails-4 sidekiq sidekiq-monitor

我正在开发一个在 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/

相关文章:

mysql - Rails 4 多项选择

ruby-on-rails - ActiveJob 在生产环境中没有使用 sidekiq

ruby-on-rails - Ajax:成功无法在 Rails 应用程序中工作

ruby - 字符串连接错误

ruby-on-rails - Rails 选择日期大于或等于 nil 的记录

ruby-on-rails - ruby on Rails 是否存在时区偏移错误?

ruby-on-rails - Capybara/Poltergeist 无法到达服务器(连接被拒绝+ GET '/identify')

ruby-on-rails - Rails JSON API oauth 身份验证

ruby-on-rails - 在 sidekiq-cron 中比较日期时出错

ruby-on-rails - 如何让Sidekiq worker不加载Rails环境