monit在生产服务器中找不到独角兽工作者

时间:2013-05-01 18:29:11

标签: ruby-on-rails ruby-on-rails-3 nginx unicorn monit

我正在使用此gem来部署kapify

这是我的独角兽配置:

unicorn config

unicorn.rb.erb

unicorn_init.erb

我的部署:

server "111.111.111.111", :web, :app, :db, primary: true

set :application, 'myapp'
set :user, "hyperrjas"
set :deploy_to, "/home/#{user}/apps/#{application}"
set :deploy_via, :remote_cache
set :use_sudo, false

set :scm, "git"
set :repository, "path_to_my_remote_reposytory.git"
set :branch, "master"
set :current_path, "/home/#{user}/apps/#{application}/current"
set :shared_path, "/home/#{user}/apps/#{application}/shared"

set :unicorn_workers, 1
set :unicorn_pid, "#{shared_path}/pids/unicorn.pid"
set :server_name, "myserver.com"

这是我在远程服务器中的pid:

ps aux | grep unicorn
1000      6037  0.4 12.5 320464 127628 ?       Sl   14:09   0:37 unicorn master -c /home/hyperrjas/apps/myapp/shared/config/unicorn.rb -D                                                         
1000      6079  0.2 13.8 335784 140828 ?       Sl   14:10   0:17 unicorn worker[0] -c /home/hyperrjas/apps/myapp/shared/config/unicorn.rb -D                                                      
1000      6322  0.0  0.0   9384   868 pts/0    S+   16:14   0:00 grep unicorn

这是我的config/deploy/templates/monit/unicorn.erb文件:

check process myapp_unicorn with pidfile /home/hyperrjas/apps/myapp/current/tmp/pids/unicorn.pid
start program = "/etc/init.d/unicorn_myapp start"
stop program = "/etc/init.d/unicorn_myapp force-stop"

check process myapp_unicorn_worker_0 with pidfile /home/hyperrjas/apps/myapp/current/tmp/pids/unicorn.0.pid
start program = "/bin/true"
stop program = "/usr/bin/test -s /home/hyperrjas/apps/myapp/current/tmp/pids/unicorn.0.pid && /bin/kill -QUIT `cat /home/hyperrjas/apps/myapp/current/tmp/pids/unicorn.0.pid`"
if mem > 200.0 MB for 5 cycles then restart
if cpu > 50% for 15 cycles then restart
if 5 restarts within 25 cycles then timeout
alert myapp@gmail.com only on { pid }
if changed pid 2 times within 64 cycles then alert

我可以在monit中看到独角兽工人pid的下一条路径:

Pid file /home/hyperrjas/apps/myapp/current/tmp/pids/unicorn.0.pid

信息:

Status  Not monitored

远程服务器中的独角兽pid位于/home/myapp/apps/myapp/current/tmp/pids/unicorn.pid

我无法在unicorn.0.pid

中看到pid /home/hyperrjas/apps/myapp/current/tmp/pids/

Monit监视着独角兽的精神。

如何监控我的独角兽工作人员?

1 个答案:

答案 0 :(得分:1)

我在设置monit时使用this configuration来监视我的Linode上三个不同应用程序的独角兽主人和工作进程。 This article引导您完成设置以及每件事情如何协同工作。

我不建议尝试在运行中为unicorn生成monit配置,而是告诉unicorn始终将PID写入应用程序中的相同文件名,然后在monit配置中引用这些文件。 / p>

如果你遇到困难,请告诉我,我会帮助你。此外,如果我的配置有用,请告诉我,我会发布。