hyperrjas
hyperrjas

Reputation: 10744

monit does not find the unicorn worker in production server

I'm using this gem for deploy kapify.

This is my unicorn config:

unicorn config

unicorn.rb.erb

unicorn_init.erb

I have in my deploy:

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"

this is my pid in remote server:

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

this is my config/deploy/templates/monit/unicorn.erb file:

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 [email protected] only on { pid }
if changed pid 2 times within 64 cycles then alert

I can see in monit the next path to unicorn worker pid:

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

And the message:

Status  Not monitored

The unicorn pid in remote server are in /home/myapp/apps/myapp/current/tmp/pids/unicorn.pid

I can not see the pid unicorn.0.pid in /home/hyperrjas/apps/myapp/current/tmp/pids/

Monit is monitoring fine the unicorn pid.

How can I monitorize with monit my unicorn worker?.

Upvotes: 2

Views: 1343

Answers (1)

CDub
CDub

Reputation: 13354

I used this configuration when setting up monit to watch unicorn master and worker processes for three different apps on my Linode. This article walks you through the settings and how each thing works together.

I wouldn't recommend trying to generate the monit config for unicorn on the fly, rather, I'd tell unicorn to always write PIDs to the same file name in your app, then reference those files in the monit config.

Let me know if you get stuck, and I'll help you out. Also, if my config would be helpful, let me know and I'll post that.

Upvotes: 1

Related Questions