Lately I have been using bluepill to to monitor long-running processes on my application servers. The guys at serious business wrote bluepill out of their frustrations with god and monit, which gradually leak memory over long periods in certain conditions. bluepill is a simple piece of code with a small feature set, but does all you need to keep your processes alive. It even has parent/child monitoring for the likes of Unicorn master/worker processes.
Right now I am using it in Bugle production to monitor the delayed_job master process. It will also be useful if (or when) I get a chance to try Unicorn. Delayed Job is used in Bugle for two things right now, processing uploads (storing/deleting to/from S3) and delivering all application emails asynchronously. Here is the bluepill monitoring configuration script for it;
Bluepill.application("bugle") do |app|
app.process("delayed_job") do |process|
process.start_command = "/apps/bugle/current/script/delayed_job start -eproduction"
process.pid_file = "/apps/bugle/current/tmp/pids/delayed_job.pid"
process.uid = "bugle"
process.gid = "bugle"
end
end