实验环境:RHEL6 selinux and iptables disabled
1. cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候用rrdtool生成图表呈现给用户。因此,snmp和rrdtool是cacti的关键。Snmp关系着数据的收集,rrdtool关系着数据存储和图表的生成。 SNMP是英文“Simple Network Management Protocol”的缩写,中文意思是“简单网络管理协议”。SNMP首先是由Internet工程任务组织(Internet Engineering Task Force)(IETF)的研究小组为了解决Internet上的路由器管理问题而提出的。
SNMP是目前最常用的环境管理协议。SNMP被设计成与协议无关,所以它可以在IP,IPX,AppleTalk,OSI以及其他用到的传输协议上被使用。SNMP是一系列协议组和规范(见下表),它们提供了一种从网络上的设备中收集网络管理信息的方法。SNMP也为设备向网络管理工作站报告问题和错误提供了一种方法。
参考网址:http://www.cacti.net/
http://docs.cacti.net/
http://www.cyberciti.biz/nixcraft/linux/docs/uniqlinuxfeatures/mrtg/mrtg_config_step_3.php(上面有教你如何配置的。)
首先需要提醒你注意的地方是注意安装mysql nginx php等原来用源码安装的最好重装,因为额能有些模块你没有加入进去,造成实验无法完成的,特别是mysql。
(1)yum install httpd mysql mysql-server mysql-devel php php-mysql php-snmp net-snmp net-snmp-utils net-snmp-libs net-snmp-devel rrdtool gcc -y
(2)ll /etc/snmp/snmpd.conf
/etc/init.d/snmpd start
snmpwalk -v 1 -c public localhost IP-MIB::ipAdEntIfIndex
(在你未进行更改snmpd.conf之前这个命令执行完之后是没有什么变化的,也就是没有什么结果显示的)
(3)配置文件:
vi /etc/snmp/snmpd.conf

  1. #com2sec notConfigUser default public 
  2.  
  3. com2sec local localhost public 
  4. com2sec mynetwork 192.168.0.0/24 public 
  5.  
  6. # groupName securityModel securityName 
  7. #group notConfigGroup v1 notConfigUser 
  8. #group notConfigGroup v2c notConfigUser 
  9.  
  10. group MyRWGroup v1 local(这里要注意MyRWGroup中的MyRWG的大小写不要写错哦!) 
  11. group MyRWGroup v2c local 
  12. group MyRWGroup usm local 
  13. group MyROGroup v1 mynetwork 
  14. group MyROGroup v2c mynetwork 
  15. group MyROGroup usm mynetwork 
  16.  
  17. #view systemview included .1.3.6.1.2.1.1 
  18. #view systemview included .1.3.6.1.2.1.25.1.1 
  19. view all included .1       80(80别落下了啊!) 
  20.  
  21. #access notConfigGroup "" any noauth exact systemview none none 
  22. access MyROGroup "" any noauth exact all none none 
  23. access MyRWGroup "" any noauth exact all all none 
  24.  
  25.  
  26. #syslocation Unknown (edit /etc/snmp/snmpd.conf) 
  27. #syscontact Root <root@localhost> (configure /etc/snmp/snmp.local.conf) 
  28. syslocation rhel6 
  29. syscontact westos <997365139@qq.com> 

(4)配置完成后,chkconfig snmpd on
service snmpd start

测试是否成功:
snmpwalk -v 1 -c public localhost IP-MIB::ipAdEntIfIndex
若成功会显示类似与以下:
ip.ipAddrTable.ipAddrEntry.ipAdEntIfIndex.127.0.0.1 = 1
ip.ipAddrTable.ipAddrEntry.ipAdEntIfIndex.192.168.0.20 = 2

(5)yum install   rrdtool
或者是: 下载 rrdtool-1.4.4.tar.gz(然后tar zxf rrdtool-1.4.4.tar.gz
cd rrdtool-1.4.4

./configure && make && make install
ln -s /usr/local/rrdtool-1.4.4/bin/rrdtool /usr/local/bin
(6)cd ~
lftp 192.168.0.254
cd /pub/docs/cacti
get cacti-0.8.7g.tar.gz(主程,主要的调用模块) cacti-plugin-0.8.7g-PA-v2.8.tar.gz(这是一个插件,用于扩展) cacti-spline-0.8.7g.tar.gz(用于加速的,与数据库的交互,本来默认的是cnmd的速度不快)
tar zxf cacti-0.8.7g.tar.gz -C /var/www/html (-C选项是指定解压目录。)
cd /var/www/html
mv cacti-0.8.7g cacti
useradd cacti
cd cacti
chown -R cacti rra log
(将目录rra和log以及其下的文件的所有者改为cacti,这样cacti用户可以向里面写东西。)
ll cacti.sql
mysqladmin create cacti(创建库名)
mysql cacti < cacti.sql(该两句是创建数据库cacti,并且把cacti.sql导进去)
mysql
grant all on cacti.* to cacti@localhost identified by 'cacti';

(给用户cacti登录本地密码是cacti,对数据库的cacti的所有表具有所以的权限。)
flush privileges;
quit

(6)
cd /var/www/html/cacti/include
vi config.php

  1. $database_type = "mysql"
  2. $database_default = "cacti"
  3. $database_hostname = "localhost"
  4. $database_username = "cacti"
  5. $database_password = "cacti"
  6. $database_port = "3306"

(7)crontab -u cacti -e(以用户cacti的身份来编制crontab文件。)
或者是su - cacti crontab -e 编写;
*/5 * * * * php /var/www/html/cacti/poller.php >/dev/null 2>&1
(该句指令的意思是每隔五分钟执行一次 php /var/www/html/cacti/poller.php,在这里php是个命令,然后将输出的正确的还是错的全都输入到/dev/null中去,所有没有文件显示你的命令的输出,你只有最后去cd /var/www/html/cacti/log cat cacti.log 和 ll /var/www/html/cacti/rra可以显示你的实时更新的文件,与流量有关的。)
/etc/init.d/httpd start

http://192.168.0.20/cacti/install/index.php
http://192.168.0.20/cacti/index.php
user name:admin
password:admin(初始密码是admin。初次登录的时候系统会立即让你去改密码的。)
http://192.168.0.20/cacti/settings.php
(8)yum install automake autoheader -y
libtool主要的一个作用是在编译大型软件的过程中解决了库的依赖问题;
yum install libtool
cd ~
tar zxf cacti-spine-0.8.7g(加速的一种工具。)
cd cacti-spine-0.8.7g
(1.autoscan (autoconf): 扫描源代码以搜寻普通的可移植性问题,比如检查编译器,库,头文件等,生成文件configure.scan,它是configure.ac的一个雏形。
your source files --> [autoscan*] --> [configure.scan] --> configure.ac
2.aclocal (automake):根据已经安装的宏,用户定义宏和acinclud.m4文件中的宏将configure.ac文件所需要的宏集中定义到文件 aclocal.m4中。aclocal是一个perl 脚本程序,它的定义是:“aclocal - create aclocal.m4 by scanning configure.ac”
3.autoheader(autoconf): 根据configure.ac中的某些宏,比如cpp宏定义,运行m4,声称config.h.in4.automake: automake将Makefile.am中定义的结构建立Makefile.in,然后configure脚本将生成的Makefile.in文件转换为Makefile。如果在configure.ac中定义了一些特殊的宏,比如AC_PROG_LIBTOOL,它会调用libtoolize,否则它会自己产生config.guess和config.sub
5.autoconf:将configure.ac中的宏展开,生成configure脚本。这个过程可能要用到aclocal.m4中定义的宏。)

aclocal
libtoolize --force
autoheader
autoconf
automake
./configure
make && make install
cd /usr/local/spine/ect/
cp spine.conf.dist spine.conf
vi spine.conf

  1. DB_Host localhost 
  2. DB_Database cacti 
  3. DB_User cacti 
  4. DB_Pass cacti 
  5. DB_Port 3306 

ll spine.conf
(9)
cd /usr/local/spine/bin
http://192.168.0.20/cacti/
进入user :admin
password : admin

进入之后会让你修改密码:
你设置完密码之后进去,点击console,然后点击setting,然后再横栏里点击Poller,然后再Poller Type :选择 spine(你选择加速的!),点击上面的Paths:Alternate Poller Paths中填入:/usr/local/spine/bin/spine保存退出。
点击graph,进入graphs->tree Mode,一会每五分钟,你就会再后面看到图形哦!!。因为你的机子只有你自己访问,所以肯定很少啦!)其实你在cat /var/www/html/cacti/log/cacti.log 或者 ll /var/www/html/cacti/rra也会随时间的便会不断的更新,比如最近是13:55,一会过了一个小时是14:55,那么ll /var/www/html/cacti/rra的时间也会更新到14:55.

    实验二:
    倘若你要监控其他主机的话:
    假设你要监控:IP:192.168.0.25   
步骤(1).console->device然后点击右上角的Add.
    Description:desktop85.example.com
    Hostname: 192.168.0.25
    Host Template : ucd/net SNMP Host
    SNMP Options:
        SNMP Version: Version 1
    然后点击右下角的create。
     (2)create之后在页面的右上角会出现 Create Graphs for this Host,点击一下
    选择你要监控的主机Host:desktop25.example.com(192.168.0.25)
            Graph Types:All

在下面的Graph Templates下选择:
    Graph Template Name     
    Create: ucd/net - CPU Usage    
    Create: ucd/net - Load Average    
    Create: ucd/net - Memory Usage

    然后你还可以create:select a graph type to create
    在Data Query中选择你要监控的数据。可以全选,
然后再右下角的:select a graph type:In/Out Bits
    之后点击Create
    (3)console->Graph Tree
    在右上角点击:Add
    Name:desktop25.example.com
    Sorting Type:Mannual Ordering

    然后点击create
    然后再弹出的一个页面上会显示Save Successful。然后你在添加:tree Items 点击右房的Add修改:tree Item Type 选择HOST,在 Tree Item values:Host选择:desktop25.example.com
然后在Round Robin Archive:后面选择:Daily(5 minutes Average)之后点击create。然后点击Save
    (4)此时你可以点击graphs 可以看到Host:desktop25.example.com点击一下可以看到你所监控的desktop25机子上的一些变化。
    实验三:在你所监控的服务器上添加扩展:
    步骤一:
    (1)
        cd ~
    lftp 192.168.0.254
    cd pub/docs/cacti   
    get    cacti-plugin-0.8.7g-PA-v2.8.tar.gz(这是一个插件,用于扩展) 
    tar zxf cacti-plugin-0.8.7g-PA-v2.8.tar.gz
    cd cacti-plugin-arch

    less README(可以看一些指导你怎么做的文件!)
    cp cacti-plugin-0.8.7g-PA-v2.8.diff  /var/www/html/cacti/
    cd /var/www/html/cacti
    yum install patch
    patch -p1 -N < cacti-plugin-0.8.7g-PA-v2.8.diff(打补丁)
    cd /var/www/html/cacti/include/
    vi config.php

  1. $database_type = "mysql"
  2. $database_default = "cacti"
  3. $database_hostname = "localhost"
  4. $database_username = "cacti"
  5. $database_password = "cacti"
  6. $database_port = "3306"
  7.  
  8. $url_path = "/cacti/"

    global.php这个文件可以采用默认,不用修改。
    (2)cd ~/cacti-plugin-arch
    mysql cacti < pa.sql

    (3)此时你在访问http://desktop85/cacti点击
    console->User Managerment进入之后点击admin你会再下面看到多了一个选项Plugin Management 选中。然后点击Save
    (4)接下来你要添加插件了:
    lftp 192.168.0.254
    cd pub/docs/cacti
    get monitor-0.8.2.tar.gz  thold-0.4.3.tar.gz  settings-0.5.tar.gz
    (你也可以去官方网站下载:http://cactiusers.org)
    然后   
        tar zxf monitor-0.8.2.tar.gz  -C /var/www/html/cacti/plugins
             tar zxf thold-0.4.3.tar.gz -C /var/www/html/cacti/plugins
          tar zxf settings-0.5.tar.gz  -C /var/www/html/cacti/plugins

      (只是解压到/var/www/html/cacti/plugins就可以了,其他的什么也不做。)
    (5)去访问http://desktop85/cacti
        console->User management
        点击adminConfigure Threshold Templates     Configure Thresholds    View Thresholds        View Monitoring Global Settings添加上。 然后再console->plugin Management点击Monitor,Settings,Thold点击安装或者enable plugin 。你会再横的一栏上看到多了thold  monitor这些选项。再monitor中可看到你的设备,没有的话你可以去console->devices添加Monitor Host。再console->setting中也多了好多选项。z
注意如果无法出现图形你去查看/etc/php.ini       date.timezone = Asia/Shanghai 还要检查/etc/init.d/crond restart,还有注意监控的那台机子上也要安装snmpd rrdtool (否则不可以监控和画图的噢!)(参阅http://hi.baidu.com/quanzhou722/blog/item/d31431169996345021a4e9db.html)