Cacti is a free and open-source web-based network monitoring and graphing tool that helps to track your device’s network performance in almost real-time.

Cacti gathers performance metrics from servers and network devices and graphs and stores them for reporting and historical analysis.

Here, we will see how to install Cacti on Ubuntu 22.04.

Requirement (from Cacti website)

  • Web Server that supports PHP e.g. Apache, Nginx, or IIS
  • Build environment when using spine (gcc, automake, autoconf, libtool, help2man)
  • RRDtool 1.3 or greater, 1.5+ recommended
  • PHP 5.4 or greater, 5.5+ recommended
  • MySQL 5.6 or MariaDB 5.5 or greater

Here is our setup:

Ubuntu 22.04 (minimal)
1 vCPU + 4GB RAM

1

PrerequisitesFirst, update the repository index

[copy_inline text=”sudo apt update”]
2

Install Apache & PHP ExtensionsInstall the required PHP extensions, nano and cron

[copy_inline text=”sudo apt install -y apache2 libapache2-mod-php php php-mysql php-xml php-mbstring php-json php-gd php-gmp php-zip php-ldap php-intl nano cron”]

PHP Settings for Cacti

Cacti necessitates the following values in the php.ini files. It might be necessary to modify these values for both the web service located at /etc/php/8.1/apache2/php.ini and the Command Line Interface (CLI) located at /etc/php/8.1/cli/php.ini, provided your system operates on PHP version 8.1.

Search and uncomment accordingly for both files below:

  • date.timezone = Asia/Kuala_Lumpur
  • memory_limit = 512M
  • max_execution_time = 60
[copy_inline text=”sudo nano /etc/php/8.1/apache2/php.ini”]
[copy_inline text=”sudo nano /etc/php/8.1/cli/php.ini”]
[copy_inline text=”sudo sed -i ‘s/\;date.timezone \=/date.timezone \= US\/Central/g’ /etc/php/8.1/apache2/php.ini /etc/php/8.1/cli/php.ini”]
[copy_inline text=”sudo sed -i ‘s/^memory_limit \= .*/memory_limit \= 512M/g’ /etc/php/8.1/apache2/php.ini /etc/php/8.1/cli/php.ini”]
[copy_inline text=”sudo sed -i ‘s/^max_execution_time \= .*/max_execution_time \= 60/g’ /etc/php/8.1/apache2/php.ini /etc/php/8.1/cli/php.ini”]

3

Install MariaDB DatabaseMariaDB, originating from the MariaDB Foundation, is an open-source database server. It represents a branch derived from the widely known MySQL database management system.

[copy_inline text=”sudo apt update”]
[copy_inline text=”sudo apt install -y mariadb-server mariadb-client”]
[copy_inline text=”sudo mysql_secure_installation”]

Output:

  • Enter current password for root (enter for none): << Just Press Enter
  • Switch to unix_socket authentication [Y/n] N<< Disable Unix Socket Authentication
  • Change the root password? [Y/n] Y<< Set MariaDB root password
  • New password: xxx<< Enter new MariaDB root password
  • Re-enter new password: xxx<< Re-enter new MariaDB root password
Show more +
4

Tune Database for CactiTo install Cacti, you’ll need to adjust several MariaDB settings by modifying the configuration file.

[copy_inline text=”sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf”]

Add/update the below settings in the [mysqld] section, and uncomment collation-server as shown below.

collation-server = utf8mb4_unicode_ci
max_heap_table_size = 128M
tmp_table_size = 64M
join_buffer_size = 8M
innodb_file_format = Barracuda
innodb_doublewrite = off
innodb_large_prefix = 1
innodb_buffer_pool_size = 1024MB
innodb_flush_log_at_timeout = 3
innodb_read_io_threads = 32
innodb_write_io_threads = 16
innodb_io_capacity = 5000
innodb_io_capacity_max = 10000

5

Install SNMP for Cactiand restart MariaDB and Apache services.

[copy_inline text=”sudo apt install -y snmp php-snmp rrdtool librrds-perl”]
[copy_inline text=”sudo systemctl restart mariadb”]
[copy_inline text=”sudo systemctl restart apache2″]
6

Install Cacti on Ubuntu 22.04Create Database for Cacti

[copy_inline text=”sudo mysql -u root -p”]
[copy_inline text=”CREATE DATABASE cacti DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;”]
[copy_inline text=”GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY ‘P@5sword4C@cti’;”]
[copy_inline text=”ALTER DATABASE cacti CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;”]
[copy_inline text=”flush privileges;”]
[copy_inline text=”exit”]

To grant access to the mysql.time_zone_name table for the database user (cactiuser), you should begin by importing the mysql_test_data_timezone.sql file into the mysql database.

[copy_inline text=”sudo mysql -u root -p mysql < /usr/share/mysql/mysql_test_data_timezone.sql"]

Then, log in to MySQL.

[copy_inline text=”sudo mysql -u root -p”]

Grant permission to the database user (cactiuser).

[copy_inline text=”GRANT SELECT ON mysql.time_zone_name TO cactiuser@localhost;”]
[copy_inline text=”flush privileges;”]
[copy_inline text=”exit”]
7

Download Cacti PackageFirst, use the wget command to download the most recent version of the Cacti package.

[copy_inline text=”wget https://www.cacti.net/downloads/cacti-latest.tar.gz”]

Afterward, utilize the tar command to extract the Cacti archive, and relocate the extracted files to the /var/www/html directory.

[copy_inline text=”tar -zxvf cacti-latest.tar.gz”]
[copy_inline text=”sudo mv cacti-1* /var/www/html/cacti”]

And then import the default Cacti database data to the newly created database.

[copy_inline text=”sudo mysql -u root -p cacti < /var/www/html/cacti/cacti.sql"]

Next, modify the Cacti configuration file to specify details such as the database type, name, hostname, username, and password.

[copy_inline text=”sudo nano /var/www/html/cacti/include/config.php”]

Then, make the changes according to your requirement.

Finally, restart the Apache service.

[copy_inline text=”sudo systemctl restart apache2″]

You might also have to adjust the ownership of the Cacti directory to the Apache user (www-data).

[copy_inline text=”sudo chown -R www-data:www-data /var/www/html/cacti”]

Add the following entry in the cron to allow Cacti poller to poll every five minutes.

echo “*/5 * * * * www-data php /var/www/html/cacti/poller.php > /dev/null 2>&1” | sudo tee /etc/cron.d/cacti

8

Setup cactiVisit the following URL to begin the installation of Cacti.

http://Your.IP.Address/cacti

Login to Cacti to initiate the setup.

The default username and password are admin.

Categorized in:

Network,

Last Update: 09/08/2024