# Monit configuration for THIN : <%= fetch(:application) %> (<%= fetch(:stage) %>) <% fetch(:app_instances, 1).times do |n| %> check process <%= fetch(:application) %>_<%= fetch(:stage) %>_thin_<%= n %> with pidfile <%= deploy_to %>/shared/pids/thin_<%= fetch(:application) %>_<%= fetch(:stage) %>.<%= n %>.pid group thin-<%= fetch(:application) %>-<%= fetch(:stage) %> start program = "/bin/su - <%= @role.user %> -c 'cd <%= current_path %> ;<% if fetch(:monit_thin_with_secret) %> export SECRET_KEY_BASE=<%= fetch(:secrets_key_base) %>; export <%= fetch(:secrets_key_name) %>=<%= fetch(:secrets_key_base) %>;<% end %> bundle exec thin start -C config/thin_app_<%= fetch(:stage) %>.yml -o <%= n %>' " stop program = "/bin/su - <%= @role.user %> -c 'cd <%= current_path %> ; bundle exec thin stop -C config/thin_app_<%= fetch(:stage) %>.yml -o <%= n %>' " # if does not exist then start # (default) # if does not exist for 3 cycles then alert if 3 restarts within 5 cycles then alert if mem > <%= ( fetch( :monit_thin_totalmem_mb, 300 ).to_i * 0.75 ).to_i %> MB then alert if mem > <%= fetch( :monit_thin_totalmem_mb, 300 ) %> MB for 2 cycles then restart if cpu > 50% then alert if cpu > 50% for 3 cycles then restart if 5 restarts within 5 cycles then timeout # alert <%= fetch(:monit_mail_to) %> only on { pid } if changed pid 2 times within 20 cycles then alert <% end %>