之前笔者写过使用MRTG搭建IDC网络流量监控平台,MRTG是一个非常老的软件,虽然非常好用,但是在功能方面还是有些欠缺,所以俺决定研究一下CACTI,下面一起与大家分享一下功能强大的CACTI         Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。它通过snmp来获取数据,使用RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能强大,界面友好。
           Cacti是基于PHP语言开发的,在运行时需要PHP+MySQL的支持,首先我们来安装一个LAMP环境
  操作系统:CentOS 5.4

    一、安装Apache
  #tar zxvf httpd-2.2.11.tar.gz
  #cd httpd-2.2.11
  #./configure --prefix=/usr/local/apache --enable-so
  #make && make install
  #/usr/local/apache/bin/apachectl start   //启动Apache

  #echo "/usr/local/apache/bin/apachectl start" >>/etc/rc.local     //加入开机启动

  
  二、安装MySQL
  # groupadd mysql     //创建MySQL组   
# useradd -g mysql mysql    //创建MySQL用户,并加入到MySQL组   
# tar zxvf mysql-5.1.35-linux-i686-glibc23.tar.gz   
# mv mysql-5.1.35-linux-i686-glibc23 /usr/local/
  # cd /usr/local/   
# ln -s mysql-5.1.35-linux-i686-glibc23 mysql   
# cd mysql   
# chown -R root:mysql /usr/local/mysql  // 将/usr/local/mysql目录所属用户改为root,所属组改成mysql   
# chown -R mysql:mysql /usr/local/mysql/data  //将/usr/local/mysql/data目录宿主改为mysql   
# ./scripts/mysql_install_db --user=mysql    //初始化MySQL   
#cp support-files/my-medium.cnf /etc/my.cnf     //设置MySQL配置文件路径
  #/usr/local/mysql/bin/mysqld_safe --user=mysql &   //启动MySQL
  #/usr/local/mysql/bin/mysqladmin -uroot password123456 //设置MySQL的管理员密码
  #echo "/usr/local/mysql/bin/mysqld_safe --user=mysql &" >>/etc/rc.local //将MySQL加入开机启动
  

  三、安装PHP
        在安装PHP之前要先安装zlib libpng jpeg freetype fontconfig gd,本次安装步骤略,安装路径分别为
  /usr/local/zlib
  /usr/local/libpng
  /usr/local/jpeg
  /usr/local/freetype
  /usr/local/fontconfig
  /usr/local/gd
  要是为了方便的话也可以使用yum安装上面的几个库
  安装PHP
  #tar zxvf php-5.2.9.tar.gz
  #cd php-5.2.9
  #./configure --prefix=/usr/local/php--with-apxs2=/usr/local/apache/bin/apxs --with-mysql=/usr/local/mysql--with-gd=/usr/local/gd --with-png-dir=/usr/local/libpng--with-jpeg-dir=/usr/local/jpeg --with-freetype-dir=/usr/local/freetype--enable-gd-native-ttf --with-ttf --enable-gd-jis-conv --enable-xml--enable-mbstring --enable-sockets
  #make && make install
  # ln -s /usr/local/php/bin/* /usr/local/bin/
  关于Apache+PHP+MySQL整合请参考http://luwenju.blog.51cto.com/620835/179663
  
  四、安装rrdtool
  Rrdtool需要一些库文件的支持,这些库文件的安装非常耽误时间,在此我们使用yum方式安装
  #yum install cairo-devel libxml2-devel pango-devel pango libpng-devel freetype freetype-devel libart_lgpl-devel intltool
  #tar zxvf rrdtool-1.3.8.tar.gz
  #cd rrdtool-1.3.8
  # ./configure --prefix=/usr/local/rrdtool --disable-tcl
  #make && make install
  #ln -s /usr/local/rrdtool/bin/* /usr/local/bin/
  
  五、安装net-snmp
  # tar zxvf net-snmp-5.3.0.1.tar.gz
  #cd net-snmp-5.3.0.1
  # ./configure --prefix=/usr/local/net-snmp --enable-developer
  # cp EXAMPLE.conf /usr/local/net-snmp/share/snmp/snmpd.conf
  #vi /usr/local/net-snmp/share/snmpd.conf修改可以访问SNMP的网段和community
  
  # ln -s /usr/local/net-snmp/bin/* /usr/local/bin/
  #/usr/local/net-snmp/sbin/snmpd -c /usr/local/net-snmp/share/snmp/snmpd.conf     //启动SNMP

  # echo "/usr/local/net-snmp/sbin/snmpd -c /usr/local/net-snmp/share/snmp/snmpd.conf">>/etc/rc.loca   //加入开机启动

  
  六、安装cacti
  #tar zxvf cacti-0.8.7e.tar.gz
  #mv cacti-0.8.7e/* /usr/local/apache/htdocs/
  #useradd cacti
  #chown -R cacti /usr/local/apache/htdocs/rra
  #chown -R cacti /usr/local/apache/htdocs
  #chgrp -R cacti /usr/local/apache/htdocs/

登录MySQL,新建数据,并授权

  #/usr/local/mysql/bin/mysql –uroot –p123456

  Mysql>create database cacti;
  Mysql>grant all on cacti.* to cacti@'localhost' identified by 'cacti';
  Mysql>flush privileges;

导入cacti数据库

  #cd /usr/local/apache/htdocs
  #/usr/local/mysql/bin/mysql -uroot -p123456 cacti < cacti.sql

修改cacti安装配置文件

  #vi /usr/local/apache/htdocs/include/config.php
  
  
   http://192.168.1.10/install
   
  

  
  
   
cacti默认会在系统中找rrdtool、snmp的一些可程序文件路径,如果以上安装都正确的话会出现如下界面。注意:rrdtool、和net-snmp的版本要选择正确

  
  
   
cacti默认登录用户名为密码均为admin

  
  
登录后cacti会强制用户输入新的密码

  

生成图形文件
#/usr/local/bin/php /usr/local/apache/htdocs/poller.php

加入cron服务,让图片上的流量定时变动

  #crontab –e
  */5 * * * * env LANG=C /usr/local/bin/php /usr/local/apache/htdocs/poller.php
  注:如系统没有安装cron服务,请使用yum install vixie-cron安装

下图就是cacti登录进去后的界面

  
  
  
    七、Cacti简单应用
下面我们来对公网上一台正在运行的交换机来做流量监控(被监控对象需要开启SNMP服务)
点击Devices--------然后点击add进行添加

  
  
  
   

Description:这个是我们自定义的监控对象的显示名
Hostname:这个应该填写监控对象的IP地址或者主机名,在此我们填写交换机的管理IP
Host Template:主机类型,我们选择Generic snmp-enabled Host (SNMP主机)
SNMP Community:监控对象的SNMP团体,根据实际填写,此次是public
SNMP Version:被监控对象的SNMP版本,现在一般使用第二个版本

   
  

点击“Create Graphs for this Host”意思是为这个设备创建图形

  
  
选择我们所要监控的端口,在此我们选择所有端口

  
  
点击“graphs”,然后选择刚才建立的监控对象  这个时候我们就可以看到监控界面了,如果看不到图片请执行/usr/local/bin/php/usr/local/apache/htdocs/poller.php,过5分钟我们就可以看到流量了,如果无流量或者流量图一直无变化请检查snmp是否正确和cron服务是否添加