Zabbix is very good, at least since version 2.0.x which is the one I've used. Once you understand how it works, it's very easy to write agent scripts (plugins) and build templates for it.
It took about 3 months for me to build a monitoring solution from scratch with Zabbix for a little over 100 devices, with just a single vCPU VMware VM for both Zabbix and its MySQL database. Monitored devices included Windows, Linux and AIX machines, but also a couple of large UPSes and a few server rack PDUs.
This was my first contact with Zabbix and during this time I wrote dozens of agent scripts to monitor stuff ranging from DB2 and Microsoft Exchange clusters to physical disks and SAN LUNs.
It's one of a select few software packages that I can say that I really like. It works as expected and it's pretty extensible.
Yep, we moved form Nagios to Zabbix once we crossed the ~300 devices as that is one of the main advantages for Zabbix: it scales pretty nice. Takes a bit to get to know how everything works and set it up correctly but it's a pretty good piece of monitoring software.