获取Monit monitrc文件来测试Rails应用程序

时间:2012-09-19 02:22:24

标签: ruby-on-rails ruby monit

我正在尝试使用Monit来监控并重启某些rails应用程序。这些应用程序使用Sphinx。 Monit不接受通常在shell中工作的命令。

monitrc配置如下所示:

...
check process app_name
  with pidfile "/path/to/pidfile/searchd.production.pidfile"
  start program = sudo su user_name -c "cd /home/app_name/current
    && RAILS_ENV=production rake ts:start"
  stop program = sudo su user_name -c "cd /home/app_name/current
    && RAILS_ENV=production rake ts:stop"
...

访问pidfile的权限被拒绝,但如果我尝试:

with pidfile "sudo /path/to/pidfile/searchd.production.pidfile"

它不起作用。

同样,monit不接受启动和停止程序bash命令。

我缺少一个明显的解决方法吗? 顺便说一句,我是个菜鸟。

我也看过http://capitate.rubyforge.org/recipes/sphinx-monit.html#sphinx:monit:start,但实际上并没有得到它。

1 个答案:

答案 0 :(得分:0)

尝试在bundle exec之前放置rake。像这样:

start program = sudo su user_name -c "cd /home/app_name/current
  && RAILS_ENV=production bundle exec rake ts:start"
stop program = sudo su user_name -c "cd /home/app_name/current
  && RAILS_ENV=production bundle exec rake ts:stop"

这是我无法监控生产服务器上的puma服务器和delayed_job工作人员的主要原因。

<强>更新

我的工作范例:

check process puma with pidfile <%= puma_pidfile %>
  start program = "/bin/su - ubuntu -c 'cd /home/ubuntu/apps/artvasion/current && bundle exec puma -C config/puma.rb'"
  stop program =  "/bin/su - ubuntu -c 'kill `cat /home/ubuntu/apps/artvasion/shared/pids/puma.pid`'"
  # ...monitoring stuff