Протестировано на:
Ubuntu: 24.04
Приветствую вас, почтенные инженеры и смотрители серверных маховиков! Вытирайте мазут с рук, присаживайтесь поближе к паровому терминалу. Сегодня мы снимем толстый слой ржавчины со старого, но чертовски надежного инструмента контроля — Cacti.
В старых мануалах времён Ubuntu 20.04 и ветхого PHP 7.4 чертежи давно покрылись плесенью. Пытаться запустить их сегодня — всё равно что подавать перегретый пар в треснувший медный цилиндр: оглушительно бабахнет ошибками депрекации. Мы в ROADIT не любим утечек давления, поэтому полностью пересоберём этот агрегат под современные реалии: Ubuntu 24.04 LTS и мощный компрессор PHP 8.3.
Cacti — это, по сути, роскошный латунный интерфейс для сурового механического самописца RRDtool. Вместо того чтобы вручную ковырять базы данных, он использует протокол SNMP (наш верный паровой телеграф) для сбора метрик с маршрутизаторов, коммутаторов и серверов, превращая сухие цифры в красивые графики давления, температуры ЦП и загрузки сетевых каналов.
Шаг 1. Продувка системы и подготовка котлов
Прежде чем возводить надстройку, убедимся, что несущая конструкция нашей ОС не имеет дефектов. Обновим системные пакеты до актуального состояния:
sudo apt update && sudo apt upgrade -yТеперь установим базовые узлы и механизмы, без которых наш телеграф не сможет декодировать сигналы. Нам понадобятся сам RRDtool, утилиты SNMP и важные библиотеки:
sudo apt install snmp php-snmp rrdtool librrds-perl unzip curl git gnupg2 -y
Шаг 2. Сборка приводного двигателя (Установка LAMP и тюнинг PHP)
Наш манометр требует прочного фундамента в виде связки Apache, MariaDB и свежего PHP. В репозиториях Ubuntu 24.04 нас ждет стабильный PHP 8.3. Закачаем уголь в топку:
sudo apt install apache2 mariadb-server php php-mysql libapache2-mod-php php-xml php-ldap php-mbstring php-gd php-gmp php-intl -y⚡ Важно
Внимание, неочевидный нюанс! По умолчанию PHP настроен как экономная карманная грелка. Если у вас разветвленная сеть коммутаторов, Cacti быстро захлебнется. Нам нужно поддать давления в настройках. Открываем главный регулировочный клапан для Apache:
sudo nano /etc/php/8.3/apache2/php.iniИ меняем параметры на следующие (используйте поиск Ctrl+W в nano):
memory_limit = 512M
max_execution_time = 60
date.timezone = Europe/MoscowЗатем проделываем абсолютно то же самое для консольного конфигуратора (CLI), иначе планировщик задач не сможет проворачивать свои шестерни:
sudo nano /etc/php/8.3/cli/php.iniПрименяем изменения, перезапустив наш распределительный вал Apache:
sudo systemctl restart apache2Шаг 3. Калибровка гидравлики (Настройка MariaDB)
База данных — это гидравлический аккумулятор Cacti. Старые инструкции предлагают конфигурацию, которая в современной MariaDB вызовет критический сбой, так как параметры вроде innodb_file_format давно сданы в утиль.
Открываем конфигурационный файл СУБД:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnfВнутри секции [mysqld] строго подкручиваем следующие вентили:
collation-server = utf8mb4_unicode_ci
max_heap_table_size = 128M
tmp_table_size = 64M
join_buffer_size = 64M
innodb_buffer_pool_size = 512M
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
innodb_doublewrite = OFFПерезапускаем службу, чтобы поршни встали в новые пазы:
sudo systemctl restart mariadbТеперь заходим в святая святых базы данных для создания рабочих емкостей:
sudo mariadbВнутри консоли инициализируем базу, создаем инженера-пользователя и выдаем ему разводной ключ (пароль StrongSteamPassword замените на свой):
CREATE DATABASE cactidb;
GRANT ALL ON cactidb.* TO cactiuser@localhost IDENTIFIED BY 'StrongSteamPassword';
FLUSH PRIVILEGES;
EXIT;Главный капкан старых мануалов! Раньше авторы предлагали импортировать файл mysql_test_data_timezone.sql. Это фатальная ошибка — это тестовая пустышка! Cacti требует реальные часовые пояса вашей системы, иначе графики будут показывать время на Марсе. Импортируем настоящие данные из недр Linux:
mariadb-tzinfo-to-sql /usr/share/zoneinfo | mariadb -u root mysqlСнова заходим в консоль базы и даем права Cacti на чтение этих таблиц:
sudo mariadbGRANT SELECT ON mysql.time_zone_name TO cactiuser@localhost;
FLUSH PRIVILEGES;
EXIT;
Шаг 4. Монтаж шестерней самого Cacti
Скачиваем самый свежий и чистый дистиллят Cacti с официального архива:
wget https://www.cacti.net/downloads/cacti-latest.tar.gz
tar -zxvf cacti-latest.tar.gzПеремещаем распакованные механизмы в рабочую зону веб-сервера:
sudo mv cacti-1* /var/www/html/cactiЗаливаем первичное масло (структуру таблиц) в нашу базу данных:
mariadb -u cactiuser -p cactidb < /var/www/html/cacti/cacti.sql(Система потребует ввести созданный вами ранее StrongSteamPassword)
Создаем рабочий конфигурационный файл из заводского шаблона:
sudo cp /var/www/html/cacti/include/config.php.dist /var/www/html/cacti/include/config.phpПрописываем реквизиты доступа к нашей гидравлической системе:
$database_type = 'mysql';
$database_default = 'cactidb';
$database_hostname = 'localhost';
$database_username = 'cactiuser';
$database_password = 'StrongSteamPassword';
$database_port = '3306';Создаем пустой бак для системных логов и передаем права на весь каталог пользователю www-data (под чьим именем крутится наш паровой Apache):
sudo touch /var/www/html/cacti/log/cacti.log
sudo chown -R www-data:www-data /var/www/html/cacti/
sudo chmod -R 775 /var/www/html/cacti/Чтобы манометр обновлял показания каждые 5 минут, нам нужен неустанный маятник — планировщик cron. Создаем задачу:
sudo nano /etc/cron.d/cactiВносим туда строчку автоматического запуска поллера:
*/5 * * * * www-data php /var/www/html/cacti/poller.php > /dev/null 2>&1Шаг 5. Настройка парораспределителя (Apache)
Остался последний штрих в железной части — объяснить Apache, как правильно подавать пар в кабину управления Cacti. Создаем файл виртуального хоста:
sudo nano /etc/apache2/sites-available/cacti.confНаполняем его актуальной конфигурацией:
Alias /cacti /var/www/html/cacti
<Directory /var/www/html/cacti>
Options +FollowSymLinks
AllowOverride None
Require all granted
AddType application/x-httpd-php .php
<IfModule mod_php.c>
php_flag magic_quotes_gpc Off
php_flag short_open_tag On
php_flag register_globals Off
php_flag register_argc_argv On
php_flag track_vars On
php_value mbstring.func_overload 0
php_value include_path .
</IfModule>
DirectoryIndex index.php
</Directory>Вводим конфигурацию в зацепление и перезапускаем сервер:
sudo a2ensite cacti
sudo systemctl restart apache2Шаг 6. Запуск главного пульта управления
Открывайте ваш любимый навигатор по сети и вбивайте адрес: http://ip-адрес-вашего-сервера/cacti.
Перед вами появится медная табличка авторизации. Ключи по умолчанию:
- Логин:
admin - Пароль:
admin
Система тут же заставит вас сменить этот заводской дефект безопасности на надежный шифр. Далее запустится мастер инсталляции. Нажимайте «Далее» (Next), подтверждая, что все наши манометры, PHP-модули и пути к RRDtool светятся зеленым цветом.
Как только процесс завершится, перед вами раскинется величественная контрольная панель Cacti. Подключайте к ней свои паровые машины, коммутаторы и роутеры по SNMP, и пусть ваши графики никогда не зашкаливают!

⚙️ Машинное отделение ROADIT благодарит за прочтение.
Больше команд, шпаргалок и обзоров — на roadit.ru и в нашем Телеграф-канале.
📋 Все команды