PHP JavaScript CSS Perl HTML Shell
Latest commit 2013dee Jan 23, 2017 @cigamit cigamit Resolving Issue #228
Permalink
Failed to load latest commit information.
cache consolidate caching May 13, 2016
cli Utility.php include missing for import_package.php Jan 17, 2017
docs Fix requirements Jan 3, 2017
formats Correct CSS Errors Jan 7, 2017
images Add two missing images for gexport Jan 13, 2017
include Correct spelling of watermark variable Jan 22, 2017
install Resolving Issue #228 Jan 23, 2017
lib Remove STRICT mode Jan 22, 2017
locales Final pot file update Jan 19, 2017
log Remove cacti.log entry from last commit Feb 6, 2015
mibs Convert all windows text to unix text Jan 2, 2017
plugins implement realtime height through css Feb 20, 2016
resource addd net-snmp device io w/64 bit counters Sep 10, 2016
rra Add .htaccess to rra directory to deny the download of rra files if .… May 17, 2010
scripts Resolving Issue #225 Jan 20, 2017
.travis.yml Email Cacti developers on failed builds and when failed builds go suc… Jan 2, 2017
LICENSE Initial revision May 18, 2002
README.md spelling Jan 18, 2017
about.php Correcting spelling and grammar issues Jan 13, 2017
aggregate_graphs.php Correcting spelling and grammar issues Jan 13, 2017
aggregate_items.php Update source code files copyright to new year Jan 1, 2017
aggregate_templates.php Update source code files copyright to new year Jan 1, 2017
auth_changepassword.php Correcting spelling and grammar issues Jan 13, 2017
auth_login.php Update source code files copyright to new year Jan 1, 2017
auth_profile.php Resolving Issues #211 Jan 16, 2017
automation_devices.php Update source code files copyright to new year Jan 1, 2017
automation_graph_rules.php Correcting spelling and grammar issues Jan 13, 2017
automation_networks.php Correcting spelling and grammar issues Jan 13, 2017
automation_snmp.php Update source code files copyright to new year Jan 1, 2017
automation_templates.php Correcting spelling and grammar issues Jan 13, 2017
automation_tree_rules.php Correcting spelling and grammar issues Jan 13, 2017
boost_rrdupdate.php Update source code files copyright to new year Jan 1, 2017
cacti.sql Missed two indexes for utf8mb4 test Jan 17, 2017
cdef.php Correcting spelling and grammar issues Jan 13, 2017
clog.php Update source code files copyright to new year Jan 1, 2017
clog_user.php Update source code files copyright to new year Jan 1, 2017
cmd.php Update source code files copyright to new year Jan 1, 2017
cmd_realtime.php Resolving Issue #225 Jan 20, 2017
color.php Correcting spelling and grammar issues Jan 13, 2017
color_templates.php Correcting spelling and grammar issues Jan 13, 2017
color_templates_items.php Update source code files copyright to new year Jan 1, 2017
data_input.php Add new hooks for customer data input types Jan 15, 2017
data_queries.php Correcting spelling and grammar issues Jan 13, 2017
data_source_profiles.php Correcting spelling and grammar issues Jan 13, 2017
data_sources.php Correcting spelling and grammar issues Jan 13, 2017
data_templates.php Resolving Issue #218 Jan 17, 2017
gprint_presets.php Correcting spelling and grammar issues Jan 13, 2017
graph.php Correcting spelling and grammar issues Jan 13, 2017
graph_image.php Resolving Issue #199 Jan 11, 2017
graph_json.php Resolving Issue #199 Jan 11, 2017
graph_realtime.php Correcting spelling and grammar issues Jan 13, 2017
graph_templates.php Correcting spelling and grammar issues Jan 13, 2017
graph_templates_inputs.php Update source code files copyright to new year Jan 1, 2017
graph_templates_items.php Update source code files copyright to new year Jan 1, 2017
graph_view.php Developer debug warning Jan 20, 2017
graph_xport.php Update source code files copyright to new year Jan 1, 2017
graphs.php Correcting spelling and grammar issues Jan 13, 2017
graphs_items.php Update source code files copyright to new year Jan 1, 2017
graphs_new.php Resolving Issue #217 Jan 17, 2017
host.php Resolving Issue #215 Jan 17, 2017
host_templates.php Correcting spelling and grammar issues Jan 13, 2017
index.php Resolving Issue #223 Jan 19, 2017
link.php Update source code files copyright to new year Jan 1, 2017
links.php Correcting spelling and grammar issues Jan 13, 2017
logout.php Update source code files copyright to new year Jan 1, 2017
managers.php Correcting spelling and grammar issues Jan 13, 2017
permission_denied.php Make permission denied messages consistent. Jan 17, 2017
plugins.php Correcting spelling and grammar issues Jan 13, 2017
poller.php Only update poller hostname if blank Jan 22, 2017
poller_automation.php Update source code files copyright to new year Jan 1, 2017
poller_boost.php Update source code files copyright to new year Jan 1, 2017
poller_commands.php Update source code files copyright to new year Jan 1, 2017
poller_dsstats.php Update source code files copyright to new year Jan 1, 2017
poller_export.php Update source code files copyright to new year Jan 1, 2017
poller_maintenance.php Update source code files copyright to new year Jan 1, 2017
poller_realtime.php Update source code files copyright to new year Jan 1, 2017
poller_recovery.php More Recovery mode testing Jan 16, 2017
poller_reports.php Update source code files copyright to new year Jan 1, 2017
poller_spikekill.php Update source code files copyright to new year Jan 1, 2017
pollers.php Recovery mode testing Jan 16, 2017
remote_agent.php Add log entry for denied remote access attempts Jan 22, 2017
reports_admin.php Update source code files copyright to new year Jan 1, 2017
reports_user.php Update source code files copyright to new year Jan 1, 2017
rrdcleaner.php Correcting spelling and grammar issues Jan 13, 2017
script_server.php Resolving Issue #225 Jan 20, 2017
settings.php Resolving part of Issue #214 Jan 16, 2017
sites.php Correcting spelling and grammar issues Jan 13, 2017
snmpagent_mibcache.php Convert all windows text to unix text Jan 2, 2017
snmpagent_mibcachechild.php Fix snmpagent_mibcache child process Jan 19, 2017
snmpagent_persist.php Update source code files copyright to new year Jan 1, 2017
spikekill.php Correcting spelling and grammar issues Jan 13, 2017
templates_export.php Update source code files copyright to new year Jan 1, 2017
templates_import.php Missing commit from import refactor Jan 8, 2017
tree.php Correcting spelling and grammar issues Jan 13, 2017
user_admin.php Resolving Issue #214 Jan 18, 2017
user_domains.php Correcting spelling and grammar issues Jan 13, 2017
user_group_admin.php Resolving the second part of Issue #214 Jan 16, 2017
utilities.php Correcting spelling and grammar issues Jan 13, 2017
vdef.php Correcting spelling and grammar issues Jan 13, 2017

