桌面壁纸

查看完整版本: 使用JMX和OpenView收集WebLogic应用程序性能测量数据

窝窝爱蛋 2008-5-12 22:41

使用JMX和OpenView收集WebLogic应用程序性能测量数据

  Java管理扩展(Java Management Extension,JMX)技术易于使用、统一并且经济有效。它允许访问有关应用程序健康状况的详细说明,可以配置或操纵可管理的资源,并允许将定制的应用程序管理工具应用于更具综合性的管理应用程序(如HP OpenView)。在这篇适时的文章中,Anand Ganesan和Rajal Shah将概括介绍这一业务关键型JMX技术。
  Internet和内部网的引入带来了一种新型的应用程序,使用户可以通过Web接口访问后端的传统系统。这些新型应用程序是业务关键型的,而且在迅速演变,它们必须不断提高用户的满意度,并增加用户的收益。这些企业系统由具有不同架构的各种应用程序组成,其功能也变得更复杂、更分散并且对业务而言更关键。但是随着应用程序复杂性的增加,其可管理性也会相应地提高。可管理性因素包括应用程序的控制和监控能力,此能力允许IT操作人员监控应用程序的健康状况和性能、预测和减少故障、帮助分析故障,以及排除和报告故障。
  JMX是一种易于使用、统一和经济有效的技术。它允许访问应用程序运行状况的细节,可以配置和操纵可管理的资源,并且允许将定制的应用程序管理工具应用于更具综合性的管理应用程序(如HP OpenView)。
  本系列包括两篇文章:本文概括介绍JMX技术;下一篇文章将介绍一种使用HP OVPI/OVPM建立可管理性,从而将性能测量数据收集到WebLogic应用程序中的方法。
[b]应用程序管理[/b]
  应用程序管理包括各种能力:定期公开监控应用程序的管理信息以确保应用程序正常运行,搜集性能统计信息以备分析,以及从操作人员的角度调整管理任务(如:启动或停止应用程序,或更改配置元素)。实际上,可管理性可帮助操作人员监控系统的健康状况和性能,预测何时可能出现问题,有效地处理和解决任何问题,并可以在不重启的情况下更改软件组件的状态。
  应用程序管理的好处如下:
[list][*]减少应用程序停机时间:当应用程序停机时,访问有关导致此问题的根本原因的高质量信息将有助于更快地还原应用程序,从而减少停机时间。[*]调优以获得最佳性能:通过评估表示应用程序当前状态的性能数据,可以确定何时应用程序没有在既定的阈值内执行。基于一定的周期搜集这些数据将有助于调优应用程序,从而获得最佳性能。[*]使IT操作更高效:通过将可管理性内置于应用程序中,IT人员可以快速地识别并解决问题。[/list]  可以使用JMX构建应用程序可管理性,它提供了一个监控和操作应用程序的基础架构。
  JMX已经成为管理Java资源的标准。它将应用程序的管理信息公开,管理系统可以基于此信息使用JMX API生成分析报告。JMX使应用程序能够被监控和控制,而同时又对它屏蔽了管理协议。
  JMX所采用的架构是Manager-Agent(管理者-代理)架构模式的变体。该架构模式的基本组件是托管资源、代理和管理系统。托管资源是需要通过公开适当的数据(供管理系统使用)进行管理的应用程序。例如,如果执行一个远程调用花费的时间超过了五秒钟(超出了性能的可接受限度),托管应用程序就可以使用JMX触发一个通知。然后,管理系统将对此进行解释,并就此事件向相应方发送寻呼消息。管理代理可以与管理系统和应用程序二者通信。代理负责将事件发送到管理系统,并在应用程序上执行来自管理系统的命令。管理系统负责提供管理应用程序的基础架构。HP OpenView就是一个管理系统的例子。
  图1显示了Sun Microsystems的JMX 1.2规范中的JMX Architecture各组件之间的关系。
[img=322,219]http://dev2dev.bea.com.cn/images/051018/0510180301.jpg[/img]
图1 Sun Microsystems的JMX 1.2规范中的JMX组件之间的关系
  JMX架构的三个主要层(将在以下几节中描述)如下所示:
