查看博客目录
手把手教你部署新版 Cacti 1.2.x 监控:小白也能轻松上手
Cacti 是一款基于 Web 的开源网络监控和图形化工具。它基于 PHP、MySQL、SNMP 及 RRDTool 开发,通过 SNMP 协议采集数据,并使用 RRDTool 保存数据和绘制图表,采用 B/S 架构实现数据展示与管理。
本文记录一套基于旧版环境的部署过程,适合用于实验环境和学习。原文环境如下:
- 安装架构:LAMP,即 Linux、Apache、MariaDB、PHP
- Cacti 版本:1.2.15
- 系统版本:CentOS 7.9
Cacti 1.2.15、CentOS 7 和 PHP 7.2 都属于较旧的版本。部署生产环境前,请根据当前 Cacti 官方文档重新核对系统、PHP、数据库和安全配置要求。
1. 安装相关软件包
1.1 安装 Apache
yum install -y httpd
systemctl start httpd
systemctl enable httpd
1.2 安装 PHP 7.2
Cacti 要求 PHP 版本不低于 5.4。下面以 Remi 仓库和 PHP 7.2 为例:
# 安装 Remi 仓库
yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm
# 安装 yum-utils
yum install -y yum-utils
# 启用 Remi 仓库中的 PHP 7.2
yum-config-manager --enable remi-php72
# 安装 PHP 及相关模块
yum install -y php php-mysql php-snmp php-xml php-ldap php-gd \
php-mbstring php-posix php-gmp php-intl
1.3 修改 PHP 时区
vim /etc/php.ini
在 [PHP] 配置段中设置:
date.timezone = Asia/Shanghai
1.4 安装 MariaDB 10.6
先创建 MariaDB 软件源:
vim /etc/yum.repos.d/MariaDB.repo
写入:
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.6/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
安装并启动 MariaDB:
yum install -y MariaDB-server MariaDB-client MariaDB-devel
systemctl start mariadb
systemctl enable mariadb
初始化数据库:
mysql_secure_installation
开始时如果 root 还没有密码可以直接回车,后续按提示设置 root 密码、删除匿名账号、禁止 root 远程登录、删除测试数据库并刷新权限表。
根据机器配置调整 MariaDB 参数:
vim /etc/my.cnf.d/server.cnf
示例配置:
[mysqld]
collation_server = utf8mb4_unicode_ci
character_set_server = utf8mb4
max_allowed_packet = 16777216
max_heap_table_size = 123M
tmp_table_size = 123M
join_buffer_size = 6M
innodb_buffer_pool_size = 1G
innodb_flush_log_at_timeout = 3
innodb_read_io_threads = 32
innodb_write_io_threads = 16
innodb_buffer_pool_instances = 9
innodb_io_capacity = 5000
innodb_io_capacity_max = 10000
innodb_file_format = Barracuda
innodb_large_prefix = 1
innodb_doublewrite = OFF
修改后重启:
systemctl restart mariadb.service
1.5 安装 Net-SNMP
yum install -y net-snmp net-snmp-libs net-snmp-utils \
net-snmp-devel net-snmp-perl
systemctl start snmpd.service
systemctl enable snmpd.service
1.6 安装 RRDTool
安装编译时可能用到的依赖:
yum -y install lm_sensors gcc gcc-c++ libart_lgpl-devel zlib-devel \
libpng-devel freetype-devel gettext-devel glib2-devel pcre-devel \
pango-devel cairo-devel libxml2-devel perl-ExtUtils-CBuilder \
perl-ExtUtils-MakeMaker
直接通过 yum 安装 RRDTool:
yum install -y rrdtool
1.7 创建 Cacti 数据库和用户
登录 MariaDB:
mysql -uroot -p
创建数据库、用户并授权:
CREATE DATABASE cacti;
GRANT ALL ON cacti.* TO 'cacti'@'localhost' IDENTIFIED BY '123456';
GRANT SELECT ON mysql.time_zone_name TO 'cacti'@'localhost' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;
导入系统时区:
mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql -u root -p mysql
2. 安装 Cacti
下载地址:
下载并解压 Cacti:
wget https://www.cacti.net/downloads/cacti-1.2.15.tar.gz
tar zxvf cacti-1.2.15.tar.gz
mv cacti-1.2.15 /var/www/html/cacti
导入数据库:
mysql -ucacti -p cacti < /var/www/html/cacti/cacti.sql
2.1 配置 Cacti 数据库连接
编辑配置文件:
vim /var/www/html/cacti/include/config.php
根据实际环境修改数据库连接参数:
$database_type = 'mysql';
$database_default = 'cacti';
$database_hostname = 'localhost';
$database_username = 'cacti';
$database_password = '123456';
$database_port = '3306';
$database_retries = 5;
$database_ssl = false;
$database_ssl_key = '';
$database_ssl_cert = '';
$database_ssl_ca = '';
2.2 创建日志文件
touch /var/www/html/cacti/log/cacti.log
touch /var/www/html/cacti/log/cacti_stderr.log
2.3 创建系统用户并设置目录权限
useradd cacti
chown apache.apache /var/www/html/cacti/ -R
chown cacti /var/www/html/cacti/{rra,log}/ -R
chmod 777 /var/www/html/cacti/{rra,log}/ -R
2.4 重启相关服务
systemctl restart mariadb httpd
3. 安装 Spine
Cacti 默认使用 cmd.php 进行轮询。Spine 使用 C 编写,适合提高大规模网络环境中的数据采集效率和并发能力。
下载地址:
下载、解压并准备安装目录:
wget https://files.cacti.net/spine/cacti-spine-1.2.15.tar.gz
tar zxvf cacti-spine-1.2.15.tar.gz
mv cacti-spine-1.2.15 /usr/local/spine
cd /usr/local/spine
安装编译依赖:
yum install -y net-snmp-devel mysql-devel openssl-devel dos2unix \
autoconf automake binutils libtool gcc cpp glibc-headers \
kernel-headers glibc-devel help2man
编译并安装:
sh bootstrap
./configure --with-reentrant
make
make install
chown root:root /usr/local/spine/bin/spine
chmod +s /usr/local/spine/bin/spine
复制配置文件:
cp /usr/local/spine/etc/spine.conf.dist /etc/spine.conf
vim /etc/spine.conf
修改数据库连接参数:
DB_Host 127.0.0.1
DB_Database cacti
DB_User cacti
DB_Pass 123456
DB_Port 3306
执行初始化测试:
/usr/local/spine/bin/spine
成功时可以看到类似输出:
SPINE: Using spine config file [/etc/spine.conf]
SPINE: Version 1.2.15 starting
SPINE: Time: 0.0716 s, Threads: 5, Devices: 0
4. 初始化 Cacti
在浏览器访问:
http://服务器IP/cacti
默认账号和密码通常是 admin/admin,首次登录后应立即修改密码。

