一、官方推荐配置
二、准备工作
systemctl stop firewalld && systemctl disable firewalld
(如果不方便关防火墙,就开放相关端口 tcp 80 3306 udp161)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
cat /etc/selinux/config
dnf update
dnf -y install vim wget net-tools bash-completion yum-utils dnf-utils
三、安装MariaDB
安装mariadb,如果安装mysql,后面如果不是yum安装spine,则会有编译不过的情况
1、安装并初始化
#yum自带10.5.22GA版本,可以直接装。有更高需求的可以自行增加repo然后再用yum安装
#默认是10.3,手动调整一下
dnf module enable mariadb:10.5 -y
dnf -y install mariadb mariadb-server mysql-devel mysql-libs mysql-common
systemctl enable mariadb && systemctl start mariadb
#初始化数据库
mariadb-secure-installation
2、编辑配置文件 /etc/my.cnf.d/mariadb-server.cnf
#修改以下部分,基于系统配置32G内存
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/run/mariadb/mariadb.pid
collation-server=utf8mb4_unicode_ci
character-set-server=utf8mb4
max_heap_table_size=1GB
tmp_table_size=1024M
join_buffer_size=64M
# 25% Of Total System Memory,根据系统内存来调整
innodb_buffer_pool_size=8GB
# 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_io_capacity_max=10000
innodb_file_format=Barracuda
innodb_large_prefix=1
innodb_doublewrite=0
innodb_use_atomic_writes=1
#重启数据库
systemctl restart mariadb
3、创建并配置数据库
#创建cacti数据库,设置编码utf8 创建cacti 用户 密码cacti ,给到所有权限
mysql -uroot -p
MariaDB[(none)]>create database cacti charset utf8;
MariaDB[(none)]>grant all on cacti.* to cacti@localhost identified by 'cacti';
#创建一个root可远程用户,授权所有权限,方便远程查库
MariaDB[(none)]>grant all on *.* to root@'%' identified by 'xxxxxxx';
MariaDB[(none)]>flush privileges;
MariaDB[(none)]>exit;
#检查时间,如果时间正确就跳过这里,如果不正确就继续进行
mysql> show variables like '%time_zone%';
+------------------+--------+
| Variable_name | Value |
+------------------+--------+
| system_time_zone | CST |
| time_zone | SYSTEM |
+------------------+--------+
2 rows in set (0.01 sec)
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2023-10-17 10:58:44 |
+---------------------+
#处理时间
mysql -uroot -p mysql </usr/share/mysql/mysql_test_data_timezone.sql
#再次配置数据库,授权用户cacti访问mysql.time_zone_name表
mysql -uroot -p
Enter password:
MariaDB[(none)]>GRANT SELECT ON mysql.time_zone_name TO cacti@localhost;
MariaDB[(none)]>flush privileges;
MariaDB[(none)]>quit;
#将zoneinfo目录名传给mysql_tzinfo_to_sql程序并将输出发送到mysql
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -uroot mysql -p
systemctl restart mariadb
四、安装PHP8+
dnf module list php #可以看到可以使用的php版本
dnf module enable php:8.0 -y
dnf install php php-cli php-session php-sockets php-common php-posix php-bcmath php-common php-devel php-json php-fpm php-gd php-intl php-ldap php-mbstring php-mysqlnd php-odbc php-pdo php-pear php-process php-snmp php-soap php-xml php-gmp gmp-devel
输入 php -v 即可查看版本号
#修改php配置
sed -i 's/;date.timezone =/date.timezone = Asia/Shanghai/g' /etc/php.ini
sed -i 's/memory_limit = 128M/memory_limit = 4096M/g' /etc/php.ini
五、安装net-snmp
1、安装默认版5.8
#检查是否已安装过,如果有先清除干净
dnf remove net-snmp*
#开始安装
dnf install net-snmp net-snmp-libs net-snmp-utils net-snmp-perl
systemctl start snmpd && systemctl enable snmpd
2、修改配置文件
vi /etc/snmp/snmpd.conf
#修改第85行,取消注释
## incl/excl subtree mask
view all included .1 80
#修改第151行,取消注释,最后两个参数修改为
# Finally, grant the group read-only access to the systemview view.
# group context sec.model sec.level prefix read write notif
access notConfigGroup "" any noauth exact all all none
#保存,重启
systemctl restart snmpd
六、安装rrdtools
#直接使用系统自带
dnf install rrdtool rrdtool-devel
七、安装apache
dnf -y install httpd httpd-devel #注意安装2.4版本,不要2.2
systemctl start httpd && systemctl enable httpd
八、安装cacti(2种方法)
1、直接使用yum安装
dnf install -y cacti #更新过源的话默认是1.2.25
#导入信息到数据库
mysql cacti < /usr/share/doc/cacti/cacti.sql -u cacti -p
#编辑配置文件
vi /usr/share/cacti/include/config.php
$database_type = 'mysql';
$database_default = 'cacti';
$database_hostname = 'localhost';
$database_username = 'cacti';
$database_password = 'cacti';
$database_port = '3306';
#设置每5分钟轮询
vim /etc/cron.d/cacti
*/5 * * * * apache /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1
#修改/etc/httpd/conf.d/cacti.conf
#将httpd 2.4下面的Require host localhost 改为Require all granted
<Directory /usr/share/cacti/>
<IfModule mod_authz_core.c>
# httpd 2.4
Require all granted
</IfModule>
#重启所有服务
systemctl restat httpd php-fpm snmpd mariadb
#网页安装
#默认用户名admin密码admin,按照向导告警进行简单调整。
#调整完后重启对应服务,然后重新进到向导里通过安装即可
http://ip:80/cacti
#在安装过程中可以看到各个文件的路径,一般yum装的是在/usr/share下
2、编译安装
wget --no-check-certificate https://www.cacti.net/downloads/cacti-1.2.25.tar.gz
tar -xvf cacti-1.2.25.tar.gz -C /var/www/html/
mv /var/www/html/cacti-1.2.25/ /var/www/html/cacti
chown apache:apache -R /var/www/html/cacti/
chmod 777 -R /var/www/html/cacti/log/
chmod 777 -R /var/www/html/cacti/rra/
#导入cacti默认数据库表
mysql -uroot -p cacti < /var/www/html/cacti/cacti.sql
或 mysql -uroot -p
use cacti;
source /var/www/html/cacti/cacti.sql;
#修改cacti配置连接数据库
cp /var/www/html/cacti/include/config.php.dist /var/www/html/cacti/include/config.php
vi /var/www/html/cacti/include/config.php
#主要修改以下三项
$database_username = 'cacti';
$database_password = 'cacti';
$url_path = '/cacti/';
3、给cacti加到systemd管理
#官方提供了一个模板,可以直接拿来用
[Unit]
Description=Cacti Daemon Main Poller Service
After=network.target
[Service]
Type=forking
User=apache
Group=apache
#EnvironmentFile=/etc/sysconfig/cactid
ExecStart=/var/www/html/cacti/cactid.php
Restart=always
RestartSec=5s
[Install]
WantedBy=multi-user.target
九、安装cacti-spine(2种方法)
1、直接yum安装
dnf install cacti-spine #确认要与cacti安装同版本
#安装完成后检查
/usr/local/spine/bin/spine
SPINE: Using spine config file [/etc/spine.conf]
Version 1.2.25 starting
Time: 0.5375 s, Threads: 1, Devices: 2
#修改配置文件,保存
vim /etc/spine.conf
DB_Host localhost
DB_Database cacti
DB_User cacti
DB_Pass cacti
DB_Port 3306
2、编译安装spine
wget --no-check-certificate https://www.cacti.net/downloads/spine/cacti-spine-1.2.25.tar.gz
tar -xvf cacti-spine-1.2.25.tar.gz
cd cacti-spine-1.2.25
./bootstrap && ./configure --with-reentrant && make && make install
chown root:root /usr/local/spine/bin/spine
chmod u+s /usr/local/spine/bin/spine
cd /usr/local/spine/etc/
cp spine.conf.dist spine.conf
#主要修改user和pass
DB_Host localhost
DB_Database cacti
DB_User cacti
DB_Pass cacti
DB_Port 3306
#保存,将spine.conf移至/etc/下
cp spine.conf /etc/spine.conf
#查看版本
/usr/local/spine/bin/spine
SPINE: Using spine config file [spine.conf]
Version 1.2.25 starting
Time: 0.5178 s, Threads: 1, Devices: 1
#添加定时任务
*/5 * * * * php /var/www/html/cacti/poller.php --force > /dev/null 2>&1
十、备注
1、建议
yum里有包,并且不缺依赖,推荐直接全程yum安装,实测很流畅。唯一不足是只有cacti和cacti-spine是最新。但其他虽然不是最新,一定是方便安装的
如果硬要用最新的,那就全程从php、snmp、mariadb、cacti、cacti-spine、rrdtool全部编译安装。否则,会出现各种的问题。比如cacti用yum安装依赖php-fpm,php-fpm又依赖net-snmp,而依赖的都是yum里的不是最新的,就会出现版本重叠等问题,处理不好很麻烦
(1)安装最新版的snmp
#snmp发布网站http://www.net-snmp.org/download.html
wget https://nchc.dl.sourceforge.net/project/net-snmp/net-snmp/5.9.4/net-snmp-5.9.4.tar.gz
#安装依赖:
dnf -y install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker perl-ExtUtils-Embed.noarch
dnf -y install openssl openssl-libs openssl-devel
tar -xvf net-snmp-5.9.4.tar.gz
cd net-snmp-5.9.4
./configure --enable-blumenthal-aes
make && make install
(2)安装最新版rrdtool
#https://github.com/oetiker/rrdtool-1.x/releases (rrd官网,下载tar.gz包)
#安装相关依赖(推荐用dnf替代yum)
dnf -y install gcc gcc-c++ mysql-devel automake libtool dos2unix help2man openssl-devel perl perl-devel rpm-devel libdbi libdbi-devel libxml2 libxml2-devel librados2 librados2-devel pcre pcre-devel pango*
#安装ruby较新版本
dnf -y install ruby ruby-devel rubygems rpm-build
tar zxvf rrdtool-1.8.0.tar.gz
cd rrdtool-1.8.0
./configure --prefix=/usr/local/rrdtool --enable-static-programs
make && make install
#做软连接
ln -s /usr/local/rrdtool/bin/* /usr/local/bin
rrdtool -v #查版本号
2、汉字处理
cacti1.2.x版本已经支持web界面配置中文了,但是图标题如果不配置,中文还是会显示异常字符
yum -y install fonts-chinese fontconfig ttmkfdir
#上传字体至/usr/share/fonts/chinese
cd /usr/share/fonts/chinese/
vim /etc/fonts/fonts.conf
#新增一行
<dir>/usr/share/fonts/chinese/</dir>
#刷新缓存
fc-cache
#重启httpd并刷新界面即可