Cacti 在英文中的意思是仙人掌的意思,Cacti是一套基于PHP,MySQL,SNMPRRDTool开发的网络流量监测图形分析工具。它通过snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善。
Cacti是一个c/s架构的,他主要监网络接口流量,监控CPU的负载,内存使用,磁盘空间等,还监控服务器中的WEBmailftp、数据库等,当然还能监控网络设备性能,配置文件,路由数,以及机房温度,电压,湿度,风扇,电源,等运行状态。
原理:这个主要是基于 SNMP 协议进行工作的, SNMP 是一个 udp 协议,使用的端口号是 161 ,现在有 v1 v2 v3 几个版本,其中 v2 版本用的还是较多的。 RHEL5 上使用的 net-snmp
接下来给出一个官方文档给出的 cacti 架构的,来阐述整个工作流程
这里使用SNMP来定时采集数据信息,然后通过RRD工具来绘制成人们容易识别的图形,方便统计,而RRD还能实现一个环形存储,然后用户通过一个cacti提供的一个图形化界面来统计信息,从而实现监控的目的。
接下来介绍一下RRDtool Round Robin Database,环形数据库),能让你创建数据库、存储数据、提取数据、创建用于在Web浏览器中显示的PNG格式的图像。这些PNG图像以来于你收集的数据,它可以是网络平均使用率、峰值。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

接下来我就通过实验来实现整个安装配置,以及实现监控效果的整个过程:
1.       环境介绍,主监控机是RHL5IP=192.168.1.108
2.       主监控机上安装apche+php+gdweb环境,本实验我采用的是rpm包的安装方式
3.       安装正式开始:
一、安装相关的依赖的软件包
安装必要的开发库:
# yum groupinstall "Development Libraries" "Development Tools"

 

安装一些应用软件包
#yum install php php-mysql php-snmp mysql mysql-server net-snmp net-snmp-libs net-snmp-utils php-pdo perl-DBD-MySQL

 

安装rrdtool,我这里下载了软件包,分别是rrdtool-<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />1.2.27-3.el5.i386.rpmrrdtool-devel-1.2.27-3.el5.i386.rpmrrdtool-php-1.2.27-3.el5.i386.rpm
# yum localinstall --nogpgcheck rrdtool-*

 

安装并配置SNMP的配置文件/etc/snmp/snmp.conf
# yum install net-snmp
#vi /etc/snmp/snmp.conf
#将下边这行中的default
com2secnotConfigUser default public
#改为127.0.0.1
com2secnotConfigUser 127.0.0.1 public
#将下边这行中的systemview
access notConfigGroup "" any noauth exact systemview none none
#改为all
access notConfigGroup "" any noauth exact all none none
#将下边这行的注释“#”号去掉
#view all included .1 80

 

启动snmp
# service snmpd start

 

二、安装cacti
我这里使用的是cacti-0.8.7g.tar.gz,源码安装
# tar xf cacti-0.8.7g.tar.gz  //解压出来
# mv cacti-0.8.7g /var/www/html/cacti  //移动到http的目录下的cacti目录下

#yum install mysql-server //安装Mysql

#chkconfig –add mysqld
#chkconfig mysqld on //设置开机自动启动
#service mysqld start  //启动mysql数据库
#mysql
mysql> CREATE DATABASE cacti ;  //创建数据库
mysql> GRANT ALL PRIVILEGES ON cacti.* TO cacti@localhost IDENTIFIED BY 'cacti';//授权
mysql> GRANT ALL PRIVILEGES ON cacti.* TO cacti@127.0.0.1 IDENTIFIED BY 'cacti';
mysql> FLUSH PRIVILEGES;
mysql> USE cacti;
mysql> SOURCE /var/www/html/cacti/cacti.sql;  //导入数据

 

配置cacti来连接数据库

# vim /var/www/html/cacti/include/config.php

$database_username = "cacti";

$database_password = "cacti";

修改上面两项,注意这里的用户名是对应授权的用户和密码;

 

启动httpd服务
# service httpd start
#setenforce 0

 

在浏览器中输入http//192.168.1.108/cacti就能进行安装了
这是安装的其实界面
点击Next进入选择New Install,然后Next,下面一直默认就行了
知道出现用户登录的界面:
默认的情况下,用户名和密码都是 admin ,但是进入以后,必须要修改密码
进入后,出现如下的界面,然后就可以做一定的设置了
 
