Luk*_*ncl 74 ruby ruby-on-rails god monit delayed-job
网上有关于如何使用Monit监控delayed_job的例子吗?
我能找到的一切都使用了上帝,但我拒绝使用上帝,因为在Ruby中长期运行的过程通常很糟糕.(上帝邮件列表中最新的帖子?上帝内存使用量稳步增长.)
更新: delayed_job现在附带一个基于此问题的示例监听配置.
Luk*_*ncl 97
这是我如何工作的方式.
script/delayed_job守护进程,你可以使用monit.Railscasts有一个关于这个版本delayed_job(ASCIICasts版本)的好插曲.此脚本还具有一些其他不错的功能,例如运行多个工作程序的功能.我不在这里讨论../configure --sysconfdir=/etc/monit以便选择标准的Ubuntu配置目录.写一个monit脚本.这是我想出的:
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文件中指向monit .
monit start delayed_job并且monit stop delayed_job是你想要运行的.我还在部署以获取任何配置文件更改时重新加载monit.我遇到的问题:
daemons必须安装gem才能script/delayed_job运行.script/delayed_job与-e production(例如).这在README文件中记录,但不在脚本的帮助输出中记录./usr/bin/ruby和/usr/bin/gemREE版本.在调试monit时,我发现停止init.d版本并从命令行运行它有帮助,这样你就可以收到错误消息.否则很难弄清楚出现问题的原因.
sudo /etc/init.d/monit stop
sudo monit start delayed_job
Run Code Online (Sandbox Code Playgroud)
希望这有助于下一个想要监控delayed_jobmonit的人.
小智 8
对于它的价值,你总是可以使用/ usr/bin/env和monit来设置环境.这在当前版本的delayed_job,1.8.4中尤其重要,其中不推荐使用环境(-e)选项.
check process delayed_job with pidfile /var/app/shared/pids/delayed_job.pid
start program = "/usr/bin/env RAILS_ENV=production /var/app/current/script/delayed_job start"
stop program = "/usr/bin/env RAILS_ENV=production /var/app/current/script/delayed_job stop"
Run Code Online (Sandbox Code Playgroud)
在某些情况下,您可能还需要使用env设置PATH.
小智 5
我发现为延迟作业创建初始化脚本更容易.可在此处访问:http://gist.github.com/408929 或以下:
#! /bin/sh
set_path="cd /home/rails/evatool_staging/current"
case "$1" in
start)
echo -n "Starting delayed_job: "
su - rails -c "$set_path; RAILS_ENV=staging script/delayed_job start" >> /var/log/delayed_job.log 2>&1
echo "done."
;;
stop)
echo -n "Stopping sphinx: "
su - rails -c "$set_path; RAILS_ENV=staging script/delayed_job stop" >> /var/log/delayed_job.log 2>&1
echo "done."
;;
*)
N=/etc/init.d/delayed_job_staging
echo "Usage: $N {start|stop}" >&2
exit 1
;;
esac
exit 0
然后确保monit设置为启动/重启应用程序,以便在monitrc文件中:
check process delayed_job with pidfile "/path_to_my_rails_app/shared/pids/delayed_job.pid" start program = "/etc/init.d/delayed_job start" stop program = "/etc/init.d/delayed_job stop"
这很棒!