I run several servers with both nagios and cacti, monitoring different networks.
They are both usefull. Nagios tells you what is working right now, and when it has failed. It can alerts you (or another network management tools) when something is not responding or if it has passed a threshold. It also provide simple availability reporting.
Cacti is a great tools for performance graphing. Nagios tells you when you exceed 80% of you bandwidth, but Cacti will show you how.
Cacti gprints is also very usefull. Total bandwitdh, 95th percentile, percentage graphing ... All those things are very usefull when you look at them. And the gui is beautiful
Cacti lacks some command tools for scalability I need in certain area but nothing a script can't handle. I'm about to work on the tree organization, I already coded a script which autodiscover interfaces, then create all graphs that match certain criteria, with customized title.