[list][*]工具层 (Instrumentation Level)[*]代理层(Agent Level)[*]分布式服务层(Distributed Services Level)[/list][b]工具层[/b]
  工具层提供任意管理系统实现可管理资源的规范。符合这一层的资源称为可管理资源。JMX托管资源由Managed Bean(托管bean,Mbean)提供。工具层组件如图2所示。
[img=340,193]http://dev2dev.bea.com.cn/images/051018/0510180302.jpg[/img]
图2 工具层组件
  工具层组件包括
[list][*]Managed Bean[*]Notification Model(通知模型)[*]MBean Metadata Classe(Mbean元数据类)[/list]  下面是对这些组件的简介。
[b]Managed Bean(Mbean)[/b]
  支持JMX的托管资源由Mbean提供。Mbean有四种类型:标准Mbean、动态Mbean、开放Mbean和模型Mbean。
[b]标准MBean[/b]
  标准Mbean遵照词法设计模式(也称为命名约定)显式定义其管理接口。词法设计模式用于区分Mbean属性和Mbean操作。例如,属性由以下模式确定: //Attribute Getter public AttributeType getAttributeName() {...}//Attribute Setterpublic void setAttributeName(AttributeType someValue){...}  属性类型可以是任何Java类型,而且属性名称是区分大小写的。如果只存在属性的getter方法,则表示该属性是只读的;如果只存在setter方法,则表示该属性是只写的。如果属性的getter和setter都存在,则表示该属性可读写。如果属性类型是布尔型,则只读形式(即getter)可定义如下:
public boolean isAttributeName(){..}或
public boolean getAttributeName() {..}  注意,布尔型属性只允许其中一种只读形式,而不是两种。
  管理接口包含通过getter和setter公开的属性、构造函数(只包括公共的)、操作和Mbean广播的通知对象。这里的操作指的是在Mbean接口中定义的那些与任何属性设计模式都不匹配的方法。使用标准Mbean是构建可管理资源实现的最快和最轻松的方式,最适用于要公开的管理信息定义良好且不大可能随时间改变的情况。
  本系列将介绍一个使用标准Mbean实时收集应用程序测量数据,从而公开管理信息的示例场景。用例如下:管理系统记录应用程序性能测量数据,即驻留应用程序的服务器主机名和应用程序中方法的响应时间。此数据将在OpenView Performance Manager/OpenView Performance Insight (OVPM/OVPI)中显示。开发人员需要开发管理接口,并编写用户定义的度量标准(User-Defined Metrics,UDM)。UDM是XML配置文件,用于定义将由OVPM收集的JMX Mbean。下一篇文章将讨论如何将WebLogic Application Server与Hp OVPM集成。同样的步骤也适用于与OVPI进行集成的情况。下面是将在WebLogic Application Server上部署的Mbean接口和标准Mbean的代码。
//The management interface public interface PerformanceMetricsMBean {  /**   * Return the name of the server hosting the JVM that this MBean is deployed in.   * @return the local host name   */   public String getHostName();  /**   * Return the measured response time    * @return the measured response time    */   public String getResponseTime();}          //The MBean Classpublic class PerformanceMetrics implements PerformanceMetricsMBean {      private String hostName;   private String responseTime;     public String getHostName() {      return hostName;   }     public String getResponseTime() {      return responseTime;   }      public void setHostName(String value){      hostName = value;   }      public void setResponseTime(String value){      responseTime = value;   }      }  上面的Mbean通过一个启动servlet在MBean服务器中注册。
  以下几节简单介绍其他几种类型的Mbean,但是不像介绍标准Mbean这么详细。请参阅本文末尾的“参考资料”一节,了解有关的更多信息。
[b]动态MBean[/b]
  当资源可能随时间改变时,建议使用动态Mbean而不使用标准Mbean,因为前者具有灵活性(比如可以在运行时动态确定)。
  动态Mbean是通过一个预定义的接口实现的资源,该接口仅在运行时公开属性和操作。
  根据JMX 1.2规范,动态MBean应该实现javax.management.DynamicMBean接口。DynamicMBean接口通过使用javax.managemen.MbeanInfo类公开资源的管理信息。MbeanInfo类描述了公开的属性和可以在托管资源上执行的操作的集合。
[b]开放MBean[/b]
  开放Mbean是特殊的动态Mbean,其属性、构造函数和针对Java基本类型的操作都具有限定的数据类型。使用这些限定的基本类型可以启用串行化,并且不再需要类加载以及Mbean服务器和Mbean用户之间的代理协调。
