Cacti (software)

Cacti is an open-source, web-based network monitoring, performance, fault and configuration management framework designed as a front-end application for the open-source, industry-standard data logging tool RRDtool. Cacti allows a user to poll services at predetermined intervals and graph the resulting data. Through the use of Cacti plugins, it has been extended to encompass all of the FCAPS operational management categories. It is generally used to graph time-series data of metrics such as CPU load and network bandwidth utilization. A common usage is to monitor network traffic by polling a network switch or router interface via Simple Network Management Protocol (SNMP).

The Cacti end user front end supports both User and User Groups security models and supports Role Based Access Control (RBAC) for access to not only monitoring data, but various areas of the user interface. Source users can either be locally defined or sourced from LDAP, Active Directory and other protocols via Apache and Nginx Basic Authentication which includes Single Signon providers (SSO).

The Cacti framework can be extended using Plugins which transform Cacti from a pure Time Series Graphing solution into a robust Performance Monitoring, Fault and Configuration Management platform. The Cacti Group maintains over 20 such Plugins on GitHub that deliver these capabilities.

Cacti is primarily used by Telco providers and Network Operation Centers throughout the world in addition to being the heart of the commercial Spectrum LSF RTM solution which monitors High Performance Computing (HPC) clusters based on IBM LSF product. Additional use cases include web hosting providers (especially dedicated server, virtual private server, and colocation providers) to display bandwidth statistics for their customers. It can be used to configure the data collection itself, allowing certain setups to be monitored without any manual configuration of RRDtool. Cacti data collection can be extended to monitor any source via shell scripts and executables.

Cacti provides both a built-in and optional data collectors. back ends: The first, referenced to as "cmd.php", is a PHP script suitable for smaller installations. The second, referred to as "spine", is a multi-threaded and massively parallel C-based data collector which can scale to tens of thousands of hosts per Cacti Data Collector.

History
The Cacti project was first started by Ian Berry on September 2, 2001. Berry was inspired to start the project while working for a small ISP while also still in high school, learning PHP and MySQL. His central aim in creating Cacti "was to offer more ease of use than RRDtool and more flexibility than MRTG".

On September 13, 2004, version 0.8.6 was released, and with it came more developers and, later on, greater program speed and scalability.

Version 0.8.7 was released for use in October 2007. In June 2012, a roadmap on the website indicated that version 1.0.0 was scheduled for release in the first quarter of 2013, but due to team member availability and changing roles in their careers, Cacti development took a hiatus with only minor security and bug fixes until the release of Cacti 1.0 in January of 2017.

Between the years of 2012 and 2017, The Cacti released 6 point releases of the Cacti 0.8.8 series software, again addressing minor bug fixes and security issues.

The Cacti Group reorganized in early 2015 to restart work on the Cacti 1.0 product. During this development, The Cacti Group stepped up to deliver on much of the promised capabilities on their roadmap including; Multiple Data Collectors; Improved Graph, Device, Template and Tree Security including User Group level permissions; Multiple Data Collection intervals; Site support; and Improved Tree Management and Performant capabilities.

Version 1.0.0 was released in January 2017.

Version 1.2.0 was released in January 2019.

2017 was an active year for The Cacti Group. They have released over 30 versions of Cacti since the initial 1.0.0 release in January 2017. The GitHub community additionally grew and there are now several dozen developers working on perfecting the 1.x release for use in homes, small companies and enterprises throughout the globe.

Features
The primary features of Cacti include:
 * Support for unlimited monitored devices
 * Multiple levels of Device and Graph organization via Site and Location attributes and Tree structures to organize Graphs, Devices and Sites
 * Distributed Data Collection using Remote Data Collectors which are resilient to intermittent network failures
 * Extendable via the Plugin Architecture
 * Automated Device Discovery including Graph and Tree Automation
 * Device, Automation, and Graph Templating
 * Upstream SNMP Trap and Inform Support
 * Fault Management via the Syslog Plugin
 * Fault Management via the Threshold Plugin
 * Router and Switch backup and Configuration Management via the RouterConfigs Plugin
 * Network Mapping via the WeatherMap Plugin
 * Network Mac Address and Device location services via the MacTrack Plugin
 * Dashboarding via the Intropage Plugin
 * Web Site service checks via the WebSeer Plugin
 * Built-in massively parallel SNMP support
 * Built-in massively parallel PHP script server support
 * Optional support WMI based data collection via the WMI Plugin
 * Multiple Graph access permission Models for large scale deployments
 * User and User Group access control
 * Multiple Access Control methodologies including LDAP, AD, local users as well as multiple SSO providers through Apache and Nginx modules
 * Support Database sessions enabling scale out Cacti deployments front ended by load balancers and back ended using clustered file systems such as GlusterFS, CEPH and NFS.