一、Cacti概述

Cacti是基于PHP语言实现的一个软件,通过snmp协议获取信息,并使用rdtool进行绘图,将用户需要的数据通过图表显示出来,可以实现流量监控、95计费等功能。

预览图

二、安装Cacti 1.2.21

本次安装基于Centos7.6配合宝塔面板实现,可参考
centos7模板机搭建部署

1.安装宝塔面板

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec

当屏幕出现登录地址、用户名和密码后说明宝塔面板安装成功,接下来打开浏览器输入"http://ip:8888/安全入口"进行宝塔面板初始化。

注:宝塔面板需绑定账号才可使用
宝塔面板

2.安装Apache
在宝塔面板-软件商店-运行环境里找到Apache2.4.54并安装,安装方式有极速安装和编译安装,选择编译安装,更稳定,适合上线使用。

3.安装PHP
在宝塔面板-软件商店-运行环境里找到PHP8.0.20(Cacti官方建议PHP7.2)并安装,同样选择编译安装,同时安装cacti需要使用到的PHP扩展:

php-mysql php-snmp php-xml php-ldap php-gd php-mbstring php-posix

4.修改时区

[root@localhost ~]# vim /etc/php.ini
[PHP]
……
date.timezone = Asia/Shanghai  

找到对应的行数更改后保存即可。

5.安装MariaDB数据库

5.1 设置MariaDB安装源

cat >/etc/yum.repos.d/MariaDB.repo<<EOF
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF

5.2 安装MariaDB

yum install -y MariaDB-server MariaDB-client MariaDB-devel

5.3 启动MariaD,并设置开机启动

systemctl start mariadb && systemctl enable mariadb

5.4 初始化数据库,设定密码,除了开始直接回车,其他的选择都输入Y。

[root@localhost ~]# mysql_secure_installation
 
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
......
Enter current password for root (enter for none):   //初始数据库密码为空,直接按回车键
OK, successfully used password, moving on...
......
Set root password? [Y/n] Y    //输入root管理员密码
New password: 
Re-enter new password: 
Password updated successfully!
......
Remove anonymous users? [Y/n] Y    //删除匿名账号
 ... Success!
......
Disallow root login remotely? [Y/n] Y   //禁止root管理员从远程登录
 ... Success!
.......
Remove test database and access to it? [Y/n] Y   //删除test数据库并取消对它的访问权限
......
Reload privilege tables now? [Y/n] Y   //刷新授权表,让初始化后的设定立即生效
 ... Success!

5.5 配置MariaDB参数

[root@cacti ~]# vim /etc/my.cnf.d/server.cnf

[server]
# this is only for the mysqld standalone daemon
character_set_server = utf8mb4
collation-server = utf8mb4_unicode_ci
max_heap_table_size = 256M
max_allowed_packet = 16777216
tmp_table_size = 64M
join_buffer_size = 64M
innodb_file_per_table = ON
innodb_buffer_pool_size = 1024M
innodb_doublewrite = OFF
innodb_flush_log_at_timeout = 3
innodb_read_io_threads = 32
innodb_write_io_threads =16
innodb_file_format = Barracuda
innodb_large_prefix = 1

6.安装SNMP服务

yum install –y net-snmp net-snmp-libs net-snmp-utils net-snmp-devel net-snmp-perl

6.1 配置SNMP

vim /etc/snmp/snmpd.conf
......
//修改default为本机(cacti服务器)的ip,修改public为自己的团体名(一般不改),42行
com2sec notConfigUser 192.168.1.2 public
//把systemview改成all ,供所有snmp 访问权限  64行
access notConfigGroup "" any noauth exact all none none   
view all included .1 80 // 去掉#号 85行
......

6.2 启动snmp并设置开机启动

systemctl start snmpd.service && systemctl enable snmpd.service

6.3 验证snmp是否生效

snmpwalk -v 2c -c public localhost

7.安装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 rrdtool

8.安装cacti-spine

8.1 安装spine编译所需依赖

yum install -y dos2unix autoconf automake binutils libtool cpp glibc-headers glibc-devel help2man

8.2 下载cacti-spine-1.2.21,这里版本要与cacti相同

cd /usr/local/src
wget https://www.cacti.net/downloads/spine/cacti-spine-1.2.21.tar.gz

8.3 编译安装cacti-spine

tar zxvf cacti-spine-1.2.21.tar.gz
cd cacti-spine-1.2.21
./bootstrap
./configure
make && make install
chown root:root /usr/local/spine/bin/spine
chmod +s /usr/local/spine/bin/spine
————————————————
如果make时出现
/usr/bin/ld: cannot find -lmysqlclient
collect2: ld returned 1 exit status
make: *** [spine] Error 1
原因:
编译你的工程代码之前之前,
先处理一下mysql的库,默认查找libmysqlclient_r.so,
可是mysql默认为libmysqlclient.so,
 
内容完全一样,做个链接即可
 
请在root下执行
cd /usr/local/mysql/lib/mysql/   (库所在目录)
ln -s libmysqlclient.so.15.0.0 libmysqlclient_r.so
————————————————

8.4 编辑spine.conf

cp  /usr/local/spine/etc/spine.conf.dist /etc/spine.conf

vim /etc/spine.conf
#找到里面对应参数,根据实际情况修改,这里测试就不改了
DB_Host localhost	#数据库连接地址
DB_Database cacti	#数据库名称
DB_User cactiuser	#用户
DB_Pass cactiuser	#密码
DB_Port 3306		#数据库连接端口

9.安装cacti

9.1 下载cacti并解压

cd /home
mkdir www
cd www
wget https://www.cacti.net/downloads/cacti-1.2.21.tar.gz
tar zxvf cacti-1.2.21.tar.gz

随后在宝塔面板-网站-新建网站,弹出以下界面:

新建网站

域名填入你的IP或者域名,根目录选择cacti源码目录,数据库不创建,PHP选择已安装的PHP版本即可

创建成功后点击设置-网站目录,将防跨站攻击取消勾选
9.2 配置数据库时区

[root@localhost ~]# mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql -u root -p mysql
Enter password:
Warning: Unable to load '/usr/share/zoneinfo//leapseconds' as time zone. Skipping it.
Warning: Unable to load '/usr/share/zoneinfo//tzdata.zi' as time zone. Skipping it.

9.3 配置config.php,找到以下字段,将数据库地址,端口,用户名和密码更改为正确地址

$database_type     = 'mysql';
$database_default  = 'cacti';
$database_hostname = 'localhost';
$database_username = 'cactiuser';
$database_password = 'cactiuser';
$database_port     = '3306';
$database_retries  = 5;
$database_ssl      = false;
$database_ssl_key  = '';
$database_ssl_cert = '';
$database_ssl_ca   = '';

9.4 创建日志文件,后续安装时用的到

touch /home/www/cacti/log/cacti.log
touch /home/www/cacti/log/cacti_stderr.log

10.创建Cacti数据库并导入数据

打开宝塔面板自带的PHPmyadmin管理工具并登录,随后创建名为cacti的数据库,编码使用utf8mb4,创建成功后导入cacti网站目录下的cacti.sql文件即可

11.重启服务

systemctl restart httpd && systemctl restart mariadb  && systemctl restart snmpd

12.安装过程

浏览器输入http://ip/cacti,默认密码admin/admin,随后按照安装指导一步一步操作即可。

如果有报错,根据报错信息找到对应的配置文件修改为cacti要求的值即可。