Протестировано на:
CentOS Stream: 9
Cacti — это мощная система мониторинга сети и ресурсов, представляющая собой PHP-оболочку для RRDtool и SNMP. Она хранит все необходимые данные в базе MySQL и визуализирует метрики в виде графиков. Представьте Cacti как паровую фабрику: Apache играет роль котла, MySQL — жаровни, а RRDtool — железными манометрами, фиксирующими показания датчиков.
Архитектура Cacti проста: веб-интерфейс на PHP соединяется с базой данных, а демоны опрашивают устройства по SNMP и записывают результаты в RRD-файлы. Далее движок Cacti строит графики по этим данным.

Подготовка системы
Обновление системы и репозиториев. Для CentOS Stream 9/8 сначала обновите пакеты:
sudo dnf update -yЭто очистит ржавчину и наточит инструменты.
Подключение репозиториев EPEL и Remi. В CentOS Stream в репозитории EPEL уже есть пакет Cacti. Включим EPEL и (при необходимости) Remi для новых версий PHP:
sudo dnf install -y epel-release
sudo dnf install -y dnf-utils https://rpms.remirepo.net/enterprise/remi-release-<OS_VERSION>.rpmЭто добавит “пути подачи топлива” для новых версий PHP .
⚡ Важно
Измените <OS_VERSION> на версию вашей CentOS Stream. Например, для 10 версии строка будет выглядеть так:
sudo dnf install -y dnf-utils https://rpms.remirepo.net/enterprise/remi-release-10.rpmВключение модуля PHP 8.1.
sudo dnf module reset php
sudo dnf module enable php:8.1
sudo dnf update -yМы переключили “газовую подачу” на нужный уровень пара.

Установка компонентов LAMP
Установка Apache, PHP, MariaDB и зависимостей. Установим “котел” (Apache), “горячее сердце” (БД) и нужные модули PHP:
sudo dnf install -y httpd mariadb-server php php-mysqlnd php-snmp php-gd php-xml php-ldap php-mbstring php-process rrdtool net-snmp net-snmp-utilshttpd— основной веб-сервер (включает паровое давление графиков).mariadb-server— СУБД (горячий очаг хранения данных).- Модули PHP — чтобы PHP мог рисовать, работать с SNMP, базой, графикой.
rrdtool— графический движок (буровые индикаторы).net-snmp— утилиты SNMP (для опроса устройств).
Запуск и автозапуск служб. Запустим HTTPD и MariaDB и добавим в автозагрузку:
sudo systemctl enable --now httpd
sudo systemctl enable --now mariadbСоздание и настройка базы данных. После запуска заходим в MySQL (MariaDB):
sudo mysql_secure_installationСкрипт mysql_secure_installation задаст пароль root и отключит опции, не подходящие для боевой серверной печи. Далее создадим базу Cacti и пользователя:
mysql -u root -pCREATE DATABASE IF NOT EXISTS cacti CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'cacti'@'localhost' IDENTIFIED BY 'ПарольСложный123!';
GRANT ALL PRIVILEGES ON cacti.* TO 'cacti'@'localhost';
GRANT SELECT ON mysql.time_zone_name TO 'cacti'@'localhost';
FLUSH PRIVILEGES;
EXIT;Пароль выберите сложный – “комбинация шестерён и паровых клапанов” высокой энтропии.
Настройка MySQL. Для оптимизации Cacti создайте файл /etc/my.cnf.d/cacti.cnf со следующими параметрами (стоят на страже производительности базы):
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
innodb_buffer_pool_size=512M
max_allowed_packet=50M
innodb_file_per_table=ONЗатем перезапустите СУБД:
sudo systemctl restart mariadbУстановка и конфигурация Cacti
Установка Cacti. Самый простой путь — установить из EPEL:
sudo dnf install -y cactiВ результате в /usr/share/cacti/ окажутся файлы Cacti. Если вы хотите самую свежую “паровую машину”, можно скачать последнюю версию с официального сайта и распаковать в /var/www/html/cacti.
Импорт схемы базы данных. Если установили из пакета, готовая схема лежит в /usr/share/doc/cacti/cacti.sql (иногда сжат файл cacti.sql.gz). Импорт:
sudo mysql -u root -p cacti < /usr/share/doc/cacti/cacti.sqlЕсли устанавливали вручную, используйте аналогичный SQL-файл из архива.
Конфигурация Cacti. Отредактируйте файл настроек:
sudo nano /usr/share/cacti/include/config.phpОбновите секцию подключения к БД:
$database_type = 'mysql';
$database_default = 'cacti';
$database_hostname = 'localhost';
$database_username = 'cacti';
$database_password = 'ПарольСложный123!';
$database_port = '3306';Если устанавливали из исходников, убедитесь, что конфигурация лежит в /var/www/html/cacti/include/config.php и имеет такие же параметры.
Настройка прав и SELinux. Директории /usr/share/cacti/rra, .../log, .../cache должны быть доступными для записи Apache. Например:
sudo chown -R apache:apache /usr/share/cacti/rra /usr/share/cacti/log /usr/share/cacti/cache
sudo setsebool -P httpd_can_network_connect on
sudo chcon -R -t httpd_sys_rw_content_t /usr/share/cacti/rra /usr/share/cacti/log /usr/share/cacti/cacheФлаг httpd_can_network_connect разрешает Apache обращаться к сети и БД. Мы немного отрегулировали “соседнюю политику SELinux”, не отключая её полностью.
Настройка Firewall. Откроем HTTP/HTTPS для доступа к веб-интерфейсу:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reloadПроверим:
firewall-cmd --list-allДолжны присутствовать службы http и https.
Конфигурация опросчика и завершение установки
Настройка cron для Cacti-poller. Чтобы Cacti регулярно собирал данные, создайте файл /etc/cron.d/cacti со строкой:
*/5 * * * * apache php /usr/share/cacti/poller.php > /dev/null 2>&1Это “паровая машина” будет вращаться каждые 5 минут. Альтернативно можно установить Cacti Spine для больших нагрузок:
sudo dnf install -y cacti-spineSpine — многопоточный сборщик, работоспособнее PHP-пиллера.

