Установка Cacti на CentOS 8
Cacti — веб-инструмент для мониторинга и построения графиков на базе RRDTool. В этой инструкции описаны шаги по установке Cacti на CentOS 8: подготовка системы, установка зависимостей, настройка MariaDB, установка Cacti, конфигурация Apache, Firewall и SELinux, а также проверка работы через веб-интерфейс. Включены чек-листы, рекомендации по безопасности и методы устранения неисправностей.
Введение

Cacti — бесплатный, с открытым исходным кодом веб-инструмент для мониторинга сети и построения графиков. Он опрашивает службы по расписанию, сохраняет данные в базе и строит графики с помощью RRDTool. Фронтенд написан на PHP, а данные хранятся в MariaDB/MySQL.
Цель этой инструкции — провести установку и базовую настройку Cacti на CentOS 8 с рекомендациями по безопасности и проверке работоспособности.
Требования
- Сервер с CentOS 8 и минимум 2 ГБ оперативной памяти.
- Доступ root или пользователь с sudo.
- Подключение к интернету для загрузки пакетов и репозиториев.
Важно: CentOS 8 официально достиг EOL; для долгосрочной поддержки рассмотрите миграцию на Rocky Linux или AlmaLinux.
Основные обозначения
- Cacti — frontend для RRDTool.
- RRDTool — хранит и агрегацию временных рядов для графиков.
- poller — фоновый процесс Cacti для опроса и записи данных.
Подготовка системы
Обновите систему и установите основные зависимости:
dnf update -yУстановите SNMP и rrdtool:
dnf install net-snmp net-snmp-utils net-snmp-libs rrdtool -yЗапустите и включите SNMP:
systemctl start snmpd
systemctl enable snmpdПосле этого можно переходить к установке LAMP-стека.
Установка LAMP
Установите Apache, MariaDB и PHP с нужными расширениями:
dnf install httpd mariadb-server php php-xml php-session php-sockets php-ldap php-gd php-json php-mysqlnd php-gmp php-mbstring php-posix php-snmp php-intl -yЗапустите и включите сервисы:
systemctl start httpd
systemctl start mariadb
systemctl enable httpd
systemctl enable mariadbОткройте php.ini для правок:
nano /etc/php.iniВ файле задайте подходящие параметры (локализуйте временную зону под ваш регион):
date.timezone = Europe/Moscow
memory_limit = 512M
max_execution_time = 60Сохраните изменения и закройте редактор.
Важно: в исходной инструкции была опечатка max_execution_style — корректное имя директивы max_execution_time.
Настройка MariaDB
Войдите в консоль MariaDB:
mysqlСоздайте базу и пользователя для Cacti (замените пароль на надёжный):
MariaDB [(none)]> create database cactidb;
MariaDB [(none)]> GRANT ALL ON cactidb.* TO cacti@localhost IDENTIFIED BY 'password';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;Отредактируйте конфигурацию MariaDB для производительности и корректной кодировки:
nano /etc/my.cnf.d/mariadb-server.cnfВ секции [mysqld] добавьте или измените:
collation-server=utf8mb4_unicode_ci
character-set-server=utf8mb4
max_heap_table_size=32M
tmp_table_size=32M
join_buffer_size=64M
# 25% Of Total System Memory
innodb_buffer_pool_size=1GB
# pool_size/128 for less than 1GB of memory
innodb_buffer_pool_instances=10
innodb_flush_log_at_timeout=3
innodb_read_io_threads=32
innodb_write_io_threads=16
innodb_io_capacity=5000
innodb_file_format=Barracuda
innodb_large_prefix=1
innodb_io_capacity_max=10000Сохраните файл и перезапустите MariaDB:
systemctl restart mariadbИмпортируйте временные зоны (потребуется пакет с тестовыми данными):
mysql -u root -p mysql < /usr/share/mariadb/mysql_test_data_timezone.sqlДайте пользователю cacti доступ к таблице имен временных зон:
mysql
MariaDB [(none)]> GRANT SELECT ON mysql.time_zone_name TO cacti@localhost;
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;Примечание: если файл mysql_test_data_timezone.sql отсутствует, установите пакет mariadb-server или соответствующие тестовые данные через пакетный менеджер.
Установка и настройка Cacti
Добавьте репозиторий EPEL и установите Cacti:
dnf install epel-release -y
dnf install cacti -yПроверка пакета:
rpm -qi cactiИмпортируйте схему Cacti в базу данных:
mysql -u root -p cactidb < /usr/share/doc/cacti/cacti.sqlОтредактируйте файл конфигурации Cacti и укажите параметры подключения к БД:
nano /usr/share/cacti/include/config.phpЗадайте:
$database_type = 'mysql';
$database_default = 'cactidb';
$database_hostname = 'localhost';
$database_username = 'cacti';
$database_password = 'password';
$database_port = '3306';
$database_retries = 5;
$database_ssl = false;Создайте cron-задачу для poller.php, чтобы опрашивание выполнялось каждые 5 минут:
nano /etc/cron.d/cactiДобавьте строку:
*/5 * * * * apache /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1Сохраните и закройте файл.
Настройка Apache для Cacti
Создайте конфигурацию виртуального хоста:
nano /etc/httpd/conf.d/cacti.confНайдите и замените секцию Alias и Directory так, чтобы доступ к /usr/share/cacti был открыт:
Alias /cacti /usr/share/cacti
Require all granted
Order deny,allow
Deny from all
Allow from all
Перезапустите Apache и php-fpm (если установлен):
systemctl restart httpd
systemctl restart php-fpmПроверьте статус Apache:
systemctl status httpdОжидаемый фрагмент вывода сообщает, что сервис активен и прослушивает порт 80.
Firewall и SELinux
Разрешите HTTP/HTTPS в firewalld:
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reloadSELinux: по безопасности рекомендуется оставлять SELinux в режиме enforcing и правильно настроить контексты. При проблемах временно можно перевести в permissive, но лучше применить контексты Apache и SELinux-модули.
Чтобы временно установить permissive:
nano /etc/selinux/configНайдите строку и измените на:
SELINUX=permissiveПерезагрузите сервер для применения. Но безопаснее применять правильные контексты через semanage и restorecon; пример:
semanage fcontext -a -t httpd_sys_rw_content_t '/usr/share/cacti(/.*)?'
restorecon -Rv /usr/share/cactiЕсли semanage отсутствует, установите пакет policycoreutils-python-utils.
Важно: отключать SELinux необязательно и нежелательно в продуктивной среде.
Доступ к веб-интерфейсу и первоначальная настройка
Откройте в браузере:
На экране входа используйте данные по умолчанию: admin / admin. При первом входе система предложит сменить пароль.

