防伪码:桃李春风一杯酒 江湖夜雨十年灯php
操做系统css |
CentOS Linux release 7.5.1804 (Core) html |
Nginxmysql |
1.18.0linux |
PHPnginx |
7.1.33web |
MYSQLsql |
5.7.30shell |
Cacti数据库 |
1.2.2 |
访问地址 |
http://222.29.77.84/cacti |
用户名/密码 |
admin/admin |
部署路径 |
/data/www/cacti |
Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。在三大开源工具中,cacti的网络监控能力是很是强的,经过 snmpget来获取数据,使用 RRDtool绘画图形,并且你彻底能够不须要了解RRDtool复杂的参数。它提供了很是强大的数据和用户管理功能,能够指定每个用户能查看树状结构、host以及任何一张图,还能够与LDAP结合进行用户验证,同时也能本身增长模板,功能很是强大完善。
Cacti 在英文中的意思是仙人掌的意思,Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。它经过snmpget来获取数据,使用 RRDtool绘画图形,并且你彻底能够不须要了解RRDtool复杂的参数。它提供了很是强大的数据和用户管理功能,能够指定每个用户能查看树状结构、host以及任何一张图,还能够与LDAP结合进行用户验证,同时也能本身增长模板,功能很是强大完善。Cacti 的发展是基于让 RRDTool 使用者更方便使用该软件,除了基本的 Snmp 流量跟系统资讯监控外,Cacti 也可外挂 Scripts 及加上 Templates 来做出各式各样的监控图。
cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,而后用rrdtool储存和更新数据,当用户须要查看数据的时候用rrdtool生成图表呈现给用户。所以,snmp和rrdtool是cacti的关键。Snmp关系着数据的收集,rrdtool关系着数据存储和图表的生成。
Mysql配合PHP程序存储一些变量数据并对变量数据进行调用,如:主机名、主机ip、snmp团体名、端口号、模板信息等变量。
snmp抓到数据不是存储在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目录的rra文件夹下)。rrdtool对数据的更新和存储就是对rrd文件的处理,rrd文件是大小固定的档案文件(Round Robin Archive),它可以存储的数据笔数在建立时就已经定义。关于RRDTool的知识请参阅RRDTool教学。
snmp(Simple Network Management Protocal, 简单网络管理协议)在架构体系的监控子系统中将扮演重要角色。大致上,其基本原理是,在每个被监控的主机或节点上 (如交换机)都运行了一个 agent,用来收集这个节点的全部相关的信息,同时监听 snmp 的 port,也就是 UDP 161,并从这个端口接收来自监控主机的指令(查询和设置)。
若是安装 net-snmp,被监控主机须要安装 net-snmp(包含了 snmpd 这个 agent),而监控端须要安装 net-snmp-utils,若接受被监控端经过trap-communicate发来的信息的话,则须要安装net-snmp,并启用trap服务。若是自行编译,须要 beecrypt(libbeecrypt)和 elf(libraryelf)的库。
RRDtool是指Round Robin Database 工具(环状数据库)。Round robin是一种处理定量数据、以及当前元素指针的技术。想象一个周边标有点的圆环--这些点就是时间存储的位置。从圆心画一条到圆周的某个点的箭头--这就是指针。就像咱们在一个圆环上同样,没有起点和终点,你能够一直往下走下去。过来一段时间,全部可用的位置都会被用过,该循环过程会自动重用原来的位置。这样,数据集不会增大,而且不须要维护。RRDtool处理RRD数据库。它用向RRD数据库存储数据、从RRD数据库中提取数据。
Cacti整个系统的架构是这样的:基于SNMP协议,被监控端是服务器,或一些网络设备,网络管理工做站,采用Linux(或Freebsd)操做系统,而且安装Net-SNMP工具,使用RRDTOOL采集数据,存储数据,并用Cacti调用rrdtool显示出来。
CACTI采用PHP编写,基于B/S结构。
(1)网络接口流量(进与出的带宽)
(2)监控CPU的负载、内存等等
(3)监控磁盘的空间、进程数等等
(1)服务器资源:CPU、内存、磁盘、进程、链接数等
(2)服务器类型:WEB、Mail、FTP、数据库、中间件
(3)网络接口:流量、转发速度、丢包率
(4)网络设备性能、配置文件(对比与备份)、路由数
(5)(5)安全设备性能、链接数、***数
(6)设备运行状态:风扇、电源、温度
(7)机房运行环境:电流、电压、温湿度
原来本文是以php7.2为例,后续再使用中发现cacti偶尔会在php7.2下报错,由于有些函数兼容性问题,因此不建议使用php7.2或php7.3版原本运行cacti。
本文在Centos7.x系统上运行,当前php使用7.1版本,mysql使用5.7版本,注意内存要大于2G!!!
操做以前关闭selinux,关闭防火墙或者放开tcp端口80、330六、9000,udp端口161
firewall-cmd --add-port=80/tcp --permanent firewall-cmd --add-port=9000/tcp --permanent firewall-cmd --add-port=3306/tcp --permanent firewall-cmd --add-port=161/udp --permanent firewall-cmd --reload |
yum install epel-release |
rpm -ivh http://mirrors.wlnmp.com/centos/wlnmp-release-centos.noarch.rpm |
三、安装nginx、php、mysq
yum install wnginx wphp71 wmysql57 |
四、安装php扩展及其余所需依赖
yum install wphp71-ldap wphp71-snmp wrrdtool wnet-snmp wspine-1.2.2 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 |
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 |
修改默认MySQL密码,建立cacti数据库,并添加相应权限 mysql -uroot -p mysql> set password = password('cacti'); mysql> CREATE DATABASE cacti DEFAULT CHARACTER SET utf8; mysql> GRANT ALL ON cacti.* TO cacti@localhost IDENTIFIED BY 'cacti'; mysql> GRANT SELECT ON mysql.time_zone_name TO cacti@localhost IDENTIFIED BY 'cacti'; mysql> ALTER DATABASE cacti CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; mysql> flush privileges; mysql> quit |
/usr/local/mysql/bin/mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql -uroot -pcacti mysql |
网络不佳的状况下,强烈建议先下载到本地,再上传到服务器 mkdir -p /data/www cd /data/www wget https://www.cacti.net/downloads/cacti-1.2.2.tar.gz tar xf cacti-1.2.2.tar.gz mv cacti-1.2.2 cacti
|
cd /data/www/cacti/include vi config.php $database_type = 'mysql'; $database_default = 'cacti'; $database_hostname = 'localhost'; $database_username = 'cacti'; $database_password = 'cacti'; $database_port = '3306'; $database_ssl = false; |
mysql -uroot -pcacti cacti < /data/www/cacti/cacti.sql touch日志文件,后续安装时用的到 touch /data/www/cacti/log/cacti.log touch /data/www/cacti/log/cacti_stderr.log |
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 |
useradd cacti chown -R cacti:cacti /data/www/cacti/ chmod a+w /data/www/cacti/log chmod a+w /data/www/cacti/cache/boost/ chmod a+w /data/www/cacti/cache/mibcache chmod a+w /data/www/cacti/cache/realtime chmod a+w /data/www/cacti/cache/spikekill chmod a+w /data/www/cacti/log/cacti.log chmod a+w /data/www/cacti/resource/snmp_queries/ chmod a+w /data/www/cacti/resource/script_server/ chmod a+w /data/www/cacti/resource/script_queries chmod a+w /data/www/cacti/scripts |
vi /usr/local/nginx/conf/vhost/demo.conf server { listen 80 default_server; server_name 222.29.77.101; index index.html index.htm index.php; root /data/www;
error_page 500 502 503 504 /50x.html;
#include enable-php56.conf; #include enable-php70.conf; include enable-php71.conf; #include enable-php72.conf; #include enable-php73.conf; #include enable-php74.conf;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; }
location ~ .*\.(js|css)?$ { expires 12h; }
access_log /data/logs/nginx/demo_access.log; error_log /data/logs/nginx/demo_error.log; } 修改root路径为root /data/www;,取消php注释include enable-php71.conf;,修改下server_name为本机IP,或者本身填个域名,自行hosts,不作过多说明! |
nginx -t /etc/init.d/nginx restart |
spine是一个基于C语言的,很是快速的轮询引擎,它是默认的cmd.php的可选替代,若是要使用spine须要单独的设置 cd /usr/local/spine/etc cp spine.conf.dist spine.conf vi spine.conf(修改最底下两段) DB_Host localhost DB_Database cacti DB_User cacti DB_Pass cacti DB_Port 3306 验证一下 /usr/local/spine/bin/spine 返回如下内容表示成功 SPINE: Using spine config file [spine.conf] SPINE: Version 1.2.2 starting SPINE: Time: 0.0407 s, Threads: 1, Devices: 1 |
注意:若是访问有问题,修改后建议清空下浏览器缓存,或直接开浏览器隐身模式,以防有缓存 http://222.29.77.84/cacti |
这里须要在my.cnf添加如下参数(注意最后两个参数若是不添加,后续可能会产生warning),而后重启MySQL
vim /etc/my.cnf character-set-server=utf8mb4 |
建立——新设备
管理——设备——总交换机
服务器执行php /data/www/cacti/poller.php,抓取数据
查看状态,UP为正常
查看图表
3.二、监控Linux主机
建立——新设备
管理——设备——模块服务器
服务器执行php /data/www/cacti/poller.php,抓取数据
查看图表