1、为了说明结果,我找了一个运行于Windows的操作系统上的利用snmp协议的监测软件来看看效果。在Windows平台上能够实现该功能的软件有很多,例如Whatsup,Solawins等等。这里以Whatsup为例,我的监测主机上操作系统选用的是Windows Server 2003 Enterprise Edition。IP地址是192.168.1.100。按照图示的步骤安装Whatsup软件,其实秉承Windows软件的安装风格一路回车即可搞定。由于我安装的是一个30天的免费试用版本,所以需要在启动产品的时候选择“Activate Later”,并且在“Device Discovery Me
2、thod”中选择“IP Range Scan”。之后起始地址都填入被监测设备的地址192.168.1.10,按照在/etc/snmp/snmpd.conf档中的内容输入团体名称“public”按照下图确定扫描内容并开始扫描,扫描时间需要根据设备的数量决定。在“Action Policy Selection”中选择“Do Not Apply an Action Policy”并结束扫描。最后通过“Report View”标签选择“Device Reports”并最终获得所有设备的Health状况。在众多的性能监测软件中Whatsup的功能相对比较强大,而且设置方便,接口友好。在很多企业的服务监测
3、中是一个不错的选择,而且Whatsup的其它视图模式和功能也比较多。至于其它的例如Solawins等类似的软件,在配置方面的步骤基本大同小异,所以这里就不花时间详述了。然后配置v3版本的SNMP协议:与v1版本的SNMP协议不一样,v3版本最重要的特征是更强的安全性,因为团体信息在网络上是以明文形式传送。因此v3版本不再使用团体信息来实现认证,而是采用对称或者非对称加密方式加密用户名和密码实现认证。所以安全方面自然要比v1版本的高很多,不过在配置方面也显然会比v1版本的更加麻烦。所幸的是net-snmp-utils工具包为我们准备了另外一个强有力的SNMP配置工具net-snmp-config
4、,因此一般用户仍然可以通过他非常方便地实现v3版本的SNMP配置。我们先切换到光盘,由于net-snmp-config工具由net-snmp-devel包提供,所以在安装一系列依赖包包括beecrypt,elfutils-devel,elfutils-devel-static后,最后还是要安装net-snmp-devel包。之后将snmpd服务停止并备份其主配置文件,然后运行命令:# net-snmp-config -create-snmpv3-user -A 12345678 -X 12345678 -a MD5 -x DES admin关于这条命令的说明:-create-snmpv3-us
5、er -A authpass -X privpass -a MD5|SHA -x DES|AES username命令执行之后将自动建立新的配置文件snmpd.conf,而内容也十分简单。只有用户名和权限,而关于认证方式的信息则会存储在/var/net-snmp/snmpd.conf文件中。最后重启snmpd服务,并再次用snmpwalk指明通过v3的认证方式获取MIB上的OID信息。命令是:# snmpwalk -v3 -u admin -l auth -a MD5 -x DES -A 12345678 -X 12345678 192.168.1.10如果要验证配置的信息是否OK,还是可以通
6、过Windows下的Whatsup来监测信息,步骤基本上和上例一样,只不过更改一下SNMP版本并填入相应的认证信息即可。b.snmp + mrtg实现对网络负载的监测:上述的操作方法是利用了一些闭源的商业软件在Windows下进行性能监测,对于一些经费充足的企业,这种方案不乏考虑的价值。不过在了解了snmp协议的基本工作原理和配置方法之后,我们来看一下利用snmp在Linux操作系统上进行监测的解决方案。提到在Linux上的开源方案,不得不提及一个老牌的网络流量监测工具mrtg。Mrtg(Multi Router Traffic Grapher,MRTG)是一个完全免费的监测网络链路流量负载的
7、工具软件, 它通过snmp协议从设备得到流量信息,并将流量负载以包含PNG格式图形的HTML 文文件以Web页面显示给用户。Mrtg能够以非常直观的形式显示流量负载,而且在工作过程中所占用的系统资源很低。下面我们将演示如何通过mrtg来获得以snmp协议所监测到的网络流量方面的信息,为了更好地说明在企业环境中的应用,我们会通过一台运行MRTG的网管工作站同时获取两台被监测服务器的网络流量信息来仿真企业对多台服务器的网络流量监测方式。基本结构如下:网管工作站:RHEL5u2 192.168.1.10被监测主机1:RHEL5u2 192.168.1.100被监测主机2:RHEL5u2 192.16
8、8.1.200首先在被监测主机192.168.1.100和192.168.1.200上分别配置并开启snmpd服务(过程同上例)。为了简化配置我只使用上面的v1版本的SNMP配置方法。同时需要在开启服务之后关闭防火墙以及保证主机之间的连通性。之后在网管工作站上安装并且配置mrtg。由于在RHEL5u2中mrtg是系统自带的软件包,所以可直接使用rpm安装。# rpm -ihv mrtg-2.14.5-2.i386.rpm安装完成之后需要运行命令cfgmaker针对两台被监测主机各自生成mrtg的配置文件,在该例子中配置文件分别是test1.cfg和test2.cfg,存放在/etc/mrtg目
9、录中。#cfgmaker -global WorkDir: /var/www/html/mrtg -global Options_: growright,bits -ifref=ip -output /etc/mrtg/test1.cfg public192.168.1.100 -output /etc/mrtg/test2.cfg public192.168.1.200上述的命令定义了生成配置文件test1.cfg和test2.cfg的全局参数,包括配置文件的主目录,页面存放的主目录,snmp团体信息和建立绘图时指定绘图方式的一些必须参数,如绘制向右方增长的统计图和统计图的计量单位等。之后执
10、行下面的命令将两个配置文件的内容合并到主配置文件/etc/mrtg/mrtg.cfg里面。# cat test1.cfg mrtg.cfg# cat test2.cfg 并根据配置文件的需求在/var/www/html目录下建立mrtg页面的主目录:# mkdir /var/www/html/mrtg以及针对mrtg.cfg配置文件运行命令来启动mrtg,注意,在默认的UTF-8语言字符集下这个启动命令无法执行成功,因此需要设置语言环境变量为env=C:rootlocalhost mrtg# env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg该命令需要执行三
11、次以建立正确的mrtg数据库文件。最后要做的工作是按照配置文件内容在mrtg页面的主目录下生成正确的index檔,命令如下:# indexmaker -output /var/www/html/mrtg/index.html -title=MRTG /etc/mrtg/mrtg.cfg同时也要按照mrtg.cfg的配置修改和启动apache并最终为mrtg能够定期进行数据采集建立一个每五分钟执行一次的任务计划:# cat /etc/httpd/conf/httpd.conf | grep DocumentRootDocumentRoot /var/www/html/mrtg# service
12、httpd start# chkconfig httpd on# crontab -l*/5 * * * * /usr/bin/env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg /dev/null 2&1在启动apache之后,即可以在网管工作站或者是任何可以访问到192.168.1.10的主机上以http:/192.168.1.10的方式打开MRTG的页面。可以很直观地看到两台主机的流量页面以及详细信息。c.SYSSTAT + mrtg实现对服务器各种性能参数的监测:一些读者可能会有这样的疑虑:既然我们已经能够通过snmp + mrtg得到网络流量的监测
13、情况,那么如果要实时监测服务器的其它系统参数应该怎么办?这个问题的答案比较遗憾:由于MRTG是一个专门针对网络流量进行监测和绘图的工具,所以默认情况下不提供对系统其它方面信息监测的功能。因此尽管SNMP协议本身可以获得和显示被监测主机上的大量信息但是鉴于MRTG方面的限制而无法显示和显示出来。但是好在天无绝人之路,MRTG本身实际上也是一个强大的数据采集和绘图引擎。于是我们可以利用一些SNMP以外的系统监测工具来实时获取服务器性能信息,包括CPU,内存,磁盘空间使用率以及I/O性能方面的内容,然后交给MRTG来获得我们所需要的其它类型的统计图信息。在清楚了MRTG原理之后,这样做实际上会拥有更
14、大的灵活性。但是由于涉及的内容需要一定脚本编程的知识,所以对一些高级用户是比较适用的。下面我们就举例说明如何将MRTG和SYSSTAT所提供的一系列如sar,iostat以及free等性能监测命令等进行结合来获得系统其它方面的统计信息的配置方法。由于这次网管工作站已经不可能再通过SNMP获取信息,所以我们将环境更改一下,在被监测主机直接安装和配置MRTG,并且结合sysstat一类的系统工具来绘制本机的信息图:此时假设被监测主机的操作系统是:RHEL5u2,IP地址是192.168.1.100Sysstat是在RHEL5u2中自带的一个综合性能监测工具包。其中包括了sar(主要用于cpu,内存
15、方面的信息统计)和iostat(存储设备I/O统计工具)。由于sysstat是系统本身自带的包,所以在两台被监测的主机上分别挂载光盘安装sysstat即可。当然除了sysstat还有一些其它的系统性能显示方面的工具可以使用,我们会分别举例。# rpm -ihv sysstat-7.0.2-1.el5.i386.rpm同时还要分别在被监测的主机上安装mrtg。在正式开始之前,需要花一点时间来介绍一下sar和iostat的基本功能:sar是一个强大的系统监测工具,默认只显示CPU的使用情况,而通过加上不同的参数sar可以显示大量的内存以及I/O使用方面的状况和信息;而iostat主要显示I/O使用
16、方面的信息。如果执行sar不加任何参数通常会显示下面这些信息:其中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 每秒写入
17、到设备商的block数量另外sar可以通过增加时间参数来指定执行的频率以及输出的内容量,例如命令是sar u 5,则表示每5分钟显示一次CPU的使用情况。这样就利于我们将该命令写入到一个脚本/var/www/mrtg/mrtg.cpu中。在执行之前需要首先赋予其执行权限,然后为了监测该脚本是否有语法错误,可以执行该脚本测试。如果显示信息正确,则可以将其嵌入到自建的监测CPU的mrtg配置文件mrtg.cfg.cpu中。当然这个时候本机Apache的访问主目录也要更改为/var/www/html/mrtg并重启apache服务。之后运行命令三次以启动mrtg:# env LANG=C /usr/
18、bin/mrtg /var/www/mrtg/mrtg.cfg.mem最后别忘了建立存放页面的目录,进入该目录中,将localhost.html更名为index.html以及类似上面的例子增加一个每五分钟运行一次的计划任务。此时在任何一台工作站上通过浏览器访问页面http:/192.168.1.100/cpu就可以看到192.168.1.100的CPU使用情况。按照上面的方法,对内存使用情况的监测也大同小异:可以使用sar r选项来显示内存使用情况。同样将该命令写入到一个脚本/var/www/mrtg/mrtg.mem中去,并给予执行权限。在测试执行正常之后即可将其嵌入到自建的监测内存的mrt
19、g配置文件mrtg.mem.cfg中,执行命令# env LANG=C /usr/bin/mrtg /var/www/mrtg/mrtg.cfg.mem三次,并建立存放页面的目录,将localhost.html更改为index.html,并建立类似上面的计划任务。完成之后从任何一台工作站通过浏览器都可以访问页面http:/192.168.1.100/mem来查看该主机的内存使用情况。接着按照上面的例子,来建立磁盘读写情况的监测:由于原理一致,方法接近。我就不再赘述,只是会将基本的过程和需要的脚本内容给出来:# cd /var/www/mrtg/建立监测脚本及其内容:# vi mrtg.disk
20、# cat mrtg.disk#!/bin/bashhd=sdadisk=/dev/$hdUPtime=/usr/bin/uptime |awk print $3$4$5KBread_sec=iostat -x $disk|grep $hd |awk print $8KBwrite_sec=iostat -x $disk|grep $hd |awk print $9echo $KBread_sececho $KBwrite_sececho $UPtimehostname赋予权限:# chmod 755 mrtg.disk测试执行情况:# ./mrtg.disk 37.510.167:25,3u
21、sers,localhost.localdomain建立配置文件及显示其内容:# vi mrtg.cfg.disk# cat mrtg.cfg.disk /var/www/html/mrtg/diskTargetdisk: /var/www/mrtg/mrtg.diskTitledisk: Disk HDA I/O Utilization Report#Unscaleddisk: dwymMaxBytesdisk: 10240000PageTopdisk: Disk I/O Utilization Reportkmgdisk: KB,MB,GBLegendIdisk: Disk I/O KBr
22、ead/secLegendOdisk: Disk I/O KBwrite/secLegend1disk:Legend2disk:YLegenddisk: MegabytesShortLegenddisk: &Optionsdisk: growright,gauge,nopercent建立主页面主目录:rootlocalhost mrtg# mkdir /var/www/html/mrtg/disk运行mrtg:rootlocalhost mrtg# env LANG=C /usr/bin/mrtg /var/www/mrtg/mrtg.cfg.disk 重命名index檔:rootlocalh
23、ost mrtg# mv /var/www/html/mrtg/disk/disk.html /var/www/html/mrtg/disk/index.html建立任务计划:rootlocalhost mrtg# crontab -l -u root*/5 * * * * /usr/bin/env LANG=C /usr/bin/mrtg /var/www/mrtg/mrtg.cfg.cpu /dev/null 2crontab: installing new crontab重启httpd服务:rootlocalhost mrtg# service httpd restartrootloca
24、lhost mrtg# chkconfig httpd on完成之后从任何一台工作站通过浏览器都可以访问页面http:/192.168.1.100/disk来查看该主机的磁盘读写效率情况。到此为止我们基本上对mrtg在各方面的功能已经有了一个比较全面的认识。而且针对其配置和管理方法也有了一个初步的了解。相信在企业中会有更多的朋友能够藉助手工定制的方式来灵活发掘和获取mrtg在其它方面更多的功能和特性。d.更加强大和灵活的性能监测方案:SNMP + Cacti + RRDtool通过对MRTG这个软件的使用很多用户不难发现。像MRTG这样的软件尽管有系统资源占用少和低成本等方面的优点,其实也存在
25、着一些功能方面的限制:例如MRTG本身只是通过SNMP协议来监测网络流量的一个工具软件,所以在设计上并没有考虑到提供足够的和SNMP协议结合的功能以实现对服务器其它方面的性能参数进行监测。简单的说,SNMP获得的信息尽管足够全面,但是MRTG默认的配置方式只能对其网络信息作监控,这样对于SNMP协议来说就有点大材小用之嫌。所以如果要实现对SNMP所获得的更多信息进行统计就必须要像上面那样手动定制脚本并将获取的数据指定到MRTG配置文件上。这实际上只是利用MRTG来做一个信息采集与绘图的软件。这种操作给我个人的感觉似乎有些不伦不类,况且手动定制脚本尽管的确可以拥有一定的灵活性,但这对于一些初级用户来说还是存在一些技术上的困难。另外如果这样的结构扩展到拥有多个服务器的网络中,就需要在每一个服务器上都要部署同样的架构来实现多台服务器同步监测,显然工作量就显得比较大了。另外mrtg的数据库是一种文本式的数据库,一般数据不能重复使用,只能画出两个DS(一条线,一个块)并且缺乏管理功能。能否有一款方案能够完全利用SNMP协议中众多的MIB和OID信息绘制出内容综合全面而且接口美观的系统性能分析图表呢?答案就是现在即将出场的RRDtool和Cacti。RRDtool其实和mrtg是同一家族, 主要目的都是产生time
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1