前言 经常接触数通设备的朋友一定很熟悉 Cacti (仙人掌)监控,作为老牌开源监控软件,Cacti 常用于交换机、路由器等数通设备的监控,方便可视化感知网络流量和故障分析,但是常常有不少朋友会被其繁琐的部署流程而难倒,前段时间我把我的 Cacti 从 Docker 里面移到了虚拟机里面跑,并且升级到了最新版本,也顺带讲讲怎么部署
准备虚拟机,安装环境
CentOS 7.x 的虚拟机一台
内存和核核尽量多给一些,尤其是要监控的设备比较多的时候,Cacti 还是比较吃性能的,在内存和核数给的少的时候,添加设备过程会比较慢……
添加 epel 源
添加 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.20ln -sv /usr/local/mysql/lib/libmysqlclient.so /usr/lib64/libmysqlclient.so
取消被禁用的 php 函数 vi /usr/local/php/etc/php.ini /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/wwwcd /data/wwwwget 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/www/cacti/includevi 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/www/cacti/cacti.sql
继续做软链接 ln -sv /usr/local/rrdtool/bin/rrdtool /usr/local/bin/rrdtoolln -sv /usr/local/php/bin/php /usr/bin/phpln -sv /usr/local/snmp/bin/snmpwalk /usr/local/bin/snmpwalkln -sv /usr/local/snmp/bin/snmpget /usr/local/bin/snmpgetln -sv /usr/local/snmp/bin/snmpbulkwalk /usr/local/bin/snmpbulkwalkln -sv /usr/local/snmp/bin/snmpgetnext /usr/local/bin/snmpgetnextln -sv /usr/local/snmp/bin/snmptrap /usr/local/bin/snmptrap
修改cacti目录权限 chown -R www:www /data/www/cacti/
修改 nginx 配置 vi /usr/local/nginx/conf/vhost/demo.conf
重启nginx服务 nginx -t /etc/init.d/nginx restart
配置 spine cd /usr/local/spine/etccp spine.conf.dist spine.confvi 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
加密码,清除一下历史记录比较好
写在最后 Cacti 已经很老了,php 写的很容易有很多洞出来,一定要做好端口访问权限管理,使用强密码,另外可以试试用 Prometheus 或者 Zabbix ,前段时间尝试了一下 Prometheus + Grafana 监控 Minio 和 Promox VE 效果很不错,推荐各位不妨去试试