文章: 配合SNMP实现系统监控之工具研讨
在大多数情况下基于SNMP的监控方式中,SNMP只是提供了各种类型的系统运行数据,但是如何整理和归纳这些数据并使之成为可读性比较高和 比较直观的信息还需要一些工具的配合以及配置。在该连载中,我们将介绍常见的围绕着SNMP的监控解决方案的实现方法。
b.snmp + mrtg实现对网络负载的监测:
上述的操作方法是利用了一些闭源的商业软件在Windows下进行系统监测,尤其是安装在网管工作站上的客户端软件,其中有不少会牵涉到比较昂贵的软件费用。所以对于一些经费充足的企业,这种方案不乏考虑的价值。但是如果我们对监测的对象和内容要求不是很高的话,实际上利用操作系统自己提供的工具也能实现一些简单的监测。
在了解了snmp协议的基本工作原理和配置方法之后,我们来看一下利用SNMP在Linux操作系统上进行监测的解决方案。提到在Linux上的开源方案,不得不提及一个老牌的网络流量监测工具MRTG。
MRTG(Multi Router Traffic Grapher,MRTG)是一个完全免费的监测网络链路流量负载的工具软件,他通过SNMP协议从设备得到流量信息,并将流量负载以包含PNG格式图形的HTML 文件以Web页面显示给用户。MRTG能够以非常直观的形式显示流量负载,而且在工作过程中所占用的系统资源很低。
下面我们将演示如何通过MRTG来获得以SNMP协议所监测到的网络流量方面的信息,为了更好地说明在企业环境中的应用,我们会通过一台运行MRTG的网管工作站同时获取两台被监测服务器的网络流量信息来仿真企业对多台服务器的网络流量监测方式。
基本结构如下:
网管工作站:RHEL5u2 192.168.1.10
被监测主机1:RHEL5u2 192.168.1.100
被监测主机2:RHEL5u2 192.168.1.200
首先在被监测主机192.168.1.100和192.168.1.200上分别配置并开启snmpd服务(过程同上例)。为了简化配置我只使用上面的v1版本的SNMP配置方法。同时需要在开启服务之后关闭防火墙以及保证网管和被监控端之间的连通性。
之后在网管工作站上安装并且配置MRTG。由于在RHEL 5u8中MRTG是系统自带的软件包,所以可直接使用rpm安装(如图Screenshot11.png所示)。
# rpm -ihv mrtg-2.14.5-2.i386.rpm [ Enter ]
安装完成之后需要运行命令cfgmaker针对两台被监测主机各自生成mrtg的配置文件,在该例子中配置文件被分别命名为test1.cfg和test2.cfg,存放在/etc/mrtg目录中。
#cfgmaker --global "WorkDir: /var/www/html/mrtg" \ > --global "Options[_]: growright,bits" \ > --ifref=ip \ > --output /etc/mrtg/test1.cfg \ > [email protected] [ Enter ] #cfgmaker --global "WorkDir: /var/www/html/mrtg" \ > --global "Options[_]: growright,bits" \ > --ifref=ip \ > --output /etc/mrtg/test2.cfg \ > [email protected] [ Enter ]
上述的命令定义了生成配置文件test1.cfg和test2.cfg的全局参数,包括配置文件的主目录,页面存放的主目录,SNMP团体信息和建立绘图时指定绘图方式的一些必须参数,如绘制向右方增长的统计图和统计图的计量单位等。
之后执行下面的命令将两个配置文件的内容合并到主配置文件/etc/mrtg/mrtg.cfg里面。
# cat test1.cfg >> mrtg.cfg [ Enter ] # cat test2.cfg >> mrtg.cfg [ Enter ]
并根据配置文件的需求在/var/www/html目录下建立mrtg页面的主目录:
# mkdir /var/www/html/mrtg [ Enter ]
(如图Screenshot12.png所示)。
以及针对mrtg.cfg配置文件运行命令来启动mrtg。注意,在默认的UTF-8语言字符集下这个启动命令无法执行成功,因此需要设置语言环境变量为env=C,所以命令应该执行如下:
# env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg [ Enter ]
该命令需要执行三次以建立正确的mrtg数据库文件(如图Screenshot13.png,Screenshot14.png所示)。
最后要做的工作是按照配置文件内容在mrtg页面的主目录下生成正确的index文件,命令如下:
# indexmaker --output /var/www/html/mrtg/index.html \ > --title=MRTG \ > /etc/mrtg/mrtg.cfg [ Enter ]
同时也要按照mrtg.cfg的配置修改和启动apache并最终为mrtg能够定期进行数据采集建立一个每五分钟执行一次的任务计划:
# cat /etc/httpd/conf/httpd.conf | grep DocumentRoot [ Enter ] DocumentRoot "/var/www/html/mrtg"
最后启动httpd服务:
# service httpd start [ Enter ] # chkconfig httpd on [ Enter ] # crontab -l [ Enter ] */5 * * * * /usr/bin/env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg /dev/null 2>&1
(如图Screenshot15.png所示)
在启动apache之后,即可以在网管工作站或者是任何可以访问到192.168.1.10的80端口的客户端上通过浏览器访问http://192.168.1.10来打开MRTG的监测页面。可以很直观地看到两台主机的流量页面以及详细信息(如图pic16.png-pic17.png所示)。
c.sysstat + mrtg实现对服务器各种性能参数的监测:
到此很多人可能会有这样的疑虑:既然我们已经能够通过SNMP + MRTG得到网络流量的使用情况,那么如果要实时监测服务器的其他系统参数应该怎么办?对于这个问题的答案比较遗憾:由于MRTG是一个专门针对网络流量进行监测和绘图的工具,所以默认情况下不提供对系统其他方面信息监测的功能。因此尽管SNMP协议本身可以获得和显示被监测主机上的大量信息,但是鉴于MRTG方面的限制而无法将这些信息显示出来。
但是好在天无绝人之路,由于MRTG本身实际上也是一个强大的数据采集和绘图引擎。于是我们可以利用一些SNMP以外的系统监测工具来实时获取服务器性能信息,包括CPU,内存,磁盘空间使用率以及I/O性能方面的内容,然后交给MRTG,借助我们所需要的绘图功能来获得所需要的其他类型的统计图信息。
在清楚了解MRTG工作原理之后,这样做无疑会拥有更大的灵活性。但是由于涉及的内容需要一定脚本编程的知识,所以可能对一些高级用户来说会更加适合。
下面我们就举例说明如何将MRTG和系统自带的sysstat所提供的一系列如sar,iostat以及free等系统监测命令等进行结合来获得系统其他方面的统计信息的配置方法。
由于这次网管工作站已经不可能再通过SNMP获取信息,所以我们将环境更改一下,在被监测主机直接安装和配置MRTG,并且结合sysstat一类的系统工具来绘制本机的信息图:
此时假设被监测主机的操作系统是:RHEL 5u8,IP地址是192.168.1.100
sysstat是在RHEL 5中自带的一个综合系统监测工具包。其中包括了sar(主要用于cpu,内存方面的信息统计)和iostat(存储设备I/O统计工具)等。由于sysstat是系统本身自带的包,所以在两台被监测的主机上分别挂载光盘安装sysstat即可。当然除了sysstat还有一些其他的系统性能显示方面的工具可以使用,我们会分别举例。
# rpm -ihv sysstat-7.0.2-1.el5.i386.rpm [ Enter ]
同时还要分别在被监测的主机上安装mrtg。
# rpm -ihv mrtg-2.14.5-2.i386.rpm [ Enter ]
(如图Screenshot16.png所示)
在正式开始之前,需要花一点时间来介绍一下sar和iostat的基本功能:sar是一个强大的系统监测工具,默认不加任何选项则只显示CPU的使用情况,而在加上不同的参数之后sar可以显示大量的内存以及I/O使用状况方面的信息;而iostat主要显示I/O使用方面的信息。如果执行sar不加任何选项通常会显示下面这些信息。(如图Screenshot17.png所示):
其中sar的命令显示内容包括了:
%user → 用户空间的进程占用CPU时间的百分比 %system → 系统空间的进程占用CPU时间的百分比 %nice → 已调整优先级的进程占用CPU时间的百分比 %iowait → 没有进程在该CPU上执行时,处理器等待I/O完成的时间 %steal → 虚拟操作系统占用CPU时间的百分比 %idle → 没有进程在该CPU上执行的时间(也就是CPU未使用的时间)
其中iostat命令显示内容包括了:
tps → 每秒钟完成的I/O请求数量 Blk_read/s → 每秒从设备上读取的block数量 Blk_write/s → 每秒写入到设备商的block数量
另外sar可以通过增加时间参数来指定执行的频率以及输出的内容量,例如命令“sar –u 5”,则表示每5秒钟显示一次CPU的使用情况。这样就利于我们将该命令写入到一个脚本/var/www/mrtg/mrtg.cpu中。在执行脚本之前需要首先赋予其执行权限,然后为了监测该脚本是否有语法错误,可以执行该脚本测试。如果显示信息正确,则可以将其嵌入到自建的监测CPU的mrtg配置文件mrtg.cfg.cpu中(如图Screenshot18.png所示)。
当然这个时候本机Apache的访问主目录也要更改为/var/www/html/mrtg并重启apache服务。之后运行命令三次以启动mrtg:
# env LANG=C /usr/bin/mrtg /var/www/mrtg/mrtg.cfg.mem [ Enter ]
最后别忘了建立存放页面的目录,进入该目录中,将localhost.html更名为index.html以及类似上面的例子增加一个每五分钟运行一次的计划任务(如图Screenshot19.png所示)。此时在任何一台客户端上通过浏览器访问页面http://192.168.1.100/cpu就可以看到192.168.1.100的CPU使用情况(如图pic18.png所示)。
按照上面的方法,对内存使用情况的监测也基本大同小异:
可以使用sar –r选项来显示内存使用情况。同样将该命令写入到一个脚本/var/www/mrtg/mrtg.mem中去,并给予执行权限。在测试执行正常之后即可将其嵌入到自建的监测内存的mrtg配置文件mrtg.mem.cfg中,执行命令三次
# env LANG=C /usr/bin/mrtg /var/www/mrtg/mrtg.cfg.mem [ Enter ]
并建立存放页面的目录,将localhost.html更改为index.html,以及建立类似上面的计划任务(如图Screenshot20.png–Screenshot21.png所示)。完成之后从任何一台客户端上通过浏览器都可以访问页面http://192.168.1.100/mem来查看该主机的内存使用情况(如图pic19.png所示)。
接着按照上面的例子,来建立磁盘读写情况的监测:
由于原理一致,方法接近。我就不再赘述,只是会将基本的过程和需要的脚本内容给出来:
# cd /var/www/mrtg/ [ Enter ]
建立监测脚本及其内容:
# cat mrtg.disk [ Enter ] #!/bin/bash hd=sda disk=/dev/$hd UPtime=`/usr/bin/uptime |awk '{print $3""$4""$5}'` KBread_sec=`iostat -x $disk|grep $hd |awk '{print $8}'` KBwrite_sec=`iostat -x $disk|grep $hd |awk '{print $9}'` echo $KBread_sec echo $KBwrite_sec echo $UPtime hostname
赋予权限:
chmod 755 mrtg.disk [ Enter ]
测试执行情况:
# ./mrtg.disk [ Enter ] 37.51 0.16 7:25,3users, localhost.localdomain
建立配置文件及显示其内容:
# cat mrtg.cfg.disk [ Enter ] WorkDir: /var/www/html/mrtg/disk Target[disk]: `/var/www/mrtg/mrtg.disk` Title[disk]: Disk HDA I/O Utilization Report #Unscaled[disk]: dwym MaxBytes[disk]: 10240000 PageTop[disk]:Disk I/O Utilization Report
kmg[disk]: KB,MB,GB LegendI[disk]: Disk I/O KBread/sec LegendO[disk]: Disk I/O KBwrite/sec Legend1[disk]: Disk I/O KBread/sec Legend2[disk]: Disk I/O KBwrite/sec YLegend[disk]: Megabytes ShortLegend[disk]: & Options[disk]: growright,gauge,nopercent
建立主页面主目录:
# mkdir /var/www/html/mrtg/disk [ Enter ]
运行mrtg三次:
# env LANG=C /usr/bin/mrtg /var/www/mrtg/mrtg.cfg.disk [ Enter ]
重命名index文件:
# mv /var/www/html/mrtg/disk/disk.html /var/www/html/mrtg/disk/index.html [ Enter ]
建立任务计划:
# crontab -l -u root [ Enter ] */5 * * * * /usr/bin/env LANG=C /usr/bin/mrtg /var/www/mrtg/mrtg.cfg.cpu /dev/null 2>&1 crontab: installing new crontab
重启httpd服务:
# service httpd restart [ Enter ] # chkconfig httpd on [ Enter ]
完成之后从任何一台客户端通过浏览器都可以访问页面http://192.168.1.100/disk来查看该主机的磁盘读写效率情况(如图pic20.png所示)。
到此为止我们基本上对MRTG在各方面的功能已经有了一个比较全面的认识。而且针对其配置和管理方法也有了一个初步的了解。相信会有更多的管理员通过上面的例子能够并更倾向于借助手工定制的方式来灵活发掘和获取MRTG在其他方面更多的功能和特性。
d.更加强大和灵活的系统监测方案:SNMP + Cacti + RRDtool
通过对MRTG这个软件的使用很多用户不难发现。像MRTG这样的软件尽管有系统资源占用少和低成本等方面的优点,其实也存在着一些功能方面的限制:
例如MRTG本身只是通过SNMP协议来监测网络流量的一个工具软件,所以在设计上并没有考虑到提供足够的和SNMP协议结合的功能以实现对服务器其他方面的性能参数进行监测。简单的说,SNMP获得的信息尽管足够全面,但是MRTG默认的配置方式只能对其网络信息作监测,这样对于SNMP协议来说就有点大材小用之嫌。
所以如果要实现对SNMP所获得的更多信息进行统计就必须要像上面那样手动定制脚本并将获取的数据指定到MRTG配置文件上。这实际上只是利用MRTG来做一个信息采集与绘图的软件。这种操作给我个人的感觉似乎有些不伦不类,况且手动定制脚本的方式尽管的确可以拥有一定的灵活性,但这对于一些初级用户来说还是存在一些技术上的困难。更何况如果这样的结构扩展到拥有多个服务器的网络中,就需要在每一个服务器上都要部署同样的架构来实现多台服务器同步监测,显然工作量会比监测一两台服务器大大增加。
另外MRTG的数据库是一种文本式的数据库,一般数据不能重复使用,只能画出两个DS(一条线,一个块)并且缺乏管理功能。
所以能否有一款方案能够完全利用SNMP协议中众多的MIB和OID信息绘制出内容综合全面而且界面美观的系统性能分析图表呢?答案就是现在我们即将介绍的RRDtool和Cacti。
RRDtool其实和MRTG是同一家族, 主要目的都是产生time-series的图文件(如流量,负载,温度……)。不过因为MRTG当初的考虑是画两种资料在图上(或四个值),原作者觉得这样的功能十分不足,所以后来另外又开发了Rrdtool。
RRDtool本身可和MRTG结合,但其结合基本上仅在于将MRTG的文本文件的log转成rrd单元格式,使用rrd存储格式,数据能重复使用。例如可以将一个rrd文件中的数据与另一个rrd文件中的资料相加;可以定义任意时间段画图,即你可以画出一张半年以来的数据的图,也可以画出一张半小时以来的图;能画任意个DS;CDEF也可以任意定制等。所以 RRDtool 变成了几乎最终也是最好的选择。但由于RRDTool的指令非常复杂,对于用户来说显得非常的麻烦,而且RRDtool作为一个强大的绘图引擎缺少MRTG那种数据采集功能。
幸运的是有一套软件Cacti的发展就是基于让RRDtool用户更方便使用该软件,除了基本的SNMP流量跟系统信息监测外,Cacti也可外挂脚本及加上各种模板来作出各式各样的监测图。
Cacti其实是一套php程序,他运用snmpget采集数据,使用RRDtool绘图。使用Cacti能统计网络设备的流量、CPU、系统负载等参数,也可以自定义监测的指标。他的界面非常漂亮,能让你根本无需明白RRDtool的参数能轻易的绘出漂亮的图形。更难能可贵的是,他提供了强大的数据管理和用户管理功能,一张图是属于一个host的,每一个host又可以挂载到一个树状的结构上。
RRDtool与Cacti配合的工作流程如下:
Cacti会通过SNMP定时采集并存储被监测设备的各种数据信息,而这些数据信息会被以rra文件形式存储在Mysql数据库中。如果当用户需要查询这些数据信息的时候会通过Cacti将请求提交给Mysql数据库来查找设备对应的rra文件名,并同时通过RRDtool绘制流量图以及返回给用户。
用户的管理上,作为一个开源软件,他可以做到为指定一个用户能查看的“树”、host、甚至每一张图,还可以与LDAP结合进行用户的验证,可以说,Cacti将RRDtool的所有“缺点”都补足了!
有关于Cacti和RRDtool方面的更多信息可以访问其官方网站:
http://www.cacti.net/
http://oss.oetiker.ch/rrdtool/
下面我们将通过一个实际的例子讲解如何在企业中部署SNMP + Cacti + RRDtool的监测环境。 操作的环境:
监测主机IP地址是192.168.1.200,RHEL5u2系统,这里也称为Server或者网管主机(工作站)
被监测主机IP地址是192.168.1.220,RHEL5u2系统,这里也称为Client
首先在监测主机上安装下面的软件包(如图Screenshot22.png所示):
由于这些都是系统光盘中自带的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
目前这两个软件的版本都是最新版本。
由于目前我无法找到用于RHEL的可直接安装的rpm版本,所以只能下载源码包来手动编译和安装。
首先将这两个软件拷贝到/usr/local目录下,然后分别按照下面的步骤对其进行解压,编译以及安装。
# cd /usr/local/ [ Enter ] # tar -zxf rrdtool-1.2.28.tar.gz [ Enter ] # tar -zxf cacti-0.8.7b.tar.gz [ Enter ] # cd rrdtool-1.2.28 [ Enter ] # ./configure --prefix=/usr/local/rrdtool [ Enter ] # make [ Enter ] # make install [ Enter ]
(如图Screenshot23.png所示)
为了保证编译能够顺利进行,需要预先在系统中安装gcc编译器等开发工具包。
至于cacti,不需要编译,只要将其解压后把整个目录拷贝到/var/www/html目录下并重命名为cacti。
下面我们需要为cacti创建所需的数据库,这也是当时安装mysql-server的原因。
先启动mysql服务,并且指定mysql管理员的账号以及密码,然后以新的用户名和密码重新登录mysql数据库(如图Screenshot24.png所示)。
下面的操作是在mysql的交互界面下进行。首先需要通过T-Sql语句建立cacti数据库,然后为方便管理,需要给root以及cactiadmin用户授予所有管理权限,并且定义cactiadmin用户的密码。完成之后退出交互界面,并且将cacti预先定制的cacti.mysql文件导入到mysql中去(如图Screenshot25.png所示)。
这时再通过交互界面进入到mysql之后就可以看到刚才所导入的预先定制好的cacti相关数据库表了(如图Screenshot26.png所示)。
接着按照刚才导入到数据库中的内容用vi编辑器修改cacti管理接口的配置文件:
# vi /var/www/html/cacti/include/config.php [ Enter ] 修改的内容如下: $database_type = "mysql"; $database_default = "cacti"; $database_hostname = "localhost"; $database_username = "cactiadmin"; $database_password = "123456"; $database_port = "3306";
(如图Screenshot27.png所示)
由于我们需要定制cactiadmin用户通过SNMP定时到被监测设备中获取数据信息,所以要建立cactiadmin用户并以该用户的身份建立一个任务计划。
# useradd cactiadmin [ Enter ] # passwd cactiadmin [ Enter ] # crontab -e -u cactiadmin [ Enter ] # crontab -l -u cactiadmin [ Enter ] */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 [ Enter ]
之后我们需要安装一个叫做cactid的东西,这个所谓的cactid是cacti的数据收集器的守护进程。 安装和配置的方法也很简单。
最新的cactid版本是0.8.6k,可以从该地址获得:
http://mirrors.rootservices.net/cacti/cactid/cacti-cactid-0.8.6k.tar.gz
下载之后将其放到/usr/local目录下:
然后按照下面步骤进行编译安装:
# tar –zxf cacti-cactid-0.8.6k.tar.gz [ Enter ] # cd cacti-cactid-0.8.6k [ Enter ] # ./configure --prefix=/usr/local/cactid [ Enter ] # make [ Enter ] # make install [ Enter ]
为了保证编译成功,还需要下面的几个软件:
mysql-devel libpng libpng-devel zlib zlib-devel freetype freetype-devel
(如图Screenshot28.png所示)
在该软件编译完成之后,在/usr/loca/目录下会自动建立cactid目录,进入该目录修改etc/cactid.conf配置文件,修改之后的结果如下:
DB_Host localhost DB_Database cacti DB_User cactiadmin DB_Pass 123456 DB_Port 3306
(如图Screenshot29.png所示):
并且将该文件复制到/etc目录下。
# cp /usr/local/cactid/etc/cactid.conf /etc/ [ Enter ]
最后配置HTTP服务,只需要将网站服务的主目录指向/var/www/html/cacti目录,然后重启httpd服务即可:
DocumentRoot "/var/www/html/cacti"
完成之后可以在监测主机上开启一个浏览器并且直接访问链接http://192.168.1.200,由于已经将cacti设置为网站的主目录,所以上述的配置一切正常的话可以获得一个cacti的初始安装页面(如图Screenshot30.png所示)。点击“Next”之后开启下一个页面准备安装cacti(如图Screenshot31.png所示)。在出现的页面中如果确认所有信息无误则选择“New Install”并进入下一步。在新出现的Installation guide页面中cacti会自动探测原先安装的一些基本文件的位置。在这里需要确保安装程序能够找到所需要的所有文件和信息,否则后面的步骤会出错。
而最常见的错误则是会出现“RRDtool binary path not found”的情况,解决这个问题需要手动更改一下路径为:/usr/local/rrdtool/bin/rrdtool,并点击“Finish” (如图Screenshot32.png所示)。
在接着出现的新页面中输入用户名和密码。此处默认的用户名和密码都是admin(如图Screenshot33.png所示)。进入之后cacti会强制用户更改密码,为了简化起见,我这里仍然更改为密码为“123456”并保存密码(如图Screenshot34.png所示)。以下见到的就是cacti的主配置页面(如图Screenshot35.png所示)。在当前页面点击console卷标之后点击setting按钮并选取path卷标(如图Screenshot36.png所示),在该页面上需要指定“Cactid Poller File Path”,这里就是cactid程序的绝对路径/usr/local/cactid/bin/cactid,同时确认其他的RRDtool required path的设定是正确的(如图Screenshot37.png所示),保存该配置。
到此为止,整个cacti主页面的全局设置就基本完成,最后开启添加要监测的目标服务器。点击“Console”然后点击“Create”标签下面的“New Graphs”按钮以及在出现的页面上点击“Create New Host(如图Screenshot38.png所示)”进入建立被监测服务器的页面,按照下面的页面来添加被监测系统的信息,其中包括:描述(可随便填写),主机名(IP地址),监测的主机类型(Local Linux Machine),SNMP版本(V1)和与之对应的端口号(161)与团体信息(如图Screenshot39.png所示)。最后点击“Create”。
但是由于我使用的是RHEL 5u8系统上自带的firefox 3浏览器,在这个时候可能会出现一些问题。如图(如图Screenshot40.png所示),提示“由于密码不符,该设备无法建立”,但事前我们并没有设置过任何密码。这其实是在该版本的cacti上的一个bug而已,在RHEL系统上尤其针对比较新的firefox3浏览器,当提交到该页面的时候由于一些缓存方面的影响而导致无法最终完成该步骤。不过解决的方法也很简单。就是使用IE系列浏览器或者版本比较低的firefox浏览器来访问,那么在做到该步骤的时候就可以正常完成配置(如图pic22.png所示)。
在该步骤完成之后可以看到默认的配置将会监测目标主机的内存、负载、登录用户以及CPU方面的信息。而用户完全可以在“Add Graph Template”以及“Add Data Query”处添加更多的监测类型。并选择右边的“Add”,结果就会如图所示(如图pic23.png-pic24.png所示)。最后将配置保存并切换到“Graph”标签下复选需要监测的参数类型,一般着重选择的内容包括CPU,内存,Swap分区,Buffer缓冲区,网络流量,磁盘使用量以及登录用户等(如图pic25.png-pic28.png所示)。完成之后
在“Graph”的“Preview”卷标中即可获得动态的统计图信息(如图pic29.png所示)。由于我选的内容太多,所以在当前页面无法全部显示出所有统计图来,只能一个个项目点击进去。
和MRTG类似,每一个项目的监测统计都有5分钟、30分钟、2小时和1天为计算单位。所以从各种统计图来看,即可获得一个参数当前的信息,又可获得相对长久的信息便于比较(如图pic30.png-pic31.png所示)。
而作为被监测主机,其实需要配置的内容只有两个:第一,修改SNMP配置文件并启动服务,使之与网管主机监测软件所定义的SNMP版本和认证方式一致;第二,确保网络连通性以及确保网管主机能够通过snmpwalk命令获得被监测主机上的全部MIB内容。由于配置方法和上面的例子一样,只要从监测主机上将已经修改过的snmpd.conf配置文件拷贝到/etc/snmpd目录下覆盖原有配置文件,然后启动snmpd服务并关闭防火墙就行了。当然可以分别在监测主机和被监测主机上运行命令来测试:
# snmpwalk –v1 –cpublic 192.168.1.220 [ Enter ]
如果能够获得所有的MIB信息,则证明客户端的配置没有问题,所以这里也不再赘述。
到此为止Cacti + RRDtool的结构就已经配置完成。可见相对于MRTG而言,Cacti + RRDtool的方式有一个更大的好处就是利于用户时刻调整监测的对象。例如,用户需要调整当前的监测内容并新增一些监测项目。那么就可以随时编辑监测设备并修改需要监测的参数,相当方便。同时Cacti + RRDtool提供了在MRTG上不具备的管理功能,以及Cacti的绘图功能相对更强大,图像更加美观。
尽管第一次部署网管主机比较复杂,但是后续对配置对多个设备的集中监测就相对简单多了。可以说也是一劳永逸的解决方案。
这些都是这种结构尽管在配置方面略显复杂,但是越来越受欢迎并在企业中广泛应用的原因。和MRTG一样,Cacti和RRDtool也是一个目前在企业中越来越广泛应用的开源监测方案。而且在网上也有很多这方面的文章介绍不其原理和不同的功能实现方法。