To some extent, using both Monit and Upstart is vaguely overkill and potentially conflicting. Both will do process respawns (though Monit allows more detailed testing of the service) and you may have a weird situation where they are both competing to restart the service if it dies unexpectedly. A leaner approach would be to use Monit in general to monitor those services (with whatever extra HTTP probes and memory/cpu usage checks you want), and then use Upstart to make sure that Monit is running.