[HOWTO] Cacti Install Guide CentOS 6 – 64

Installing and configuring Cacti with Cent OS 6.3
Before we can install Cacti, we must install the following packages.
• Apache : A Web server to display network graphs created by PHP and RRDTool.
• MySQL : A Database server to store cacti information.
• PHP : A script module to create graphs using RRDTool.
• PHP-SNMP : A PHP extension for SNMP to access data.
• NET-SNMP : A SNMP (Simple Network Management Protocol) is used to manage network.
• RRDTool : A database tool to manage and retrieve time series data like CPU load, Network Bandwidth etc.
• UnZip : A simple tool for extracting zip files

Once Cent OS 6.3 is installed login as “root” with the password you configured during the OS installation

Installing Apache
# yum install httpd httpd-devel

Install MySQL
# yum install mysql mysql-server

Install PHP
# yum install php-mysql php-pear php-common php-gd php-devel php php-mbstring php-cli php-mysql

Install PHP-SNMP
# yum install php-snmp

Install NET-SNMP
# yum install net-snmp-utils p net-snmp-libs php-pear-Net-SMTP

Install RRDTool
# yum install rrdtool

Install UnZip
# yum install unzip

Now that all the required packages are installed, we must start their services running.

Start Apache
# service httpd start

Start MySQL
# service mysqld start

Start SNMP
# service snmpd start

Setup start up links for Apache, MySQL and SNMP
# /sbin/chkconfig –levels 345 httpd on

# /sbin/chkconfig –levels 345 mysqld on

# /sbin/chkconfig –levels 345 snmpd on

Add the Extra Packages for Enterprise Linux (EPEL) repository (64-Bit CentOS 6 only). This is where the Cacti installation is downloaded from.
# wget http://download.fedoraproject.org/pub/e … noarch.rpm
# rpm -ivh epel-release-6-8.noarch.rpm

Download and Install Cacti
# yum install cacti

Setup MySQL Server for Cacti
# mysqladmin -u root password Desired-Password-Here

Create MySQL Cacti Database
# mysql -u root -p
mysql> create database cacti;
mysql> GRANT ALL ON cacti.* TO cacti@localhost IDENTIFIED BY ‘Password-you-set-above’;
mysql> FLUSH privileges;
mysql> quit;

Setup Cacti Tables in MySQL
To being, we need to know the location of the cacti.sql file where the tables will be installed. Use the following command to show the location.

# rpm -ql cacti | grep cacti.sql

Sample Output

Now we need to install the tables into the cacti.sql file. Use the following command to do this, replace the green text for the location shown by the command above.

# mysql -u cacti -p cacti < /usr/share/cacti-0.8.7d/cacti.sql

Configure MySQL settings for Cacti
Open db.php with your preferred editor

# vi /etc/cacti/db.php

Make the changes highlighted in red

/* make sure these values reflect your actual database/host/user/password */
$database_type = “mysql”;
$database_default = “cacti”;
$database_hostname = “localhost”;
$database_username = “cacti”;
$database_password = “your-password-here”;
$database_port = “3306”;
$database_ssl = false;

Configure Apache Server for Cacti Installation
You need to allow access to Cacti from the ipranges you require. By default I choose to allow access from all IP addresses. This can be viewd as an unsecure option and you may wish to follow a different path. (Google is your friend).

Open /etc/httpd/conf.d/cacti.conf with your preferred editor

# vi /etc/httpd/conf.d/cacti.conf

Add the following section at the bottom of the config file

Alias /cacti /usr/share/cacti

<Directory /usr/share/cacti/>
Order Deny,Allow
Deny from none
Allow from all

In order for this change to take effect, Apache must be restarted. Issue the following command to restart Apache

# service httpd restart

Setting Cron for Cacti
Open the Cacti cron file and and uncomment the line to enable the poller.php to run every5 mins.

#vi /etc/cron.d/cacti

Delete the # in the following line

#*/5 * * * * cacti /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1

Configure firewall to allow access to Cacti from the web
Open the iptables file
# vi /etc/sysconfig/iptables

Add the following line
# -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT

Restart iptables
# service iptables restart

Complete Cacti Installation via web installer
Open http://SERVER-IP/cacti to view the web installer.

