Cacti 流量监控全步骤、邮件报警实现过程
Cacti简介
Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。采用PHP进行前端代码驱动。通过SNMP获得被监控主机的数据信息。rrdtool关系着数据存储和图表的生成。Mysql配合PHP程序存储一些变量数据并对变量数据进行调用。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善。Cacti的发展是基于让RRDTool使用者更方便使用该软件,除了基本的Snmp流量跟系统资讯监控外,Cacti也可外挂Scripts及加上Templates来作出各式各样的监控图。
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)的库。
snmp抓到数据不是存储在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目录的rra文件夹下)。rrdtool对数据的更新和存储就是对rrd文件的处理,rrd文件是大小固定的档案文件(Round Robin Archive),它能够存储的数据笔数在创建时就已经定义。
RRDtool是指Round Robin Database工具(环状数据库)。Round robin是一种处理定量数据、以及当前元素指针的技术。想象一个周边标有点的圆环--这些点就是时间存储的位置。从圆心画一条到圆周的某个点的箭头--这就是指针。就像我们在一个圆环上一样,没有起点和终点,你可以一直往下走下去。过来一段时间,所有可用的位置都会被用过,该循环过程会自动重用原来的位置。这样,数据集不会增大,并且不需要维护。RRDtool处理RRD数据库。它用向RRD数据库存储数据、从RRD数据库中提取数据。
- 首先是 lamp 环境,接下来我们顺序安装
[root@localhost src]# yum -y install gcc gcc-c++ make
[root@localhost src]# yum groupinstall chinese-support
[root@localhost src]# tar zxf apr-1.4.6.tar.gz
[root@localhost src]# tar zxf apr-util-1.5.2.tar.gz
[root@localhost src]# tar zxf pcre-8.30.tar.gz
[root@localhost src]# tar zxf httpd-2.4.3.tar.gz
[root@localhost src]# cd apr-1.4.6
[root@localhost apr-1.4.6]# ./configure --prefix=/usr/local/apr
[root@localhost apr-1.4.6]# make && make install
[root@localhost apr-1.4.6]# cd ../apr-util-1.5.2
[root@localhost apr-util-1.5.2]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
[root@localhost apr-util-1.5.2]# make && make install
[root@localhost apr-util-1.5.2]# cd ../pcre-8.30
[root@localhost pcre-8.30]# ./configure --prefix=/usr/local/pcre
[root@localhost pcre-8.30]# make && make install
[root@localhost pcre-8.30]# cd ../httpd-2.4.3
[root@localhost httpd-2.4.3]# ./configure --prefix=/usr/local/httpd --enable-so --enable-cgi --enable-rewrite --with-mpm=worker --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --with-pcre=/usr/local/pcre/
[root@localhost httpd-2.4.3]# make && make install
[root@localhost src]# yum -y install cmake ncurses ncurses-devel
[root@localhost src]# groupadd mysql
[root@localhost src]# useradd -r -s /sbin/nologin -g mysql mysql
[root@localhost src]# tar zxf mysql-5.6.4-m7.tar.gz
[root@localhost mysql-5.6.4-m7]# cmake .
[root@localhost mysql-5.6.4-m7]# make && make install
[root@localhost mysql-5.6.4-m7]# cd ../../
[root@localhost local]# chown -R root:mysql mysql/
[root@localhost local]# chown -R mysql mysql/data/
[root@localhost local]# cp mysql/support-files/mysql.server /etc/init.d/mysqld
[root@localhost local]# cp mysql/support-files/my-medium.cnf /etc/my.cnf
cp:是否覆盖"/etc/my.cnf"? y
[root@localhost local]# ./mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/