最近一段时间在研究后台服务器测试技术,需要对后台服务器的各项性能指标进行实时监控和统计,也由此让我回想起之前公司曾经接触过的一个服务SNMP,SNMP是一种称之为简单网络管理协议的服务,主要是用于获取系统的流量、I/O、CPU、Memory和Disk等信息,通过自带的统计功能,将信息发送于监控程序上,最后以统计报表的形式展现于管理员,这种方式正是我所要的。于是通过一翻查找,发现了一款免费的开源工具,那就是MRTG,称之为网络监控工具。它可用于windows和linux平台,当然对于这些个开源的支持,linux相应的还是要为windows强,因为只有开源平台才能更好的支持开源项目的发展。对于linux的版本支持,基本上都没有问题,但是对于MRTG在windows上的支持,那可就需要摸索了,目前我试用过的基本有windows server 2003和windows xp,下面我将以xp系统来演示MRTG的安装和配置流程。
首先,来介绍一下MRTG的软件平台支撑需求如下:
1、Perl平台的支持,因为MRTG是Perl语言开发的,所以需要安装ActivePerl,下载地址如:http://downloads.activestate.com/ActivePerl/Windows/,当然了安装过程很简单,基本默认就ok了,安装目录Perl在C盘根目录下。
2、IIS服务,这个并不是必须的,但是为了方面浏览最后生成的报表,因为报表都是Html格式的,为了实时且可以远程访问这个页面,所以需要IIS服务来支持其web页面的浏览。
3、SNMP服务,这个组件是必须的,不管是监控或者是被监控设备都必须要安装该组件,一般在控制面板的“添加删除组件”中找到系统监控选项,然后选择简单网络管理协议组件安装就ok,一般安装需要系统光盘的支持,所以这里就不多介绍了。
4、MRTG,这个工具的下载地址为:http://oss.oetiker.ch/mrtg/download.en.html,这里有linux和windows版本的都有,格式略有不同,请注意这里下载的windows版本的格式为zip格式的。关于版本号的选择,本人在安装过程中遇到了一些问题,稍后在安装过程中给出说明。
其次,开启并设置SNMP服务,在安装好SNMP组件之后,在服务列表中可以找到如下两个服务程序如下图所示:
如上有SNMP Service和SNMP Trap Service这两个服务,其中SNMP Service是主服务,而SNMP Trap Service是一个Trap工具,也就是抓取工具,获取Service的信息。
接下来我们需要配置SNMP,如图所示:
选择SNMP Service,右键选择属性,在属性框中切换到安全对话框,这里如上图所示默认勾选“发送身份验证陷阱”,下面的接受团体名称为public,通常情况这里建议不用系统默认的关键字,至于这个关键字的作用,后面配置MRTG的时候将会说明,重新添加一个团体名称,区别于public就可以,权利可以附加只读和创建两个即可。然后在下面可以看到关于哪些主机的SNMP信息,这里需要根据实际情况来设定,一般请指定特定的主机地址,添加IP地址即可。关于SNMP的服务配置就这些了,因为这里只是介绍MRTG的工具使用,稍后有机会再详解SNMP应用。
第三,配置IIS应用服务器,这里主要是为MRTG建立一个文件夹,用于存放监控数据文件的地方,还有就是配置web页面的浏览。通常在安装完IIS应用之后会在C盘有如此目录c:/Inetpub/wwwroot/,在此目录下新建一个文件夹为mrtg作为mrtg的服务目录,然后在默认网站下新建一个站点,目录指向mrtg,这样就可以通过远程访问到mrtg下的web页面了。
第四,安装和配置MRTG,这里关于安装MRTG的版本问题需要说明,之前我在安装部署mrtg.2.16.2.zip之后,运行perl命令时提示一些错误,这里没有记录,所以需要说明的是,2.16.2版本是有bug的,最后选择了2.17.2版本之后就很顺利完成了,下面将2.17.2的版本直接解压,将解压的文件夹放到C盘根目录下,然后可以在windows下dos命令行下开始配置和执行MRTG,如下所示:
将命令行切换到mrtg的bin目录下,也就是可执行命令模式下。接下来就需要去指定需要监控的主机地址等相关信息,在bin目录执行如下命令:
C:/mrtg-2.17.2/bin/perl cfgmaker [email protected] --global "workdir: c:/Inetput/wwwroot/mrtg" --output "c:/Inetput/wwwroot/mrtg/pc.cfg" 然后直接回车即可,这里要说明的是perl是执行平台脚本,cfgmaker是mrtg的命令,[email protected]中public就是SNMP Service中配置的接受团体名称,这里不建议使用public,@后面是IP地址;workdir是指定工作目录,而output是指定生成配置文件的输出目录,最后生成的配置文件以cfg后缀格式。这样就已经配置好了监控的那台主机的配置服务。
然后,需要生成一个web页面来显示当前监控的信息,命令行如下:
C:/mrtg-2.17.2/bin/perl indexmaker c:/Inetput/wwwroot/mrtg/pc.cfg>c:/Inetput/wwwroot/mrtg/index.html ,执行这个命令后就可以在mrtg目录下看到index.html文件了。
最后运行监控命令如下:
C:/mrtg-2.17.2/bin/perl mrtg --logging=c:/Inetput/wwwroot/mrtg/pc.log c:/Inetput/wwwroot/mrtg/pc.cfg,运行这个命令之后就可以在dos屏幕下看到有数据信息在滚动,说明SNMP已经在发送和接受信息了,这个时候可以在本地浏览器或者远程流程上访问当前的IIS服务,访问index.html页面,查看流量信息,默认是5分钟发送一次信息,如下图所示:
通常情况下监控一台主机只显示一个曲线报表,但是由于监控的主机上运行有一个虚拟机,而且本次应用就是通过虚拟机来演示的,所以对应有虚拟出来的本地连接也会被默认监控到,如果想去掉也可以,只需要在生成的cfg配置文件就更改就ok了,点击上面的单个图表可以进去详细的分析页面,分别有每日、每周、每月和每年的统计信息,直到这个监控服务被关闭为止,将清楚所有的流量统计信息。关于mrtg的更多应用,将在后续中继续发布。