diff --git a/docs/deployment/capistrano.md b/docs/deployment/capistrano.md index 96ea90f..7c60def 100644 --- a/docs/deployment/capistrano.md +++ b/docs/deployment/capistrano.md @@ -76,3 +76,47 @@ rbenv=1 bundle exec cap production deploy ## Schedule recurring tasks You may want to periodically clear resolved errors to free up space. Schedule ```rake errbit:db:clear_resolved``` to run every day or so. + + +## Monit +If you like errbit to be monitored by monit, you'll have to install and start monit +with http support before deploying errbit. +In order to enable http support you have to edit the monit config file which you can +find in `/etc/monit/monitrc` for Ubuntu and set these lines: +``` +set httpd port 2812 and + use address localhost # only accept connection from localhost + allow localhost +``` + +Next you have to add the following line to the Capfile: +``` +require 'capistrano/puma/monit' +``` + +And you have to deploy the monit config with the command: +```bash +bundle exec cap production puma:monit:config +``` + +The configuration file (depending on the distro) will be generated at: `/etc/monit/conf.d/puma_errbit_production.conf` + +### Controlling memory usage with monit +If you like to limit memory usage for puma and restart it in case the usage gets +over a 2GB limit, for example, you can add at the end of the monit config file the line +``` +if totalmem is greater than 2048 MB for 3 cycles then restart +``` + +The config file will look like: + +``` +# Monit configuration for Puma +# Service name: puma_errbit_production +# +check process puma_errbit_production + with pidfile "/var/www/apps/errbit/shared/tmp/pids/puma.pid" + start program = "/usr/bin/sudo -u root /bin/bash -c 'cd /var/www/apps/errbit/current && /usr/bin/env bundle exec puma -C /var/www/apps/errbit/shared/puma.rb --daemon'" + stop program = "/usr/bin/sudo -u root /bin/bash -c 'cd /var/www/apps/errbit/current && /usr/bin/env bundle exec pumactl -S /var/www/apps/errbit/shared/tmp/pids/puma.state stop'" + if totalmem is greater than 2048 MB for 3 cycles then restart +``` -- libgit2 0.21.2