Nagios and I'm hating each bit of it. While it works OK but a complex configuration could be a nightmare. In our case it's a legacy from the early days and grown up organically, over a hundred machines that could be a real pain. To clean it I ended up writing a custom configuration tool in Python using templates where configuration information is stored in a database.