[b]模型MBean[/b]
  模型Mbean是一种完全可定制的动态Mbean。模型Mbean是由javax.management.modelmbean.RequiredModelMBean类定义的。RequiredModelMBean类实现ModelMBean接口,并且存在于每个JMX代理上。模型Mbean实现可以扩展其他接口(包括DynamicMBean、PersistentMBean和ModelMBeanNotificationBroadcaster)的ModelMBean接口。
[b]通知模型[/b]
  JMX通知模型基于Java事件模型,它允许用户的Mbean与其他对象、应用程序或其他Mbean实例进行通信。Mbean可以通过实现JMX NotificationBroadcaster接口发送通知,而通过实现JMX NotificationListener接口接收通知(必须为通知注册)。当前版本的JMX规范并未规定如何完成通知模型的分发,这一问题将留待未来版本的JMX规范来解决。
[b]Mbean元数据类[/b]
  Mbean元数据类用于描述Mbean的管理接口。元数据类包含托管资源的属性、操作、通知和构造函数的结构。对于上面每一项,元数据都包括一个名称、一个描述和一些特定的特征。各种类型的Mbean扩展了元数据类,以提供附加信息。这些类用于标准Mbean的内省以及所有动态Mbean的自我描述。
[b]代理层[/b]
  代理级别提供管理代理来控制由应用程序公开的托管资源。代理可以在驻留应用程序的服务器或远程服务器上运行。JMX代理由一个Mbean服务器、一组表示托管资源的Mbean、一组作为Mbean实现的代理服务以及至少一个的协议适配器或连接器组成。
  Mbean服务器是代理层的核心组件,它允许注册和操纵Mbean。代理服务是允许通过Mbean服务器对其进行控制的对象(通常为Mbean)。代理服务Mbean可以提供以下服务:
[list][*]动态类加载,它允许从网络中的任意位置检索和安装新类(称为m-let服务)。m-let服务通过加载(指定关于所需的Mbean的信息的)m-let文本文件完成此操作。有关每个Mbean的信息都是通过MLET标签指定的。m-let文本文件的位置由URL指定;加载时,将下载MLET标签中指定的所有类,同时将为每个Mbean创建和注册一个实例。[*]监视服务,监视器可以监视目标属性的变更,并且可以通知其他感兴趣的对象。[*]计时器服务,提供一种在特定时间发出用户定义的通知的机制。[*]关系服务,基于预定义的关系类型定义Mbean之间的多元关联。[/list]  连接器和协议适配器使远程管理系统可访问代理。连接器用于将代理连接到支持JMX的管理应用程序。协议适配器则通过给定的协议提供了一个JMX代理的管理视图。JMX引用通过HTTP适配器得以实现。
图3是HTML适配器视图,显示了为本文开发的PerfomanceMetrics Mbean的注册。
[img=329,246]http://dev2dev.bea.com.cn/images/051018/0510180303.jpg[/img]
图3 HTML适配器视图。
[b]分布式服务层[/b]
  分布式服务层提供实现JMX管理器的接口。(JMX 1.2规范将分布式服务层的详细定义留待未来版本的JMX规范解决。)该层定义可影响代理或代理的层次结构的管理接口和组件。这些组件可以:
[list][*]提供安全性。[*]通过连接器提供代理和可管理资源之间的透明交互。[*]提供从管理平台到JMX代理的管理信息的分发。[*]提供使用超文本标记语言(HTML)和简单网络管理协议(SNMP)在MBean服务器中注册的JMX代理和Mbean的管理视图。[*]通过从JMX代理搜集管理信息提供逻辑视图。[/list]  管理组件可以跨网络互相交互,提供分布式、可缩放的管理能力。这些组件可用于部署具有定制的基于Java的管理功能的管理应用程序。
[b]结束语[/b]
  应用程序管理对于当今的企业关系重大。本文只是JMX技术的概括介绍。在下一篇文章中,我们将继续讨论JMX的正确用法,以及如何将WebLogic与惠普的OpenView Performance Manager/Performance Insight相集成,以便实时地收集性能测量数据。
页: [1]
查看完整版本: 使用JMX和OpenView收集WebLogic应用程序性能测量数据