После смены пароля примите лицензионное соглашение и следуйте мастеру установки. На каждом шаге мастер проверяет зависимости и права на директории.



Во время установки убедитесь, что пути до бинарников корректны. Если мастер предлагает изменить кодировку, выполните в MySQL:
MariaDB [(none)]> ALTER DATABASE cactidb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;Завершите установку через мастер и откройте дашборд.


Просмотр графиков локальной машины:

Проверка работоспособности
- Убедитесь, что cron выполняется: systemctl status crond и проверьте /var/log/cron.
- Проверьте логи Apache и Cacti: /var/log/httpd/error_log и /usr/share/cacti/log.
- Убедитесь, что poller.php запускается и создаёт записи в таблицах rrd и data.
Рекомендации по безопасности и производительности
- HTTPS: настройте сертификат (Let’s Encrypt) и перенаправление с HTTP на HTTPS.
- Ограничьте доступ к /cacti через firewalld или правила Apache при необходимости.
- Регулярно делайте бэкапы базы и /usr/share/cacti.
- Настройте ротацию логов для /usr/share/cacti/log и Apache.
- Настройте мониторинг производительности MariaDB (slow query log).
Пример быстрой настройки HTTPS с Certbot:
dnf install certbot python3-certbot-apache -y
certbot --apache -d cacti.example.comЧастые проблемы и способы их устранения
Ошибка подключения к базе данных
- Проверьте настройки в /usr/share/cacti/include/config.php
- Проверьте права пользователя cacti и host (localhost)
- Убедитесь, что MariaDB запущена
Пустые графики
- Убедитесь, что poller.php запускается каждые 5 минут
- Проверьте права на RRD-файлы и контексты SELinux
- Посмотрите логи poller и rrdtool
Ошибка автоконфигурации Apache
- Проверьте конфигурацию Alias и права на директорию
- Перезапустите httpd и проверьте статус
Проблемы с кодировкой/временными зонами
- Импортируйте mysql_test_data_timezone.sql
- Проверьте кодировку базы: utf8mb4
Когда установка может не подойти
- На хостинга с ограниченным доступом к root некоторые шаги будут недоступны.
- На серверах с очень малым объёмом памяти рекомендуется использовать лёгкие альтернативы или выделять swap.
- Если нужна масштабируемая высоконагруженная система — рекомендуется использовать специализированные решения (Prometheus + Grafana).
Миграция и совместимость
CentOS 8 достиг EOL в 2021 году. Для долгосрочной поддержки рассмотрите миграцию на:
- AlmaLinux
- Rocky Linux
Перенос пакетов и конфигураций обычно тривиален, но проверяйте версии PHP и MariaDB на целевой системе.
Чек-листы ролей
Администратор сервера:
- Обновить систему перед установкой
- Настроить SELinux и firewall
- Настроить бэкапы
DBA:
- Создать базу и пользователя cacti
- Настроить innodb_buffer_pool_size и кодировку
- Включить slow query log и мониторинг
Сетевой инженер:
- Настроить SNMP на целевых хостах
- Проверить reachability и маршруты
- Добавить устройства в Cacti и назначить шаблоны
Критерии приёмки
- Веб-интерфейс доступен по адресу http(s)://your-server/cacti
- Пользователь admin может войти и увидеть дашборд
- Poller запускается и создаёт записи в базе каждые 5 минут
- Графики для локальной машины отображают данные
- Резервная копия конфигурации и базы выполнена
Тест-кейсы
Вход по умолчанию
- Ожидаемый результат: перенаправление на страницу смены пароля
Проверка poller.php
- Запустить вручную: /usr/bin/php /usr/share/cacti/poller.php
- Ожидаемый результат: отсутствие ошибок в выводе и новые записи в таблицах
Доступ по HTTPS
- Ожидаемый результат: валидный сертификат и перенаправление с HTTP на HTTPS
Краткая памятка (cheat sheet)
- Cron poller: /etc/cron.d/cacti — /5 * apache /usr/bin/php /usr/share/cacti/poller.php
- PHP settings: memory_limit=512M, max_execution_time=60
- MariaDB tuning: innodb_buffer_pool_size=1GB, кодировка utf8mb4
- SELinux: semanage fcontext и restorecon для /usr/share/cacti
Факты и ключевые параметры
- Частота опроса по умолчанию в инструкции: 5 минут
- Рекомендованный PHP memory_limit: 512 МБ
- Рекомендованный innodb_buffer_pool_size в примере: 1 ГБ
1‑строчный глоссарий
- SNMP — протокол опроса сетевых устройств; RRDTool — база временных рядов; poller — процесс опроса Cacti.
Сводка
Вы установили и настроили Cacti на CentOS 8, настроили базу данных, интеграцию с Apache и проверили веб-интерфейс. Дополнительно приведены рекомендации по безопасности, проверке работоспособности и устранению неполадок.
Если нужно, могу помочь с настройкой HTTPS, миграцией на AlmaLinux/Rocky или с добавлением шаблонов и устройств в Cacti.
Похожие материалы
Как узнать версию PowerShell в Windows 10
Как получить Windows 10 Build 9879
OneDrive и Dropbox в «Файлы» на Chromebook
Как перенести закладки браузера — быстро и безопасно
Как ответить на письмо с отказом после собеседования