技术开发 频道

使用JMX 接口来编写PMI 应用程序

PMI、J2EE性能数据框架和 JMX MBeans

  在 WebSphere Application Server V5 中,PMI 不仅为应用服务器中的各种组件提供性能数据,同时也实现了由 J2EE管理规范中的性能数据框架定义的统计接口。这些统计接口包括以下的数据类型:

  CountStatistic

  TimeStatistic

  RangeStatistic

  BoundedRangeStatistic.

  系统还定义了 Stats 接口来包含统计数据列表。

  PMI 实现了这些统计接口,更新各种统计数据并通过不同的接口公开这些数据。在 WebSphereApplication Server V4 中,PMI 提供了定义 CpdLong、CpdStat 和 CpdLoad 数据类型的 PMI客户机接口。(这些接口仍然支持向后兼容。)表 1 逐条描述了用于版本 5 中的数据类型的 API。请注意,PMI 数据中的 API 扩展了 J2EE性能数据框架里的定义,用 * 来标志这些由 PMI 扩展的 API。

  表 1. 不同的 PMI 数据类型和 API

  

5.0 类型对应 4.0 的类型描述API
CountStatisticCpdLong保持单一的当前值getCount()
TimeStatisticCpdStat保持总数、个数、最小值和最大值。均值可由总数与个数相除得到。getTotalTime()
getCount()
getMean()
getMinTime()
getMaxTime()
getTimeOfSquares()*
 
RangeStatisticCpdLoad保持当前值、最小值、最大值和以时间衡量的总数,由它可以得到平均值。getCurrent()
getLowWaterMark()
getHighWaterMark()
getIntegral()*
getMean()*
 
BoundedRangeStatisticCpdLoad保持当前值、最小值、最大值、下限、上限和以时间衡量的总数,由它可以得到平均值。getCurrent()
getLowWaterMark()
getHighWaterMark()
getIntegral()*
getMean()*
getLowerBound()
getUpperBound()
 
StatsCpdCollection保持统计数据列表,也可选择性保持来自其子模块的 Stats 对象列表。getStatistic(int dataId)*
getStatistic(String name)
getStatistics()
getStatisticNames()
getSubStats()*
 
  每个 PMI 数据类型都有随时间刷新的动态值和不变的静态配置信息。动态值包含当前值、最小值、最大值、总数等等。静态信息包括名称、单元和数据描述。表1 示出了返回动态值给不同类型的数据的 API。每个数据类型也都有返回静态信息给每个数据的公共 API。这些 API 包括:

  getName: 返回数据名称

  getUnit:返回数据单元

  getDescription:返回数据描述

  PMI 数据可以通过不同的接口进行访问,包括 JMX 接口。JMX 体系结构是一个标准的管理模块,受管 Bean(Managed Bean,MBean)就是在该模块中管理业务应用程序和资源的。MBean可以是一个统计提供者,它为受管理的应用程序和资源提供各种统计数据。PMI 为作为统计提供者的 MBean 实现和刷新统计数据(也就是 PMI数据)。这些 PMI 数据可以在客户端通过 JMX 接口进行检索。

  如果某一 MBean 是一个统计提供者,那么它的 PMI统计数据可以使用 Stats 属性从 MBean 进行检索。在 WebSphere Application Server V5 中有几个 MBean提供了 Stats 属性。请查看 WebSphere Application Server Information Center(在Performance => Monitoring Performance => Performance data organization中),其中有这种 MBean 类型的列表。

  PMI 服务和 PerfMBean体系结构

  在 WebSphere Application Server V5 中,PMI服务在每个应用服务器和节点代理进程中都可用。在获取 PMI 数据之前首先应该启用 PMI 服务,您可以通过管理控制台或用管理脚本来启用 PMI服务。在这两种情况下,应用服务器都必须重启。在 Network Deployment 环境中,PMI 服务可以在应用服务器或 NodeAgent 中启用。

  系统实现了一个名为“PerfMBean”的 MBean 来配置 PMI 服务(也就是设置装备级别),并且提供 API 来通过一次 JMX 调用从多个MBean收集 PMI 数据,而不是使用各种 MBean 的。图 2 是 PMI 体系结构的一个简化的视图。PerfMBean API 或各种 MBeanAPI 都提供 PMI 统计数据,但只有 PerfMBean 这个 MBean 能够设置装备级别。PerfMBean 还可以通过一次 JMX调用处理多个 MBean 来减少远程 JMX 调用的次数。

  图 2. PMI数据访问的高级视图

  表 2 归纳了如何使用 PerfMBean 和各种 MBean 来配置和访问 PMI 数据。由于 PerfMBean 提供了比 MBean更广泛和更有效的功能,所以通常用它来开发监控工具。

  表 2. 不同的 PMI 数据类型和 API

MBean设置 装备级别从单个 MBean 中获取 PMI 数据从多个 MBean 中获取 PMI 数据从没有 MBean 的 PMI 模块和子模块获取 PMI 数据获取静态配置信息
PerfMBeanYesYesYesYesYes
IndividualMBeansNoYesNoNo
  

      既然我们已经讨论了 PMI 数据、JMX、PerfMBean 和各种 MBean 之间的关系,现在我们就来看看如何使用 JMX 接口来获取 PMI数据。

 

0
相关文章