README.md

Cacti TM

Cacti is a complete network graphing solution designed to harness the power of RRDTool's data storage and graphing functionality. Cacti provides support for:

  • multiple fast data collectors
  • network discovery
  • device management automation
  • advanced graph templating
  • aggregate graph templating
  • limitless data acquisition methods
  • embedded email notification facilities
  • user, group and login domain management features

All of this is wrapped in an intuitive, easy to use interface that makes sense for both LAN-sized installations and complex networks with thousands of devices.

Developed in the early 2000's by Ian Berry as a high school project, it has been used by thousands of companies and enthusiasts to monitor and manage their Networks and Data Centers.

Cacti 1.0

This release of Cacti has been two years in the making. With the release of Cacti 1.0, we have merged 19 Cacti Group developed plugins in to the base of Cacti in an effort to make Cacti less cumbersome to deploy and manage. With the merge of these plugins into the core of Cacti, they behave as if they were incorporated into Cacti from the beginning. This drove major redesign to address look and feel, performance, and scalability issues.

Merged Plugins

The plugins that have been merged include:

Plugin Description
snmpagent An SNMP Agent extension, Trap & Notification generator for Cacti data
clog A single click Cacti Log viewers for Administrators
settings A plugin for providing core Email and DNS services
boost Cacti's large system performance boosting plugin
dsstats Cacti's Data Source Statistics plugin
watermark Provides the ability to watermark your Cacti Graphs
ssl Forces Cacti connections over HTTPS
ugroup Supports User Groups in Cacti
domains Supports Multiple Authentication Domains in Cacti
jqueryskin The original Cacti skinning plugin
secpass Provides C3 level password and site security in Cacti
logrotate Provides cacti.log rotation services
realtime The Realtime Graphing plugin
rrdclean The RRDfile purging and maintenance plugin
nectar Provides Email based Graph reporting features in Cacti
aggregate Provides Templating, Creation and Management of Aggregate Cacti Graphs
autom8 Provides Graph and Tree creation automation services
discovery Provides Network Discovery and Device automation services
spikekill Removes spikes from Cacti Graphs
superlinks Allows Cacti Administrators to add additional sites to Cacti

