Saminnet-Search Article Wiki Forum Piwigo SNS Cloud vtiger Sugar
Cacti Migration to new server

Cacti Migration to new server

Cactiツis a popular network graphing tool widely used by many service providers. For those of you who have been using Cacti to visualize the performance of various elements of your network, it is sometimes necessary to migrate Cacti and all its graph datasets from one server to another. Why? The current server may be old, or is running out of space and CPU, or you may simply want to move to new hardware platform. Whichever the case, it is possible to move Cacti data sets from one server to another, while minimizing disruptions in graph plotting. In this tutorial we will see just how easily we can do that.

Step 1: Setting up Cacti in the New Server

We will need to stop Cacti at the old server during the migration process. To minimize any gaps in graphs, we will prepare the newer server first (while Cacti at the old server is still running).

We will start the process by installing Cacti in the new server. Aツprevious tutorialツprovides detailed information on how we can set up Cacti in the new server. To recap, we can useツapt-getツ(Debian/Ubuntu) orツyumツ(RHEL/CentOS) to install Cacti and set up necessary MySQL databases.

Step 2: Disabling Poller on Both Servers

After the installation is finished, we will disable the cron job for Cacti poller in both servers. This will ensure that neither of the servers will poll or populate any more graphs. That is, the graphs will remain unchanged during the migration window. We will enable the cron job once the graphs have been migrated.

# vim /etc/cron.d/cacti
## Comment out the cacti poller cron job ##

# */5 * * * * www-data php --define suhosin.memory_limit=512M /usr/share/cacti/site/poller.php 2>&1 >/dev/null | if [ -f /usr/bin/ts ] ; then ts ; else tee ; fi >> /var/log/cacti/poller-error.log

Step 3: Migrating Cacti Database

In the next step, we will create a database dump from the MySQL server running on the old Cacti server. Once the database dump is ready, we will copy that dump file to the new server and update records in the Cacti database.

Step 3.1: Old Server

To create a database dump, we will use the following command. Type in the MySQL root password when prompted.

# mysqldump -u root -p cacti > cactidump.sql

The above command will create a MySQL dump file namedツcactidump.sql, which contains all data from the database 'cacti'.

Next, we will transfer the dump file to the server.

# scp cactidump.sql root@NewServerIP:/root

You should use the IP address of your new server and the user that is relevant to your setup. I am using root as an example.

Step 3.2: New Server

After the dump file has been migrated, we will useツmysqldumpツagain to populate the database 'cacti' with data from the old server.

# mysqldump -u root -p cacti < /root/cactidump.sql

Optional:ツYou can easily verify whether the database has been populated by examining the database as follows.

# mysql -u root 窶菟
mysql> use cacti;
Database changed
mysql> select description from host;
| description |
| Server-2    |
| Server-1    |
2 rows in set (0.00 sec)
mysql> exit;

Step 4: Preparing and Migrating the RRD Files

Unfortunately, Cacti cannot update the graphs if the RRD files are copied directly to the new server. The right way to migrate the graphs is to convert them to XML, move them to the new server and restore the RRD files from XML.

Step 4.1: Old Server

On the old server, convert RRD files into XML files as follows.

Create a directory to store the XML files.

# mkdir /tmp/xml
# cd /var/lib/cacti/rra

Convert the RRD files to XML files.

# for i in `find -name "*.rrd"`; do rrdtool dump $i > /tmp/xml/$i.xml; done

Create a tar file.

# cd /tmp/xml
# tar cvfz cacti.tar.gz *

Copy the tar file to the new server.

# scp cacti.tar.gz root@NewServerIP:/root

Step 4.2: New Server

On the new server, we will copy the tar file to the right directory and extract the contents. After extraction, we will restore the RRD files from the XML ones.

Copy and extract the files to the right directory.

# cp /root/cacti.tar.gz /var/lib/cacti/rra
# cd /var/lib/cacti/rra
# tar zxvf cacti.tar.gz

Restore the RRD files from the XML files.

# for i in `find -name "*.xml"`; do rrdtool restore $i `echo $i |sed s/.xml//g`; done

Now that we have the RRD files needed by Cacti, we can go ahead and delete the tar file and the XML files.

Step 5: Changing Ownership of the RRD files in the New Server

We are almost done with the migration. At the new server, we need to make sure that the Cacti poller can read/write the RRD files. To do that, first we will check the ownership details for the RRD files.

On the old server:

# ls -l /var/lib/cacti/rra/
-rw-rw-r-- 1 www-data www-data  94816 Dec 14 13:50 server-1_traffic_in_8.rrd
-rw-rw-r-- 1 www-data www-data  94816 May  7 02:10 server-1_traffic_in_9.rrd
-rw-rw-r-- 1 www-data www-data  94816 May  7 02:10 server-2_traffic_in_10.rrd

On the new server:

# chown www-data:www-data /var/lib/cacti/rra/*.rrd

Now the Cacti poller in the new server has read/write permissions to the RRD files.

Step 6: Activating the Poller

In step 1, we has disabled the Cacti poller in both servers. As the migration is completed, we will enable the poller in the new server.

# vim /etc/cron.d/cacti
## Uncomment the cacti poller cron job ##

*/5 * * * * www-data php --define suhosin.memory_limit=512M /usr/share/cacti/site/poller.php 2>&1 >/dev/null | if [ -f /usr/bin/ts ] ; then ts ; else tee ; fi >> /var/log/cacti/poller-error.log

Now the cron daemon should invoke the Cacti poller script every 5 minutes, and Cacti graphs should start updating within maximum 15 minutes.

If you want to hold on to the old server for the time being, you could enable the poller in the old server too. If enabled, both servers should keep polling and populating the graphs, which should be identical.

Accessing the New Server

Now that the migration is completed, you can access Cacti by going to http://NewServerIP/cacti on your web browser.

  • Username: admin
  • Password: same as the old server

Here I am adding some screenshots from both servers below.

Figure 1: Old Server Graphs

Figure 2: New Server Graphs


In most cases Cacti migration should be done smoothly. In case you run into any issues, you can check the following.

First, remember that patience is the key. I have seen Cacti graphs taking over 15 minutes to start populating. Don't start troubleshooting too soon.

Check if the cron daemon is running. Without cron daemon, graphs will not be updated.

Check if the RRD files are writable by Cacti.

Verify that both servers are using the same poller. For example, if the old server was usingツcacti-spineツas the poller, the new server should do the same. This setting can be viewed under Console > Settings > Poller > Poller Type.

Finally, the Cacti log file is always a useful source of information for troubleshooting. To make Cacti logs updated with relevant data, change the logging level to at least 'Medium'. This can be changed under Console > Settings > General > Poller Logging Level.

The logs can be viewed at Console > System Utilities > View Cacti Log File.

To sum up, we can easily migrate Cacti graphs from one server to another. The graphs are generated based on the data contained in the RRD files. Other data like hosts, graph trees, RRDs associated with the graphs are all stored in MySQL database. Thus migrating MySQL database along with RRD files should do the trick.

Hope this helps.


0 #1 Guest 2018-12-31 09:44
Normally I do not read post on blogs, however I would like to say that this write-up very
forced me to try and do so! Your writing taste has been amazed
me. Thank you, very nice article.

my blog post -

Articles by Date

TweetTweet Share on LinkedInShare on LinkedIn Share on Google+Google+ Submit to RedditReddit Publish on WordPress WordPress Send emailSend email