了解应用程序的价值

工程 | charris | 2009年11月16日 | ...

我们都喜欢使用最新最好的技术构建应用程序,但是归根结底,我们领取薪水是为了交付实现业务目标的应用程序。我们在每次开发迭代中都专注于如何最好地实现这些目标,但我们如何知道最新迭代是否实现了其目标?最新的版本是否影响了应用程序交付的现有业务目标?

SpringSource 通过 Spring 检测、显示趋势的监控工具以及允许您将这些数据导出到管理团队的报表工具,为您提供应用程序的可视性,从而实现此功能。

已检测的 Spring Framework

已检测的 Spring Framework 是 商业版本Spring Framework,已针对管理和监控进行检测。只需使用已检测的 jar 文件替换 Spring Framework jar 文件,应用程序中的许多 Spring Bean 就会自动导出到 JMX 以进行管理,并使用 AOP 自动监控其性能。

此产品分发的所有 org.springframework.<module>.instrumented jar 文件只是其在开源 Spring Framework 中对应项的编译时编织版本。例如,org.springframework.beans.instrumented jar 文件是可以替换开源 Spring Framework 分发的 org.springframework.beans jar 文件的直接替代品。

已检测的 Spring Framework 通过建议 AbstractApplicationContext 的 refresh 方法自动发现应用程序。如果已检测的组件知道如何管理和监控它,则通过 AbstractApplicationContext 创建的任何 bean 都将被发现为托管资源。还有一些在 ApplicationContext 之外创建的组件也会自动发现。当 AbstractApplicationContext 关闭时,其关联的托管资源将被卸载。

一旦自动发现托管资源,Spring Framework 检测就会自动创建表示其发现的每个应用程序资源的 JMX ModelMBean,并在自动检测的 MBeanServer 中注册这些 ModelMBean。这些 MBean 包含预先确定的属性,这些属性表示被管理资源的指标或属性以及提供被管理资源运行时控制的操作。

已检测的 Spring Framework 使用编译时编织方面和现有 Spring Framework 代码中的挂钩相结合来监控其大部分托管资源。已检测的 Spring Framework 还使用 Spring AOP 代理来监控应用程序中刻板组件的方法执行(用 @Controller@Transactional@Service@Repository@Component 标记)。

我们不将已检测的 Spring Framework 限制在 Spring Framework 核心,还在 Spring Web FlowSpring SecuritySpring Web Services 上提供此功能。Spring 3.0 还引入了其他注释以允许高级指标捕获。我们希望在以后的博客中更详细地介绍这一点。

使用 Hyperic HQ 进行监控

Hyperic HQ 管理、监控和控制大型 IT 环境,范围从数百到数千台机器。这意味着数万个托管资源,从单个应用程序、应用程序服务器、操作系统、数据库到网络接口。

HQ 自动发现由 Hyperic 的系统信息收集器(SIGAR)提供支持,SIGAR 是一个用于收集软件清单数据的跨平台 API。HQ 代理使用 SIGAR 发现大量系统信息,包括 CPU 速度、RAM 大小、操作系统版本、主机名和 IP 地址。自动发现适用于所有主要平台——Unix、Linux、Windows、Mac OSX、Solaris、HP-UX 和 AIX。

与所有 SpringSource 产品一样,Hyperic HQ 基于开源构建。由于此博客侧重于高级报表,最终将生成经理可以理解的漂亮报表,因此我将使用 Hyperic 企业版。您可以在 Hyperic 企业版Hyperic HQ 开源版 之间的区别方面获得完整详细信息,网址为 http://www.hyperic.com

如果您使用的是已检测的 Spring Framework,它将自动发现应用程序的内部指标。这包括关于 Spring Core、Spring DAO、Spring ORM、Spring JEE 集成、Spring MVC 和您使用已检测的 Spring Framework 注释的应用程序指标的内部指标。

例如,我将已检测的 Spring Framework 添加到 Spring Travel 演示应用程序中,并将其部署在 Tomcat 中,并使用 Apache jMeter 向系统施加一些负载。以下是 HQ 自动检测到的 Spring ORM 的 Hibernate 指标的屏幕截图。

ChrisHarrisBlog_Screenshot01

但是,博客的重点是获得业务指标。已检测的 Spring Framework 自动公开用 @Service 注释的任何内容的所有公共方法。这意味着我的服务中的 "saveBooking" 方法会自动公开。

ChrisHarrisBlog_Screenshot02

哇,我现在能够衡量最新开发迭代对业务的影响。此外,从运营的角度来看,我现在可以衡量与环境中每台机器相关的业务价值。请记住,我所做的只是引入已检测的 Spring Framework,Hyperic HQ 完成了其余的工作。

正如我们所看到的,我们从环境中获得了大量有价值的数据。我该如何向我的经理展示这些数据?

公开经理视图

Hyperic IQ 是报表和智能平台,它将 Hyperic HQ 收集的数据转换为业务用户可以用来分析、评估、规划和制定战略决策的系统智能。这可以应用于任何数据中心的任何资源的任何指标,只需在 Hyperic IQ 中点击几下,我就可以……

ChrisHarrisBlog_Screenshot03

也许作为折线图效果更好(您觉得呢?)

ChrisHarrisBlog_Screenshot04

正如您所看到的,预订数量开始下降。这可能是由于这段时间用户自然减少造成的,但是,由于 Hyperic HQ 正在监控整个环境,因此我们可以很容易地检查这种下降是否是由于应用程序或基础设施本身的问题造成的。

我现在可以让 IQ 每周向我的管理团队发送一份此报告的 PDF,每个人都完全了解应用程序交付的实际业务价值。

如果您有兴趣了解更多信息,请随时加入我们的 免费每周星期四现场 HQ 演示(太平洋时间上午 11 点/东部时间下午 2 点)。您还可以通过 下载试用版 在您自己的环境中试用 Hyperic HQ 企业版。

与获取应用程序中的这些数据所需的时间相比,我写这篇博客花了更长时间。我引入了已检测的 Spring Framework,Hyperic 完成了其余的工作。哇!

获取 Spring 新闻通讯

通过 Spring 新闻通讯保持联系

订阅

领先一步

VMware 提供培训和认证,以加速您的进步。

了解更多

获取支持

Tanzu Spring在一个简单的订阅中提供对OpenJDK™、Spring和Apache Tomcat®的支持和二进制文件。

了解更多

即将举行的活动

查看 Spring 社区中所有即将举行的活动。

查看全部