We use monit combined with a number of helper bash scripts running in cron. For example, we have a cron job that does integrity checks on sqlite databases and writes to a file if it encounters corruption. Monit is set to monitor that file for size change and sends an alert if anything is written to it. That kind of thing is a bit of a hack, but seems to be the way to do it if you are using monit.
We also use pingdom for external uptime monitoring.
We also use pingdom for external uptime monitoring.