We use nagios. So far I haven't found something I can't monitor either via a pre-existing plugin or writing my own if I want to monitor something unusual. It is free and well documented.
In my experience Nagios has been easy to learn. Anytime I want to monitor something new (new status, not new computer) I first check to see if there is already a plugin for it. In the case of dying drives, there are a handful of SMART status plugins that will report the current status of the SMART check and send a warning if something is amiss. For the health of the server, it depends on what you mean but our standard template monitors load, disk space, system temperature, and ping. We also have checks for SSH, HTTP, MySQL, and a bunch of other services that we add as needed.
One of the biggest advantages is that Nagios/NRPE will accept pretty much anything assuming it is in the right format. For issues with the logs if you can automate processing it in the language of your choice (custom script, plugin, or tool of your choice), you can monitor it. I monitor for failed SSH logins and input/output errors using a simple bash script.