第一次登录,可能会出现图片无法显示的情况,这个时候,我们只需要手动进行生成图片就行了
#php /var/www/html/cacti/poller.php > /dev/null 2>&1
Ok
显示当前主机的信息如下:
然后就可以自定义需要监控的信息了
关于如何使用这个界面,可以自己下去尝试一下做作,多摸索一下,就能熟练掌握这个工具了。
一、 定义一个定期计划
# crontab –e
# 加入如下内容。注意 poller.php 的路径
*/5 * * * * php /var/www/html/cacti/poller.php > /dev/null 2>&1
# 确保 /var/www/html/cacti/rra/ 目录存在
# 如果暂时未看到图表,可以手工执行,生成图表
#php /var/www/html/cacti/poller.php > /dev/null 2>&1

 

四、使用 Cacti 监控 Linux 主机
# 在被监控的 linux 主机( 192.168.1.110 )上安装 net-snmp
#yum install net-snmp
#vi /etc/snmp/snmpd.conf
# 更改以下部分
# 将下边这行中的 default
com2secnotConfigUser default public
# 改为 192.168.1.108 cacti )服务器的地址 )
com2secnotConfigUser 192.168.1.108 public
# 将下边这行中的 systemview
access notConfigGroup "" any noauth exact systemview none none
# 改为 all
access notConfigGroup "" any noauth exact all none none
# 将下边这行的注释“ # ”号去掉
#view all included .1 80
service snmpd restart
如果出现问题请注意一下 snmp 协议的版本,都用 version 1 是一种解决方法
如果都用 version 1, 需要把所有监控机和被监控机的 snmpd.conf 改一下
#vi /etc/snmp/snmpd.conf
# 将下边这行
view systemview included .1.3.6.1.2.1.1
# 改为
view systemview included .1.3.6.1.2.1
被监控机配置完成之后,需要把他加入到监控的队列中
在图形化界面上点击 console à device à Add( 右上角 )
 
点击 create ,然后点击编辑图像列表,出现一下图像
接着点击 create 创建成功
然后点击
下的 User Management 在最下面选择,这样就能够实现管理其他的机器了。这里我就不多演示了
显示一下监控到的流量
 
接下来我讲做的是如何在现有的基础上添加具有拓扑功能的管理页面的插件
我现在想添加 monitor 的功能
# tar xf cacti-plugin-0.8.7g-PA-v2.8.tar.gz  // 安装安装 cacti 的一个 patch -- Plugin Architecture 支持插件
# cp -R cacti-plugin-arch/* /var/www/html/cacti/  // 复制到 cacti 目录下
# cd  !$  // cacti 目录下
# mysql -ucacti -pcacti cacti <pa.sql   // pa.sql 添加到 cacti 数据库中
# patch -p1 -N <cacti-plugin-0.8.7g-PA-v2.8.diff  // 打补丁
# vi include/config.php
修改为 $url_path = /cacti/ ;
安装 monitor 插件
# tar xf monitor-0.8.2.tar.gz
# mv monitor /var/www/html/cacti/plugins/monitor  // 复制到 cacti 目录下
然后登录到 web 页面就可以进行安装了
点击 plugin Management 就会出先这个界面了,然后点击那个箭头然后刷新页面,点击 User Management 点击 Admin 用户,选中如图给出的所有的选项
Save 之后,就会出现 monitor 的插件了
点击 monitor 后就会出现如下图所示的一个简单的拓扑信息了,我这里有一个宕机的,呵呵,很直观吧!
 
安装插件就是这样了,你可以试一下奥,呵呵

 

五、这样一个 cacti 基础性的监控就完成了,下面我将演示如何监控 Mysql 数据库的操作
使用软件包是 mysql-cacti-templates-1.1.2.tar.gz
# tar xf mysql-cacti-templates-1.1.2.tar.gz
# cd mysql-cacti-templates-1.1.2
# cp ss_get_mysql_stats.php /var/www/html/cacti/scripts/
# cd /var/www/html/cacti/scripts/
# chown  1000.users ss_get_mysql_stats.php  // 修改属主和属组
# vim !$
$mysql_user = 'cacti';
$mysql_pass = 'cacti';
$cache_dir  = "var/www/html/cacti/cache/";
设置准备监控的数据库的账户相关信息
创建上面文件的目录,然后赋予权限为 777

# mkdir /var/www/html/cacti/cache

chmod 777 -R !$

创建 Mysql 需要的账户和权限

mysql> GRANT ALL  ON cacti.* TO cacti@'%' IDENTIFIED BY 'cacti';   

mysql> FLUSH PRIVILEGES;

然后在图形化界面中导入 cacti_host_template_x_db_server_ht_0.8.6i.xml mysql-cacti-templates-1.1.2.tar.gz 里面有,解压出来,然后在导入)

点击 console—> Import Templates 然后将 cacti_host_template_x_db_server_ht_0.8.6i.xml 导入就行了,然后出现如下的信息,则表示导入成功了

当然里面还有 nginx apache 的模块,如果需要,也可以做!!!