各种性能监测在企业中部署和实现.docx
- 文档编号:3410208
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:28
- 大小:39.36KB
各种性能监测在企业中部署和实现.docx
《各种性能监测在企业中部署和实现.docx》由会员分享,可在线阅读,更多相关《各种性能监测在企业中部署和实现.docx(28页珍藏版)》请在冰豆网上搜索。
各种性能监测在企业中部署和实现
各种性能监测在企业中部署和实现方法
2010年03月05日IT168网站原创作者:
开源时代编辑:
覃里评论:
0条
本文Tag:
IT业界产品部署开源项目实施开源
【IT168文档】a.snmp协议的配置以及在Linux下和Windows上的测试方法:
刚才我们已经用了不少的篇幅介绍了SNMP简单网络管理协议的基本原理。
现在我们即将以RedHat最新的企业版本RedHatEnterpriseLinux5Update2(简称RHEL5u2)为基础来演示如何配置SNMP服务。
在RHEL5u2中提供了一个叫做net-snmp的rpm包,net-snmp是在IPv4和IPv6上执行SNMP的v1,v2和v3版本协议的一组程序。
需要特意说明一下的是,由于在大多数环境下针对企业应用都会使用稳定版本的RedHatEnterpriseLinux操作系统,所以后面所有操作所使用的Linux平台也都是RHEL,但是那些对技术体验感兴趣的用户也可以使用Fedora8或者9来实现上述所有的操作。
在该例子中,假设服务器192.168.1.10是被监测的系统,我们将在其上分别配置和启用基于v1和v3版本的snmp服务,而另外一台主机192.168.1.100充当管理工作站,并且用snmp命令来获得被监测系统的详细信息。
在服务器192.168.1.10上,首先配置v1版本的SNMP协议:
挂载DVD安装光盘,并从光盘中安装snmp相关的软件包:
lm_sensor,net-snmp,snmp-utils。
关于net-snmp包的作用刚才已介绍,而至于net-snmp-utils主要提供了使用snmp协议管理网络的一系列工具。
装完所需要的软件包之后,我们可以直接修改snmp的主配置文件/etc/snmp/snmpd.conf并重启服务来直接启用SNMPv1。
采用SNMPv1版本的重要标志之一就是使网络管理设备访问代理时需要使用基于Community的团体的验证方式。
这里的Community使用默认的public,当然也可以根据自己的需求去修改为任意一个字符串。
完成之后保存该档并运行命令重启服务:
#servicesnmpdstart
#chkconfigsnmpdon
为了监测是否能够正确获得整个系统中每个MIB的OID值,可以运行snmpwalk命令以获得响应的结果,snmpwalk命令可通过snmp的GETNEXT动作获得MIB树上的管理信息。
#snmpwalk–v1–cpublic192.168.1.10
至此为止,被监测对象上的snmp就算配置完成。
为了说明结果,我找了一个运行于Windows的操作系统上的利用snmp协议的监测软件来看看效果。
在Windows平台上能够实现该功能的软件有很多,例如Whatsup,Solawins等等。
这里以Whatsup为例,我的监测主机上操作系统选用的是WindowsServer2003EnterpriseEdition。
IP地址是192.168.1.100。
按照图示的步骤安装Whatsup软件,其实秉承Windows软件的安装风格——一路回车即可搞定。
由于我安装的是一个30天的免费试用版本,所以需要在启动产品的时候选择“ActivateLater”,并且在“DeviceDiscoveryMethod”中选择“IPRangeScan”。
之后起始地址都填入被监测设备的地址192.168.1.10,按照在/etc/snmp/snmpd.conf档中的内容输入团体名称“public”按照下图确定扫描内容并开始扫描,扫描时间需要根据设备的数量决定。
在“ActionPolicySelection”中选择“DoNotApplyanActionPolicy”并结束扫描。
最后通过“ReportView”标签选择“DeviceReports”并最终获得所有设备的Health状况。
在众多的性能监测软件中Whatsup的功能相对比较强大,而且设置方便,接口友好。
在很多企业的服务监测中是一个不错的选择,而且Whatsup的其它视图模式和功能也比较多。
至于其它的例如Solawins等类似的软件,在配置方面的步骤基本大同小异,所以这里就不花时间详述了。
然后配置v3版本的SNMP协议:
与v1版本的SNMP协议不一样,v3版本最重要的特征是更强的安全性,因为团体信息在网络上是以明文形式传送。
因此v3版本不再使用团体信息来实现认证,而是采用对称或者非对称加密方式加密用户名和密码实现认证。
所以安全方面自然要比v1版本的高很多,不过在配置方面也显然会比v1版本的更加麻烦。
所幸的是net-snmp-utils工具包为我们准备了另外一个强有力的SNMP配置工具——net-snmp-config,因此一般用户仍然可以通过他非常方便地实现v3版本的SNMP配置。
我们先切换到光盘,由于net-snmp-config工具由net-snmp-devel包提供,所以在安装一系列依赖包包括beecrypt,elfutils-devel,elfutils-devel-static后,最后还是要安装net-snmp-devel包。
之后将snmpd服务停止并备份其主配置文件,然后运行命令:
#net-snmp-config--create-snmpv3-user-A12345678-X12345678-aMD5-xDESadmin
关于这条命令的说明:
--create-snmpv3-user[-Aauthpass][-Xprivpass][-aMD5|SHA][-xDES|AES][username]
命令执行之后将自动建立新的配置文件snmpd.conf,而内容也十分简单。
只有用户名和权限,而关于认证方式的信息则会存储在/var/net-snmp/snmpd.conf文件中。
最后重启snmpd服务,并再次用snmpwalk指明通过v3的认证方式获取MIB上的OID信息。
命令是:
#snmpwalk-v3-uadmin-lauth-aMD5-xDES-A12345678-X12345678192.168.1.10
如果要验证配置的信息是否OK,还是可以通过Windows下的Whatsup来监测信息,步骤基本上和上例一样,只不过更改一下SNMP版本并填入相应的认证信息即可。
b.snmp+mrtg实现对网络负载的监测:
上述的操作方法是利用了一些闭源的商业软件在Windows下进行性能监测,对于一些经费充足的企业,这种方案不乏考虑的价值。
不过在了解了snmp协议的基本工作原理和配置方法之后,我们来看一下利用snmp在Linux操作系统上进行监测的解决方案。
提到在Linux上的开源方案,不得不提及一个老牌的网络流量监测工具mrtg。
Mrtg(MultiRouterTrafficGrapher,MRTG)是一个完全免费的监测网络链路流量负载的工具软件,它通过snmp协议从设备得到流量信息,并将流量负载以包含PNG格式图形的HTML文文件以Web页面显示给用户。
Mrtg能够以非常直观的形式显示流量负载,而且在工作过程中所占用的系统资源很低。
下面我们将演示如何通过mrtg来获得以snmp协议所监测到的网络流量方面的信息,为了更好地说明在企业环境中的应用,我们会通过一台运行MRTG的网管工作站同时获取两台被监测服务器的网络流量信息来仿真企业对多台服务器的网络流量监测方式。
基本结构如下:
网管工作站:
RHEL5u2192.168.1.10
被监测主机1:
RHEL5u2192.168.1.100
被监测主机2:
RHEL5u2192.168.1.200
首先在被监测主机192.168.1.100和192.168.1.200上分别配置并开启snmpd服务(过程同上例)。
为了简化配置我只使用上面的v1版本的SNMP配置方法。
同时需要在开启服务之后关闭防火墙以及保证主机之间的连通性。
之后在网管工作站上安装并且配置mrtg。
由于在RHEL5u2中mrtg是系统自带的软件包,所以可直接使用rpm安装。
#rpm-ihvmrtg-2.14.5-2.i386.rpm
安装完成之后需要运行命令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\
>public@192.168.1.100
#cfgmaker--global"WorkDir:
/var/www/html/mrtg"\
>--global"Options[_]:
growright,bits"\
>--ifref=ip\
>--output/etc/mrtg/test2.cfg\
>public@192.168.1.200
上述的命令定义了生成配置文件test1.cfg和test2.cfg的全局参数,包括配置文件的主目录,页面存放的主目录,snmp团体信息和建立绘图时指定绘图方式的一些必须参数,如绘制向右方增长的统计图和统计图的计量单位等。
之后执行下面的命令将两个配置文件的内容合并到主配置文件/etc/mrtg/mrtg.cfg里面。
#cattest1.cfg>>mrtg.cfg
#cattest2.cfg>>mrtg.cfg
并根据配置文件的需求在/var/www/html目录下建立mrtg页面的主目录:
#mkdir/var/www/html/mrtg
以及针对mrtg.cfg配置文件运行命令来启动mrtg,注意,在默认的UTF-8语言字符集下这个启动命令无法执行成功,因此需要设置语言环境变量为env=C:
[root@localhostmrtg]#envLANG=C/usr/bin/mrtg/etc/mrtg/mrtg.cfg
该命令需要执行三次以建立正确的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|grepDocumentRoot
DocumentRoot"/var/www/html/mrtg"
#servicehttpdstart
#chkconfighttpdon
#crontab-l
*/5****/usr/bin/envLANG=C/usr/bin/mrtg/etc/mrtg/mrtg.cfg/dev/null2>&1
在启动apache之后,即可以在网管工作站或者是任何可以访问到192.168.1.10的主机上以http:
//192.168.1.10的方式打开MRTG的页面。
可以很直观地看到两台主机的流量页面以及详细信息。
c.SYSSTAT+mrtg实现对服务器各种性能参数的监测:
一些读者可能会有这样的疑虑:
既然我们已经能够通过snmp+mrtg得到网络流量的监测情况,那么如果要实时监测服务器的其它系统参数应该怎么办?
这个问题的答案比较遗憾:
由于MRTG是一个专门针对网络流量进行监测和绘图的工具,所以默认情况下不提供对系统其它方面信息监测的功能。
因此尽管SNMP协议本身可以获得和显示被监测主机上的大量信息但是鉴于MRTG方面的限制而无法显示和显示出来。
但是好在天无绝人之路,MRTG本身实际上也是一个强大的数据采集和绘图引擎。
于是我们可以利用一些SNMP以外的系统监测工具来实时获取服务器性能信息,包括CPU,内存,磁盘空间使用率以及I/O性能方面的内容,然后交给MRTG来获得我们所需要的其它类型的统计图信息。
在清楚了MRTG原理之后,这样做实际上会拥有更大的灵活性。
但是由于涉及的内容需要一定脚本编程的知识,所以对一些高级用户是比较适用的。
下面我们就举例说明如何将MRTG和SYSSTAT所提供的一系列如sar,iostat以及free等性能监测命令等进行结合来获得系统其它方面的统计信息的配置方法。
由于这次网管工作站已经不可能再通过SNMP获取信息,所以我们将环境更改一下,在被监测主机直接安装和配置MRTG,并且结合sysstat一类的系统工具来绘制本机的信息图:
此时假设被监测主机的操作系统是:
RHEL5u2,IP地址是192.168.1.100
Sysstat是在RHEL5u2中自带的一个综合性能监测工具包。
其中包括了sar(主要用于cpu,内存方面的信息统计)和iostat(存储设备I/O统计工具)。
由于sysstat是系统本身自带的包,所以在两台被监测的主机上分别挂载光盘安装sysstat即可。
当然除了sysstat还有一些其它的系统性能显示方面的工具可以使用,我们会分别举例。
#rpm-ihvsysstat-7.0.2-1.el5.i386.rpm
同时还要分别在被监测的主机上安装mrtg。
#rpm-ihvmrtg-2.14.5-2.i386.rpm
在正式开始之前,需要花一点时间来介绍一下sar和iostat的基本功能:
sar是一个强大的系统监测工具,默认只显示CPU的使用情况,而通过加上不同的参数sar可以显示大量的内存以及I/O使用方面的状况和信息;而iostat主要显示I/O使用方面的信息。
如果执行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 ?
每秒写入到设备商的block数量
另外sar可以通过增加时间参数来指定执行的频率以及输出的内容量,例如命令是sar–u5,则表示每5分钟显示一次CPU的使用情况。
这样就利于我们将该命令写入到一个脚本/var/www/mrtg/mrtg.cpu中。
在执行之前需要首先赋予其执行权限,然后为了监测该脚本是否有语法错误,可以执行该脚本测试。
如果显示信息正确,则可以将其嵌入到自建的监测CPU的mrtg配置文件mrtg.cfg.cpu中。
当然这个时候本机Apache的访问主目录也要更改为/var/www/html/mrtg并重启apache服务。
之后运行命令三次以启动mrtg:
#envLANG=C/usr/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中去,并给予执行权限。
在测试执行正常之后即可将其嵌入到自建的监测内存的mrtg配置文件mrtg.mem.cfg中,执行命令#envLANG=C/usr/bin/mrtg/var/www/mrtg/mrtg.cfg.mem三次,并建立存放页面的目录,将localhost.html更改为index.html,并建立类似上面的计划任务。
完成之后从任何一台工作站通过浏览器都可以访问页面http:
//192.168.1.100/mem来查看该主机的内存使用情况。
接着按照上面的例子,来建立磁盘读写情况的监测:
由于原理一致,方法接近。
我就不再赘述,只是会将基本的过程和需要的脚本内容给出来:
#cd/var/www/mrtg/
建立监测脚本及其内容:
#vimrtg.disk
#catmrtg.disk
#!
/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
赋予权限:
#chmod755mrtg.disk
测试执行情况:
#./mrtg.disk
37.51
0.16
7:
25,3users,
localhost.localdomain
建立配置文件及显示其内容:
#vimrtg.cfg.disk
#catmrtg.cfg.disk
WorkDir:
/var/www/html/mrtg/disk
Target[disk]:
`/var/www/mrtg/mrtg.disk`
Title[disk]:
DiskHDAI/OUtilizationReport
#Unscaled[disk]:
dwym
MaxBytes[disk]:
10240000
PageTop[disk]:
DiskI/OUtilizationReport
kmg[disk]:
KB,MB,GB
LegendI[disk]:
DiskI/OKBread/sec
LegendO[disk]:
DiskI/OKBwrite/sec
Legend1[disk]:
DiskI/OKBread/sec
Legend2[disk]:
DiskI/OKBwrite/sec
YLegend[disk]:
Megabytes
ShortLegend[disk]:
&
Options[disk]:
growright,gauge,nopercent
建立主页面主目录:
[root@localhostmrtg]#mkdir/var/www/html/mrtg/disk
运行mrtg:
[root@localhostmrtg]#envLANG=C/usr/bin/mrtg/var/www/mrtg/mrtg.cfg.disk
[root@localhostmrtg]#envLANG=C/usr/bin/mrtg/var/www/mrtg/mrtg.cfg.disk
[root@localhostmrtg]#envLANG=C/usr/bin/mrtg/var/www/mrtg/mrtg.cfg.disk
重命名index檔:
[root@localhostmrtg]#mv/var/www/html/mrtg/disk/disk.html/var/www/html/mrtg/disk/index.html
建立任务计划:
[root@localhostmrtg]#crontab-l-uroot
*/5****/usr/bin/envLANG=C/usr/bin/mrtg/var/www/mrtg/mrtg.cfg.cpu/dev/null2>&1
crontab:
installingnewcrontab
重启httpd服务:
[root@localhostmrtg]#servicehttpdrestart
[root@localhostmrtg]#chkconfighttpdon
完成之后从任何一台工作站通过浏览器都可以访问页面http:
//192.168.1.100/disk来查看该主机的磁盘读写效率情况。
到此为止我们基本上对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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 各种 性能 监测 企业 部署 实现