Multiple Data Collection Intervals

In the Cacti 1.0 release, we have added support for multiple data collection intervals within the same Cacti installation. We have done this with the creation of a new object called a 'Data Source Profile'. These Data Source Profiles can be applied to Graphs at creation time, or at the Data Template level as a part of the automated Graph creation process.

Themes and HTML5

Cacti 1.0 supports skinning of the user interface through Themes. We have attempted to make Cacti 1.0 as HTML5 compatible as possible using jQuery, jQueryUI, and several jQuery plugins to make the user interface more appealing to people who wish to have a more modern browser experience. Ajax page rendering is incorporated throughout the interface to enhance the user experience. We have included four base Themes in the default Cacti install including the 'Classic' theme.

User Experience and Security

We have also tried to make Cacti easier to adopt by preventing most damaging activities such as accidentally removing a Data Source for a Graph that is still in existence, or deleting a Data Template or Graph Template that are in use. We have improved the Template Import and Export functions to allow you to preview Templates before incorporating them into your Cacti system.

We have also increased Cacti's overall security:

  • removal of the direct use of $_GET, $_REQUEST, and $_POST variables
  • minimized the possibility of SQL injection through the use of prepared statements in our database calls
  • reduced the likely hood of Cross Site Request Forgery through CSRF protection
  • use of authentication cookies
  • C3 level security settings for local accounts:
    • strong password hashing
    • forced regular password changes, complexity, and history
    • account lockout to prevent hacking into your Cacti instance from intruders
  • option to force connections over HTTPS
  • a new Developer Debug mode that will log all unsafe activities to the Cacti Log so that Cacti developers can write safer plugins.

All of this was done in an effort to have a more friendly and secure Cacti user experience.

Charting API's

We have also included several JavaScript based HTML5 Charting API's into the base Cacti including C3, D3, Chart.js, DyGraphs, and jQuery Sparklines in an effort to assist plugin developers who wish to use Graphing API's in their plugins other than RRDtool for creating various dashboards.

Remote Data Collection

We have added the capability to deploy and control multiple Data Collectors from inside of Cacti. The design of multiple Data Collectors includes an offline mode that will cache RRDtool updates on the remote server until network connectivity is restored. You can now deploy Cacti to remote sites whose devices are firewalled off from the main Cacti Server. The only requirement is that the Remote Data collectors must be able to communicate to the main Cacti server via MySQL and HTTP/HTTPS ports.

Enhanced Discovery and Automation

The Discovery and Autom8 plugins were redesigned and merged into a single plugin, incorporating multiple discovery networks and discovery frequencies.

Improved Graph Permissions, User Groups and Domains

Cacti 1.0 also includes a new Graph permissions interface, making the creation and management of Graph, Tree, Template, and Device permissions more flexible and intuitive. We also included support for User Groups and reworked the way that Realm permissions appear on the User Management page to make them appear in more of an Role Based (RBAC) fashion.

Improved Support for RRDtool Graph Options

In Cacti 1.0, we support more RRDtool Graph options including:

Graphs Templates

  • Full Right Axis Support
  • Shift
  • Dash and Dash Offset
  • Alt Y-Grid
  • No Grid Fit
  • Units Length
  • Tab Width
  • Dynamic Labels
  • Force Rules Legend
  • Legend Position

Graph Template Items

  • VDEF's
  • Stacked Lines
  • User Definable Line Widths
  • Text Align

Many, many New Features

