简体   繁体   中英

Monit failing to restart sidekiq

I'm trying to get monit to restart my sidekiq service on CentOS server. After trying multiple solutions out there, I'm stumped, still failing to start the service.

My sidekiq file from monit.d:

check process sidekiq
  with pidfile /var/www/App/tmp/pids/sidekiq.pid
  start program = "/bin/bash -l -c 'sudo cd /var/www/App && bundle exec sidekiq --index 0 --pidfile /var/www/App/tmp/pids/sidekiq.pid --environment production --logfile /var/www/App/log/sidekiq.log --daemon'" as uid deploy and gid deploy
  stop program = "/bin/bash -l -c 'cd /var/www/App && bundle exec sidekiqctl stop /var/www/App/tmp/pids/sidekiq.pid 10'" as uid deploy and gid deploy
  if totalmem is greater than 512 MB for 2 cycles then restart
  if 3 restarts within 5 cycles then timeout

If I run start program command manually, it starts the sidekiq fine but the monit doesn't seem to do anything. Just comes up with:

[BST Oct  6 11:51:17] error    : 'sidekiq' process is not running
[BST Oct  6 11:51:17] info     : 'sidekiq' trying to restart
[BST Oct  6 11:51:17] info     : 'sidekiq' start: /bin/bash
[BST Oct  6 11:52:47] error    : 'sidekiq' failed to start

So it is including file fine, but somehow doesn't manage to start the service from the script.

What can it be? Some permissions issue of sorts?

You need to update to the latest Monit version (5.14). Remove your current monit installation and follow these instructions:

https://rtcamp.com/tutorials/monitoring/monit/

Hope it helps!

PS: Found the solution here: https://bitbucket.org/tildeslash/monit/issues/109/failed-to-stop-always-after-60-seconds

according to Debugging monit

I found i need set PATH.

my start program:

/bin/bash -c 'cd /home/vagrant/apps/skylark/current; PATH=/home/vagrant/.rbenv/shims:/home/vagrant/.rbenv/bin:$PATH bundle exec sidekiq -d -e production -C -P /home/vagrant/apps/skylark/shared/tmp/pids/sidekiq.pid -L /home/vagrant/apps/skylark/shared/log/sidekiq.log'

i think the issue is with your user. You need to execute using deploy user.

check process sidekiq
  with pidfile /var/www/App/tmp/pids/sidekiq.pid
  start program = "/bin/su - deploy -c 'sudo cd /var/www/App && bundle exec sidekiq --index 0 --pidfile /var/www/App/tmp/pids/sidekiq.pid --environment production --logfile /var/www/App/log/sidekiq.log --daemon'" as uid deploy and gid deploy
  stop program = "/bin/su - deploy -c 'cd /var/www/App && bundle exec sidekiqctl stop /var/www/App/tmp/pids/sidekiq.pid 10'" as uid deploy and gid deploy
  if totalmem is greater than 512 MB for 2 cycles then restart
  if 3 restarts within 5 cycles then timeout

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM