<% @path = '/etc/monit/monit.d/monit-mongrel.conf' %> <% (0..(rubber_env.mongrel_count.to_i - 1)).each do |i| %> <% port = rubber_env.mongrel_base_port + i %> <% pidfile = "#{RUBBER_ROOT}/tmp/pids/mongrel.#{port}.pid" %> check process mongrel-<%= port %> with pidfile <%= pidfile %> group mongrel-<%= RUBBER_ENV %> start program = "/bin/sh -c 'cd <%= RUBBER_ROOT %> && PATH=<%= rubber_env.ruby_prefix %>/bin:/usr/local/bin:$PATH && mongrel_rails cluster::start --clean --only <%= port %>'" <% # Stop gracefully - monit waits for stop to complete (since below process exits immediately, it must # wait for pid to disappear) before trying to start %> stop program = "/bin/sh -c 'cd <%= RUBBER_ROOT %> && PATH=<%= rubber_env.ruby_prefix %>/bin:/usr/local/bin:$PATH && mongrel_rails cluster::stop --clean --only <%= port %> && sleep 30 && mongrel_rails cluster::stop --clean --force --only <%= port %>'" if totalmem > 200.0 MB for 3 cycles then restart <%# monit needs to test on same same interface that mongrel is listening on (see mongrel_cluster.yml) %> if failed host <%= rubber_env.host %> port <%= port %> protocol http with timeout 10 seconds for 10 cycles then restart <% end %>