Spine is a multi-threaded Data Collector for Cacti that has the ability to pull data from network attached Devices at extreme scale. It is the tool that allows Cacti installs to scale into the 10's of thousands of hosts per Cacti system. Written in C, it takes advantage of POSIX threads, and is linked directly against the Net-SNMP's library for ultimate speed of data collection. Spine is a replacement for the default cmd.php Data Collector which has limits in scalability.
All production Cacti installs should use spine since network outages are handled much more transparently when using the spine Data Collector over the cmd.php Data Collector. In years past, it was difficult for some users of spine to either compile or install spine, but since both Cacti and spine are now included in many Linux distributions as well as in Cacti's Windows installer, there is really no reason not to use it. Note that before you adopt spine, you should audit your MySQL or MariaDB configuration to ensure that it can handle the load that spine will present to the database. This includes most importantly the number of concurrent connections will be required to support it.
To determine how long cmd.php is taking to execute, run the following command inside of your Cacti directory:
$ php poller.php
08/28/2004 08:42:43 PM - SYSTEM STATS: Time: 2.4707 s, Method: cmd.php, Processes: 1, Threads: N/A, Hosts: 2, Hosts/Process: 2
This example tells us that cmd.php took 2.47 seconds to run using a single process. Since 2.47 is nowhere near the 300 second limit, we should be fine with cmd.php for quite some time. However, note that if a portion of your network is not accessible for some time, the cmd.php collector does not handle these situations as well as spine. If you are attempting to monitor multiple sites, and those sites have unreliable connections to your main site, you should consider deploying Remote Data Collectors to those sites.
We need some real benchmarks that show off Spine's speed! Include the following information if you wish to submit your own benchmark data.
Hosts Polled: XXXX
Average Time to Poll: XXX Minutes
Concurrent Processes: 1 or X
Threads: 1 or X
Processor Speed: XXX Mhz
Number of Processors: 1-8