We have a web system like this:
10 servers with files and one front server which serves the web.
We need to see the whole picture of what's going on with them. What monitoring system would you recommend: Nagios, Zabbix, Cacti or maybe something else.
Nagios is primarily a monitoring tool. That is, it monitors any number of conditions for the services and servers you define. Then if there is a problem (eg outage, slow load time or anything you define) then notifications are sent out.
Cacti is not so much a monitoring tool but a tool for gathering reports and drawing graphs from data such as SNMP.
Zabbix is a bit of a combination of the two.
We moved from Nagios to Zabbix about a year ago mainly for this hybrid approach. We liked the easy integration with JMX data, SNMP and more to draw graphs, as well as a pretty sophisticated monitoring and alerting tool (very similar to Nagios in that way).