There are many additional changes that are best left for a ChangeLog review. Some examples include:

  • A completely new Tree design that can scale to hundreds of thousands of nodes even over wide area networks
  • The ability to Audit Data Sources against their Data Template and be provided RRDtool syntax on how to resolve issues
  • A new Graph View that automatically resizes images to match your screen resolution
  • jQuery multi-select for Graph Templates on the various Graph View pages
  • Running Realtime on dozens of Graphs concurrently without additional popup windows
  • The ability for users to change their password from the UI
  • The ability for users to save their Graph Settings from the Graph View pages
  • Autocomplete in many areas of the UI where large dropdown lists would cause a slowdown in the UI over wide area networks
  • Per file, per plugin and per host debugging
  • The ability to synchronize Graph Templates to Graphs
  • New Meta objects including: Site, Remote Data Collectors and Data Source Profiles

Notes on Legacy Plugins

Plugins written for Cacti 0.8.8 and before will require rewrites in order to be compatible with Cacti 1.0. There have been several changes that all plugin developers need to be aware of. Please see the Cacti Wiki for information on migrating your own custom developed plugins to the Cacti 1.0 framework. Any of the Cacti Group maintained plugin can be used as reference plugins for driving your plugin migration to the 1.0 framework.

Contribute

Check out the main Cacti web site for distribution downloads, links to changelog and release notes and more!

Get help or help others by participating on the community forums.

Get involved in development by participating in active development on GitHub.

Requirements

Cacti should be able to run on any Linux, UNIX, or Windows based operating system with the following requirements:

  • PHP 5.3+
  • MySQL 5.1+
  • RRDTool 1.2+, 1.5+ recommended
  • NET-SNMP 5.5+
  • Web Server with PHP support

PHP Must also be compiled as a standalone cgi or cli binary. This is required for data gathering via cron.

Note About RRDtool

RRDTool is available in multiple versions and a majority of them are supported by Cacti. Please remember to confirm your Cacti settings for the RRDtool version if you having problem rendering graphs.

Data Sources

To handle data gathering, you can feed cacti the paths to any external script/command along with any data that the user will need to "fill in", cacti will then gather this data in a cron-job and populate a MySQL database/the round robin archives.

Data Sources can also be created which correspond to actual data on the graph. If a user would want to graph the ping times to a host, you could create a data source utilizing a script that pings a host and returns it's value in milliseconds. After defining options for RRDTool such as how to store the data you will be able to define any additional information that the data input source requires, such as a host to ping in this case. Once a data source is created, it is automatically maintained at 5 minute intervals.

Graphs

Once one or more Data Sources are defined, an RRDTool Graph can be created using the data within the Data Sources. Cacti allows you to create almost any imaginable RRDTool Graph using most of the standard RRDTool Graph types, CDEF's and VDEF's. A color selection area and automatic text alignment is also incorporated into the base Cacti making Graph Template creation easier to achieve.

Not only can you create RRDTool based Graphs in cacti, but there are many ways to display them. Along with a standard "list view" and a "preview mode", there is a "tree view", which allows you to put graphs onto a hierarchical Trees for organizational purposes.

User, Group and Domain Management

We have provided User, Group and Domain management in Cacti to make each user or group of users experience a customizable and personal one. Each user has the capability to save their own preferences to also increase it's adoption. Cacti includes an RBAC like User and Group editor to assist with Deploying and Managing Cacti.

Templating

Cacti is able to scale to a large number of Data Sources and Graphs through the use of various Templates. This allows the creation of a single Graph or Data Source Template which defines any Graph or Data Source associated with it. Device Templates enable you to define the capabilities of a Device so Cacti and what performance metrics are important and that can be collected automatically upon it's addition to Cacti.

Plugin Management

Cacti is more than a network monitoring system, it is an Operations Framework that allows the Cacti Administrator to create their own extensions to Cacti. Through our Plugin infrastructure, you can extend Cacti to provide other services outside of standard Cacti graphing. The Cacti Group continues to maintain over a dozen add-on plugins from our GitHub repository. If you are looking to add features to Cacti, there is quite a bit of reference material to choose from on GitHub.

Network Discovery and Automation

Cacti provides the Cacti Administrator a series of Network Automation tools in order to reduce the time and effort it takes to setup and manage a Cacti system. This includes: support for multiple Network Discovery rules as well as Device, Graph and Tree Automation Templates that allow Cacti Administrators add thousands of Devices to Cacti with much less effort than ever before.