Basic Cacti configuration
In order for Cacti to be able to complete all the tasks we require, a few plugins need to be installed. These are;
• Monitor
• Errorimage
• Settings
• Jqueryskin
• Discovery
• Weathermap
• Realtime
• Nectar
• Thold
• Watermark
• Hmib
• Syslog
All the required plugins can be found either on Cacti website (docs.cacti.net/plugins).

Download the required plugins
We will be using the wget command to download the plugins as required. The links in this document refer to the plugins at the date of the documents publication. You may need to obtain the current links from the docs.cacti.net/plugins site.

Switch to the Cacti plugins directory
# cd /usr/share/cacti/plugins

Monitor Plugin
# wget http://docs.cacti.net/_media/plugin:monitor-v1.3-1.tgz

Error Image
# wget http://docs.cacti.net/_media/plugin:err … v0.2-1.tgz

# wget http://docs.cacti.net/_media/plugin:set … 0.71-1.tgz

Jqueryskin (If below link doesn’t work get current link from http://www.freedrive.com/folder/342025)
wget http://node1.nirvanix.com/jN8Cdrq0~3CM6 … ryskin.zip

# wget http://docs.cacti.net/_media/plugin:dis … v1.5-1.tgz

# wget http://www.network-weathermap.com/files … -0.97a.zip

# wget http://docs.cacti.net/_media/plugin:realtime-v0.5-2.tgz

# wget http://docs.cacti.net/_media/plugin:nectar-v0.35a.tgz

# wget http://docs.cacti.net/_media/plugin:thold-v0.4.9-3.tgz

Watermark (If below link doesn’t work get current link from http://www.freedrive.com/folder/342025)
wget http://node1.nirvanix.com/2-sZuPC-~7g88 … ermark.zip

# wget http://docs.cacti.net/_media/plugin:hmib-v1.4-2.tgz

# wget http://docs.cacti.net/_media/plugin:syslog-v1.22-2.tgz

Renaming the plugins ready for extraction
Before we can install any plugins we need to remove the “plugin:” prefiex has been attached to any of the plugins hosted on the cacti website. Other plugins like weathermap don’t have this prefix and can be ignored at this step.

To check which files need to be corrected list all the plugins we have just downloaded

# ls

Sample Output

Every file which has the “plugin:” prefix needs to be renamed with the “mv” command. To use this command simply write “mv PLUGINS-OLD-NAME PLUGINS-NEW-NAME” at the command prompt for each plugin.

# mv plugin:monitor-v1.3-1.tgz monitor-v1.3-1.tgz
# mv plugin:discovery-v1.5-1.tgz discovery-v1.5-1.tgz
# mv plugin:hmib-v1.4-2.tgz hmib-v1.4-2.tgz
# mv plugin:nectar-v0.35a.tgz nectar-v0.35a.tgz
# mv plugin:settings-v0.71-1.tgz settings-v0.71-1.tgz
# mv plugin:thold-v0.4.9-3.tgz thold-v0.4.9-3.tgz
# mv plugin:errorimage-v0.2-1.tgz errorimage-v0.2-1.tgz
# mv plugin:realtime-v0.5-2.tgz realtime-v0.5-2.tgz
# mv plugin:syslog-v1.22-2.tgz syslog-v1.22-2.tgz

At the point we need to check that all the plugins are named correctly. Issue the “ls” command and look for any plugins which have the prefiex “plugin:”. If you see any rename them as shown above and then continue.

Extracting the plugins
In order to extract the plugins, issue the “tar –zvxf PLUGIN-NAME” command for each plugin compressed with .tgz and “unzip PLUGIN-NAME” for each plugin compressed with .zip

# tar -zvxf monitor-v1.3-1.tgz
# tar -zvxf discovery-v1.5-1.tgz
# tar -zvxf hmib-v1.4-2.tgz
# tar -zvxf nectar-v0.35a.tgz
# tar -zvxf settings-v0.71-1.tgz
# tar -zvxf thold-v0.4.9-3.tgz
# tar -zvxf errorimage-v0.2-1.tgz
# tar -zvxf realtime-v0.5-2.tgz
# tar -zvxf syslog-v1.22-2.tgz
# unzip php-weathermap-0.97a.zip
# unzip watermark.zip
# unzip jqueryskin.zip

Tidy up the Plugins Folder
Now that all the plugins have been extracted, we need to remove the compressed files

# rm -rf monitor-v1.3-1.tgz
# rm -rf discovery-v1.5-1.tgz
# rm -rf hmib-v1.4-2.tgz
# rm -rf nectar-v0.35a.tgz
# rm -rf settings-v0.71-1.tgz
# rm -rf thold-v0.4.9-3.tgz
# rm -rf errorimage-v0.2-1.tgz
# rm -rf realtime-v0.5-2.tgz
# rm -rf syslog-v1.22-2.tgz
# rm -rf php-weathermap-0.97a.zip
# rm -rf watermark.zip
# rm -rf jqueryskin.zip

Confirm that all compressed files have been deleted by listing all files in the folder
# ls

If any compressed files remain, issue the “rm -rf COMPRESSED-FILE-NAME” command to remove them

Configuring the plugins
In order for the plugins to Install correctly some of them require a little configuring before they will work.

Realtime Graphs
Realtime Graphs requires a directory to store temp images as the realtime graphs are created. This directory needs to be writeable. Change directorys to the extracted reatime graphs folder.
# cd /usr/share/cacti/plugins/realtime

Create a new directory called “temp”
# mkdir temp

Set the permissions on the new directory to be writable by all
# chmod 777 temp

We need to activate the editor in editor.php. Navigate to the correct folder
# cd /usr/share/cacti/plugins/weathermap

Make the configs directory writeable by the user
# chmod 777 configs

Make the output directory writable by the user
# chmod 777 output

Open the editor.php
# vi editor.php

Set ENABLED=true at the top of editor.php, then save and exit the editor

Set the max PHP file size to 768Mb.
To find the php.ini use the command
#find / -name php.ini

Change directory to the correct directory and open php.ini in your chosen editor
#cd /etc
#vi php.ini

Scroll down until you see “memory_limit = 128M”. Edit this to be “memory_limit = 768M” then save and close the editor

Install Webmin
Webmin makes simple tasks like setting the system time and keeping things up to date very easy.

Change directory to the root directory
# cd /root/

Make a new directory to download webmin into
# mkdir webmin

Change directory to your newly created Webmin directory
# cd /root/webmin/

Download the latest tar.gz version of Webmin (Get link from http://www.webmin.com/download.html)
# wget http://prdownloads.sourceforge.net/weba … 610.tar.gz

Extract the Webmin download
# tar -xf webmin-1.610.tar

Change directory to the extracted Webmin directory
# cd webmin-1.610

Run the Webmin setup (accept default settings and enter a new password)
# ./setup.sh /usr/local/webmin

Add Webmins port to the iptables open the iptables file
# vi /etc/sysconfig/iptables

Add the following line
# -A INPUT -m state -state NEW -m tcp -p tcp -dport 10000 -j ACCEPT

Restart iptables
# service iptables restart

Configure the servers clock so that all Cacti graphs show the correct time
1. Login to Webmins web interface YOUR-SERVERS-IP:10000
2. Click “Hardware” on the left
3. Click “System Time” on the left
4. Set the “System Time” to the correct time
5. Click “Apply”
6. Set the “Hardware Time” to the correct time
7. Click “Save”
8. Click Logout on the left

Activate Plugins
1. View the cacti website (YOUR-SERVER-IP/Cacti)
2. Click “Plugin Management” on the left
3. Install and activate all plugins excluding Syslog (we will activate syslog in a moment)
4. Click “Settings” on the left
5. Click the “Misc” tab across the top
6. In the “Realtime Graphs” section input “/usr/share/cacti/plugins/realtime/temp” in the “Cache Directory”
7. Click “Save”
8. Check that the “Cache Directory” now shows “[OK: DIR FOUND]”
9. Click the “Visual” tab
10. In the “Watermark” section select “No Grid Fit”
11. Press “Save”
12. Click “Plugin Management” on the left
13. Click “Install” on Syslog
14. Change the “Retention Policy” to 3 Months
15. Click “Install”
16. Click “Activate” on the Syslog plugin

Install Advanced Ping 2.2
1. Download Advanced Ping template to your pc (http://www.freedrive.com/folder/342025)
2. In the Cacti web interface click “Import/Export” on the left
3. Click “Import Templates”
4. Click “Choose File”
5. Select the Advanced Ping template you downloaded
6. Click “Import” at the bottom

Finally, add your devices to Cacti and graph them as per your requirements.