Linux Hardware Monitoring Tool

Recently we have been looking for a good monitoring tool which will help us figure out / or alert us in advace if the particula hard disk or CPU-FAN is going to be down.

I have myself searched over , and tried to use some of the existing tools like cacti, monitorix and all but they seem to be more of a operating system specific. Like they provide the information what you can easily get by running simple UNIX commands. But fails to provide some infomration that we can get about hard disk bad-blocs and System temp going high because of the FAN not in use/Fan disorder etc.

Is there any such tool/s they please point me in the right direction and I shall explore.

For records , we are using SLES Linux in environment. But for that matter we can setup any operating system just as the monitoring tool server.