根据提示修改 PHP 配置:
vim /etc/php.ini
例如:
max_execution_time = 60
memory_limit = 900M
修改后重启 Apache:
systemctl restart httpd
完成推荐配置检查后点击下一步。

选择新的主要服务器继续:

继续配置 Spine 路径:







5. 配置通过 IP 直接访问
如果希望通过服务器 IP 直接访问 Cacti,而不使用 /cacti 路径,可以修改 Cacti 和 Apache 配置。
先修改 Cacti 的 URL 路径:
vim /var/www/html/cacti/include/config.php
将 $url_path 修改为:
$url_path = '/';
再修改 Apache 的站点根目录:
vim /etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/html/cacti"
重启 Apache:
systemctl restart httpd
6. 配置轮询器和计划任务
6.1 配置计划任务
如果不配置轮询任务,Cacti 图形界面可能会显示:The Cacti Poller has not run yet。
安装 crontab:
yum install crontabs -y
先手动测试轮询器:
/usr/bin/php /var/www/html/cacti/poller.php
正常情况下会返回类似以下内容:
OK u:0.00 s:0.01 r:1.02
OK u:0.00 s:0.01 r:1.04
SYSTEM STATS: Time:1.3197 Method:spine Processes:1 Threads:1 Hosts:1
编辑计划任务:
crontab -e
每五分钟执行一次:
*/5 * * * * /usr/bin/php /var/www/html/cacti/poller.php > /dev/null 2>&1
确认 crond 服务状态并设置开机自启:
systemctl status crond
systemctl enable crond
6.2 设置语言
重新登录 Cacti。如果界面仍是英文,可以进入“系统配置 → 设置 → 基本”,将语言改为中文,保存后重新登录。
6.3 将轮询器切换为 Spine
Spine 是 cmd.php 的替代方案,适合大规模设备轮询。进入 Cacti 的“系统配置 → 设置 → Poller”,将采集类型从 cmd.php 改为 spine,然后保存。

7. 查看监控图表
完成设备、数据源和轮询任务配置后,可以在图形页面查看监控结果。

后续可以继续围绕 Cacti 的设备接入、模板管理、告警配置和轮询性能优化展开实践。