4.2.4 监控关键性能指标

当然,Web服务器并不总是问题的原因所在。我曾遇到过很多虚拟用户等待Web服务器响应超时的情况,不料最后发现问题的真正原因在于一个长时间执行的数据库查询没有给应用程序返回结果或Web服务器返回结果过大而造成了超时。这说明了对应用程序中所有的服务层设置KPI监控的重要性。

依据您的应用技术和性能测试解决方案的能力,您可以使用多种机制去监控服务器和网络性能。下述章节我们把监控工具进行分类,并描述每一类监控工具最通用的技术。

1.远程监控

这些技术为远程系统提供服务器性能监控数据(还有其他指标)。也就是说,被测的服务器通过网络传输数据到运行监控软件的性能测试工具。

使用远程监控的最大优点就是不需要在被监控服务器上安装任何软件就可以获取监控数据,这样就回避了内部安全策略设定了禁止安装非“标准配置”软件的问题。远程监控技术还使得在一个地方同时监控多台服务器成为可能。

远程监控技术的存在就意味着需要正确的配置和应用每一个数据监控解决方案。同时你还需要提供一个有足够权限访问被监控系统的账号。你还应该注意到一些其他远程监控方式,特别是SNMP或者任何使用Remote Procedure Call(RPC)的监控,这些(SNMP或RPC)可能被站点的安全策略所禁止,因为这些技术可能是对监控系统存在安全隐患。

常用的远程监控技术有如下几种。

Windows注册表

Windows注册表提供的信息本质上和微软的性能计数器(Perfmon)相同。大多数的性能测试工具都提供这种能力。这是Windows操作系统提供的标准KPI性能信息,并且在Windows 2000部署之后被普遍使用。

基于Web的企业管理系统

基于Web的企业管理(WBEM)是一套系统管理技术,该技术用于统一管理分布式计算机环境。WBEM基于Internet标准和分布式任务管理组织(DMTF)开放标准,具体包括:公共信息模型(CIM)基础和纲要、CIM-XML、CIM operations over HTTP和WS-Management。虽然WBEM的名字让人联想它是基于Web服务的,其实WBEM本身不依赖于任何特定的用户接口。

微软已经在他们的Windows管理规范(WMI)上执行了WBEM。微软的使用导致了随后大部分主要的UNIX厂商的跟进,例如Sun和惠普。WBEM与性能测试有关,由于Windows操作系统上的Windows注册表已经为性能测试监控提供了足够的系统信息。因此它主要应用于非Windows操作系统上的监控。许多性能测试工具都支持微软的WMI,不过你还得针对特定的应用程序手工创建WMI计数器,而且每种工具在对WMI的支持上都有一些限制。

简单网络管理协议

“简单网络监控协议(SNMP)”在这里确实用词不当,我并不认为关于使用SNMP的任何事情都是简单的。不管怎样SNMP标准许多年来在这一方面一直处于领先地位,SNMP能够提供几乎所有网络设备和服务器设备的信息。SNMP依赖于MIB(Management Information Base)文件,MIB文件中包含了对象标示符(OID)列表,OID中决定了哪些信息可以远程访问。出于性能测试的目的,可以把OID也看作Perfmon中的一个计数器。然而OID更加抽象,它可以提供例如网络交换机的风扇速度等信息。它同样有一个基于“共享”概念的安全层,用于控制访问信息的权限。所以,你需要确保你能够连接到适当的共享标识,否则你将获取不到任何信息。许多性能工具厂商都提供了SNMP监控。

JMX技术

JMX(Java Monitoring Interface)是一种Java技术,通过支持该种技术的工具我们就可以对应用程序进行管理和监控,应用这种技术可以监控系统对象、设备(如打印机)和面向服务的网络。这些资源通过调用MBeans(Managed Beans)来获取。JMX对于监控像IBM WebSphere、Oracle WebLogic,以及JBOSS之类的Java应用服务是非常有用的。JMX仅支持特定的版本,所以需要检查你的性能测试解决方案所支持的版本。

Rstatd

这是一个传统的基于RPC的工具,且该工具已经在UNIX操作系统上应用了很长时间。该工具能够提供内核级别的性能监控数据。这些信息通常可以通过远程监控的方式进行提供,在这个过程中要使用与SNMP服务相同的安全检查机制,因为它的通信应用的是RPC服务。

2.安装agent

可能由于防火墙或者安全策略的限制,有时候无法通过远程监控来获取监控数据,因而您的性能测试解决方案应提供一个agent组件,该组件需要直接安装在被监控的机器上。这仍可能与内部安全策略和请求变化冲突,造成延迟或者阻止代理软件安装。但是当远程监控方式不可以使用的时候,并且你的性能测试解决方案也提供代理监控功能的话,这将是一种非常有用的替代方案。