下面我们将通过一个实际的例子讲解如何在企业中部署SNMP + Cacti + RRDtool。
操作的环境:
监测主机IP地址是192.168.1.200,RHEL5u2系统,这里也称为Server或者网管主机(工作站)
被监测主机IP地址是192.168.1.220,RHEL5u2系统,这里也称为Client
由于这些都是系统光盘中自带的Red Hat官方提供的包。所以挂在光盘后执行rpm –ihv就可以逐一装上。
在安装完成之后,配置并开启本机的SNMP。简单起见我仍然只开启V1版本的SNMP,由于在上面说明SNMP配置原理的时候已经有了具体步骤,所以这里就不再赘述。
在SNMP服务启动之后可以下载和编译rrdtool以及cacti。
从以下站点下载这两个软件:
cacti:http://www.cacti.net/downloads/cacti-0.8.7b.tar.gz
rrdtool:http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.2.28.tar.gz
目前这两个软件的版本都是最新版本。
首先将这两个软件拷贝到/usr/local目录下,然后分别按照下面的步骤对其进行解压,编译以及安装。
# ls rrdtool-1.2.28.tar.gz
rrdtool-1.2.28.tar.gz
# ls cacti-0.8.7b.tar.gz
cacti-0.8.7b.tar.gz
# cd rrdtool-1.2.28
# ./configure --prefix=/usr/local/rrdtool
# make
# make install
为了保证编译能够顺利进行,需要预先在系统中安装gcc编译器等开发工具包。
至于cacti,将其解压后把整个目录拷贝到/var/www/html目录下并重命名为cacti。
下面我们需要为cacti创建所需的数据库,这也是当时安装mysql-server的原因。
先启动mysql服务,并且指定mysql管理员的账号以及密码,然后以新的用户名和密码重新登录mysql数据库。
下面的操作是在mysql的交互接口下进行。首先需要通过T-Sql语句建立cacti数据库,然后为方便管理,需要给root以及cactiadmin用户授予所有管理权限,并且定义cactiadmin用户的密码。完成之后退出交互接口,并且将cacti预先定制的cacti.mysql文件导入到mysql中去。
这时再通过交互接口进入mysql之后就可以看到刚才所导入的cacti预先定制好的表了。
接着按照刚才导入到数据库中的内容用vi编辑器修改cacti管理接口的配置文件:
# vi /var/www/html/cacti/include/config.php
修改的内容如下:
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cactiadmin";
$database_password = "123456";
$database_port = "3306";
由于我们需要定制cactiadmin通过SNMP定时到被监测设备中获取数据信息,所以要建立cactiadmin用户并以该用户的身份建立一个任务计划。
# passwd cactiadmin
# crontab -e -u cactiadmin
# crontab -l -u cactiadmin
*/5 * * * * /usr/bin/php /var/www/html/cacti/poller.php > /dev/null 2>&1
同时指定下面两个目录的属主是cactiadmin
# chown -R cactiadmin /var/www/html/cacti/rra /var/www/html/cacti/log
之后我们需要安装一个叫做cactid的东西,这个所谓的cactid是cacti的数据收集器的守护进程。
安装和配置的方法也很简单。
最新的cactid版本是0.8.6k,可以从该地址获得:http://mirrors.rootservices.net/cacti/cactid/cacti-cactid-0.8.6k.tar.gz
下载之后将其放到/usr/local目录下:
然后按照下面步骤进行编译安装:
# cd cacti-cactid-0.8.6k
# ./configure --prefix=/usr/local/cactid
# make
# make install
为了保证编译成功,还需要下面的几个软件:
libpng
libpng-devel
zlib
zlib-devel
freetype
freetype-devel
在该软件编译完成之后,在/usr/loca/目录下会自动建立cactid目录,进入该目录修改etc/cactid.conf档,修改之后的结果如下:
DB_Database cacti
DB_User cactiadmin
DB_Pass 123456
DB_Port 3306
并且将该文件复制到/etc目录下。
# cp /usr/local/cactid/etc/cactid.conf /etc/
最后配置HTTP服务,只需要将网站服务的主目录指向/var/www/html/cacti然后重启httpd服务即可:
DocumentRoot "/var/www/html/cacti"
完成之后可以在监测主机上开启一个浏览器并且直接访问http://192.168.1.200,由于已经将cacti设置为网站的主目录,所以上述的配置一切正常的话可以获得一个cacti的初始安装页面。点击“Next”之后开启下一个页面准备安装cacti。在出现的页面中如果确认所有信息无误则选择“New Install”并进入下一步。在新出现的Installation guide页面中cacti会自动探测原先安装到一些基本文件的位置。在这里需要确保安装程序能够找到所需要的所有文件和信息。针对第一个地方出现的“RRDtool binary path not found”的情况,需要手动更改一下路径为:/usr/local/rrdtool/bin/rrdtool,并点击“Finish”。
在接着出现的新页面中输入用户名和密码。此处默认的用户名和密码都是admin。进入之后cacti会强制用户更改密码,为了简化起见,我这里仍然更改为123456并保存密码。在当前页面点击console卷标之后点击setting按钮并选取path卷标,在该页面上需要指定“Cactid Poller File Path”,这里就是cactid程序的绝对路径/usr/local/cactid/bin/cactid,同时确认其它的RRDtool required path的设定是正确的,保存该配置。到此为止,整个cacti主页面的全局设置就基本完成,最后开启添加要监测的目标服务器。点击“Console”然后点击“Create”标签下面的“New Graphs”按钮以及在出现的页面上点击“Create New Host”进入建立被监测服务器的页面,按照下面的页面来添加被监测系统的信息,其中包括:描述(可随便填写),主机名称(IP地址),监测的主机类型(Local Linux Machine),SNMP版本(V1)和与之对应的埠号(161)与团体信息。最后点击“Create”。
但是由于我使用的是RHEL5u2系统上自带的firefox 3浏览器,在这个时候会出现一些问题。如图,提示“由于密码不符,该设备无法建立”,但事前我们并没有设置过任何密码。这其实是在该版本的cacti上的一个bug而已,在RHEL系统上尤其针对比较新的firefox3浏览器,当提交到该页面的时候由于一些缓存方面的影响而导致无法最终完成该步骤。不过解决的方法也很简单。就是使用IE系列浏览器或者版本比较低的firefox浏览器来访问,那么在做到该步骤的时候就可以正常完成配置。
在该步骤完成之后可以看到默认的配置将会监测目标主机的内存、负载、登录用户以及CPU方面的信息。而用户完全可以在“Add Graph Template”以及“Add Data Query”处添加更多的监测类型。并选择右边的“Add”,最后将配置保存并切换到“Graph”标签下复选需要监测的参数类型,一般着重选择的内容包括CPU,内存,Swap分区,Buffer缓冲区,网络流量,磁盘使用量以及登录用户等。完成之后在“Graph”的“Preview”卷标中即可获得动态的统计图信息。由于我选的内容太多,所以在当前页面无法全部显示出所有统计图来,只能一个个项目点击进去。
和Mrtg类似,每一个项目的监测统计都有5分钟、30分钟、2小时和1天为计算单位。所以从各种统计图来看,即可获得一个参数当前的信息,又可获得相对长久的信息便于比较。
而作为被监测主机,其实需要配置的内容只有两个:第一,修改SNMP配置文件并启动服务,使之与网管主机的SNMP版本和认证方式一致;第二,确保网络连通性以及确保网管主机能够通过snmpwalk获得被监测主机上的全部MIB内容。由于配置方法和上面的例子一样,只要从监测主机上将其已经修改过的snmpd.conf配置文件拷贝到/etc/snmpd目录下覆盖原有配置文件,然后启动snmpd服务并关闭防火墙就行了。当然可以分别在监测主机和被监测主机上运行命令来测试:
# snmpwalk –v1 –cpublic 192.168.1.220
如果能够获得所有的MIB信息,则证明客户端的配置没有问题,所以这里也不再赘述。
到此为止Cacti + RRDtool的结构就已经配置完成,相对于Mrtg而言,Cacti + RRDtool的方式有一个更大的好处就是利于用户时刻调整监测的对象。例如,用户需要调整当前的监测内容并新增一些监测项目。那么就可以随时编辑监测设备并修改需要监测的参数,相当方便。同时Cacti + RRDtool提供了在Mrtg上不具备的管理功能,以及Cacti的绘图功能相对更强大,图像更加美观。
尽管第一次部署网管主机比较复杂,但是后续对配置对多个设备的集中监测就相对简单多了。可以说是一劳永逸。
这些都是这种结构尽管在配置方面略显复杂,但是越来越受欢迎并在企业中广泛应用的原因。和Mrtg一样,Cacti和RRDtool也是一个目前在企业中越来越广泛应用的开源监测方案。