Запуск веб-мастера. Откройте браузер и перейдите по адресу http://IP_сервера/cacti. Вы попадёте в веб-установщик Cacti. По умолчанию логин/пароль — admin/admin. Вас попросят сменить пароль и принять лицензию. Затем мастер проверит окружение (все пункты должны быть зелёными), предложит выбрать «New Primary Server» и завершит настройку.

Тестирование и отладка. Проверьте основные логи:
/usr/share/cacti/log/cacti.log– главный лог Cacti./var/log/httpd/error_log– ошибки Apache./var/log/mariadb/mariadb.log– ошибки СУБД.
Если графики не обновляются, попробуйте запустить опросчик вручную и посмотреть вывод:
sudo -u apache php /usr/share/cacti/poller.php --force
tail -n 50 /usr/share/cacti/log/cacti.logЕсли SNMP-прибор не отвечает, проверьте с помощью snmpwalk:
snmpwalk -v2c -c public localhost systemЭтот тест покажет, доступен ли SNMP на хосте.
Оптимизация производительности. Для больших сетей используйте Cacti Spine и настроить в веб-интерфейсе параметры опросчика («Spine», интервал 5 минут, несколько процессов). Регулярно чистите старые .rrd и обновляйте систему.
Система Cacti теперь установлена! Стимпанк-машина собирает и хранит телеметрию, вы создаёте графики и шаблоны под нужды сети. Не забывайте менять пароли, делать бэкапы базы (mysqldump) и RRD-файлов. Пусть ваши серверы всегда работают как отлаженный паровоз, а Cacti будет зорким машинным глазом вашей инфраструктуры!
⚙️ Машинное отделение ROADIT благодарит за прочтение.
Больше команд, шпаргалок и обзоров — на roadit.ru и в нашем Телеграф-канале.
📋 Все команды