ruby-on-rails - 如何用monit监控delayed_job

标签 ruby-on-rails ruby delayed-job monit god

网络上是否有关于如何使用 Monit 监控 delayed_job 的示例? ?

我能找到的所有东西都使用 God ,但我拒绝使用上帝,因为在 Ruby 中长时间运行的进程通常很糟糕。 (上帝邮件列表中的最新帖子?God Memory Usage Grows Steadily。)

更新:delayed_job 现在带有 sample monit config基于这个问题。

最佳答案

下面是我如何让它工作的。

  1. 使用collectiveidea fork of delayed_job除了积极维护之外,这个版本还有一个不错的 script/delayed_job可以与 monit 一起使用的守护进程。 Railscasts 有 a good episode关于这个版本的delayed_job (ASCIICasts version)。该脚本还有一些其他不错的功能,例如运行多个工作程序的能力。我不在这里介绍。
  2. 安装监视器。我是从源代码安装的,因为 Ubuntu 的版本太过时了。我关注了these instructions获取 Ubuntu 软件包附带的标准 init.d 脚本。我还需要配置 ./configure --sysconfdir=/etc/monit所以选择了标准的 Ubuntu 配置目录。
  3. 编写监控脚本。这是我想出的:

    check process delayed_job with pidfile /var/www/app/shared/pids/delayed_job.pid
    start program = "/var/www/app/current/script/delayed_job -e production start"
    stop program = "/var/www/app/current/script/delayed_job -e production stop"

    我将它存储在我的 soucre 控制系统中并用 include /var/www/app/current/config/monit 指向它在/etc/monit/monitrc文件。

  4. 配置监视器。 These instructions充满广告,但其他方面还可以。
  5. 为 capistrano 编写一个停止和启动的任务。 monit start delayed_jobmonit stop delayed_job是你想要运行的。我还在部署时重新加载监视器以获取任何配置文件更改。

我遇到的问题:

  1. daemons必须为 script/delayed_job 安装 gem运行。
  2. 您必须将 Rails 环境传递给 script/delayed_job-e production (例如)。这记录在自述文件中,但未记录在脚本的帮助输出中。
  3. 我使用 Ruby Enterprise Edition,所以我需要获取 monit 才能开始使用该 Ruby 副本。因途sudo handles the PATH在 Ubuntu 中,我结束了符号链接(symbolic link) /usr/bin/ruby/usr/bin/gem到 REE 版本。

在调试 monit 时,我发现停止 init.d 版本并从 th 命令行运行它会有所帮助,因此您可以获得错误消息。否则很难弄清楚为什么会出错。

sudo /etc/init.d/monit stop
sudo monit start delayed_job

希望这有助于下一个想要监控的人 delayed_job与监视器。

关于ruby-on-rails - 如何用monit监控delayed_job,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1226302/

相关文章:

ruby-on-rails - Rails 4 : Sort by associated created_at if present, 否则由父级

ruby - Ruby 链接是如何工作的?

ruby-on-rails - 使用 Clockwork/Delayed_Job/ActiveJob 安排每 5 分钟运行一次(轮)

php - Laravel 重复延迟工作

jquery - 无法在 Rails 应用程序中从 JS 访问 CSS

ruby-on-rails - 在多个 Rails 应用程序之间共享上传的文件

ruby-on-rails - RSpec 对页面上的元素抛出误报

javascript - RoR站点实现策略

ruby-on-rails - HAML Markdown 过滤器中的语法突出显示

ruby-on-rails - 用delay_job轮询