+1 Nagios. It's ugly, it does not scale easily, configuration maintenance is a pain.
Yet its primitivity is its biggest plus:
If it complains, you can easily understand *why*. So you can rely on it. Which really is the most important thing.
And it's dead easy to put together a new plug-in for any specific problem. Again, because the API is so primi... elegant
Zabbix looks certainly nicer at first; but I cannot understand how *external* PHP plugins could possibly scale.
Zenoss also looks nicer, but I find the big Zope black box in the middle anything than easy to understand or trustable.
OpenNMS carries the scalability crown. But you also have to believe that all the Java and Postgres magic gets it right. Always. And custom monitoring you need to map to SNMP.