前言
经常接触数通设备的朋友一定很熟悉 Cacti (仙人掌)监控,作为老牌开源监控软件,Cacti 常用于交换机、路由器等数通设备的监控,方便可视化感知网络流量和故障分析,但是常常有不少朋友会被其繁琐的部署流程而难倒,闲的无聊自己部署了一套1.2.24版的顺便讲讲怎么部署。
准备服务器,安装环境
CentOS 7.x 的服务器一台 内存和核核尽量多一些,尤其是要监控的设备比较多的时候,Cacti 还是比较吃性能的,在内存和核数给的少的时候,添加设备过程会比较慢……
添加 epel 源
yum install epel-release
添加 wlnmp 一键包源,装起来会比较方便
rpm -ivh http://mirrors.wlnmp.com/centos/wlnmp-release-centos.noarch.rpm
关于这个源的更多信息可见:https://www.wlnmp.com/
安装 nginx、php、mysql
yum install wnginx wphp71 wmysql57
安装php扩展及其他所需依赖
yum install wphp71-ldap wphp71-snmp wrrdtool wnet-snmp wspine sendmail
设置软链接
ln -sv /usr/local/mysql/lib/libmysqlclient.so.20 /usr/lib64/libmysqlclient.so.20
ln -sv /usr/local/mysql/lib/libmysqlclient.so /usr/lib64/libmysqlclient.so
取消被禁用的 php 函数
vi /usr/local/php/etc/php.ini
# 找到disable_functions行,删除shell_exec,exec,popen,保存退出,重启php服务
/etc/init.d/php-fpm71 restart
启动相关服务
/etc/init.d/nginx restart
/etc/init.d/mysql restart
/etc/init.d/snmpd restart
后面动了服务之后最好也重启一下
修改 MySQL 密码,创建 cacti 数据库,添加权限
mysql -uroot -p
# mysql 默认密码是空,记得下面的 “test123” 换成自己的高强度密码
mysql> set password = password('test123');
mysql> CREATE DATABASE cacti DEFAULT CHARACTER SET utf8;
mysql> GRANT ALL ON cacti.* TO cacti@localhost IDENTIFIED BY 'test123';
mysql> GRANT SELECT ON mysql.time_zone_name TO cacti@localhost IDENTIFIED BY 'test123';
mysql> ALTER DATABASE cacti CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
mysql> flush privileges;
mysql> quit
加载时区到 MySQL 数据库
/usr/local/mysql/bin/mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql -uroot -ptest123 mysql
部署cacti
下载 Cacti
推荐下载好之后传上去,或者传到内网的文件服务器
mkdir /data
cd /data
wget https://files.cacti.net/cacti/linux/cacti-1.2.24.tar.gz
tar xf cacti-1.2.24.tar.gz
mv cacti-1.2.24 cacti
修改 cacti 数据库配置文件
cd /data/cacti/include
cp config.php.disp config.php
vim config.php
$database_type = 'mysql';
$database_default = 'cacti';
$database_hostname = '127.0.0.1';
$database_username = 'cacti';
$database_password = 'test123';
$database_port = '3306';
$database_retries = 5;
$database_ssl = false;
$database_ssl_key = '';
$database_ssl_cert = '';
$database_ssl_ca = '';
$database_persist = false;
导入 cacti.sql
mysql -uroot -ptest123 cacti < /data/cacti/cacti.sql
继续做软链接
ln -sv /usr/local/rrdtool/bin/rrdtool /usr/local/bin/rrdtool
ln -sv /usr/local/php/bin/php /usr/bin/php
ln -sv /usr/local/snmp/bin/snmpwalk /usr/local/bin/snmpwalk
ln -sv /usr/local/snmp/bin/snmpget /usr/local/bin/snmpget
ln -sv /usr/local/snmp/bin/snmpbulkwalk /usr/local/bin/snmpbulkwalk
ln -sv /usr/local/snmp/bin/snmpgetnext /usr/local/bin/snmpgetnext
ln -sv /usr/local/snmp/bin/snmptrap /usr/local/bin/snmptrap
修改cacti目录权限
chown -R www:www /data/cacti/
修改 nginx 配置
vi /usr/local/nginx/conf/vhost/demo.conf
# 修改root路径为root /data/www;,取消php注释include enable-php71.conf;,修改下server_name为本机IP
重启nginx服务
nginx -t
/etc/init.d/nginx restart
配置 spine
cd /usr/local/spine/etc
cp spine.conf.dist spine.conf
vi spine.conf
# 修改以下配置
DB_Host 127.0.0.1
DB_Database cacti
DB_User cacti
DB_Pass test123
DB_Port 3306
# 验证
/usr/local/spine/bin/spine
# 应当显示以下信息
SPINE: Using spine config file [spine.conf]
Version 1.2.20 starting
Time: 1.0196 s, Threads: 1, Devices: 1
进入 web 安装
http://ip/cacti
调优数据库
进入 web 之后根据上面的提示安装并调优数据库即可,关于要调整的内容 web 会详细写,就不再细说啦
修改 poller ,设置定时任务
添加 poller 的定时任务
crontab -e
# 添加以下内容
*/5 * * * * /usr/bin/php /data/www/cacti/poller.php > /dev/null 2>&1
删除历史记录
前面我们导 sql 文件的时候,用了 -p 加密码,清除一下历史记录比较好
history -c
最后
Cacti 已经很老了,php 写的很容易有很多洞出来,一定要做好端口访问权限管理,使用强密码,另外可以试试用 Prometheus 或者 Zabbix ,前段时间尝试了一下 Prometheus + Grafana 监控 Minio 和 Promox VE 效果很不错,推荐各位不妨去试试
评论区